A thank you to JmB11 and his SuuntoLinkWine instructions. This is the foundation of my version.
Needs to be done in a Windows system. Only needs to be done once.
- Create a Mi account on Xiaomi’s website. Beware that one account is only allowed to unlock one unique device every 30 days.
- Add a phone number to your Mi account.
- Insert a SIM into your phone.
- Enable developer options in Settings > About Phone by repeatedly tapping MIUI Version.
- Link the device to your Mi account in Settings > Additional settings > Developer options > Mi Unlock status.
gpt
format, withUEFI
boot system and encrypted root
- install arch linux as a single partition with lvm partition for boot, root, home, swap, and hibernation virtual partitions.
- encrypt the entire system
- unlock encryption with usb key
- setup a light weight i3 desktop environment
IMPORTANT use nvm to install everything or your permisions will be all sorts of messed up.
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
gpt
format, withUEFI
boot system and encrypted root
This will work for SD card instalaition as well as a standard install. To install on an SD card the boot and efi partitions must remain on the main hard drive. Replace
/dev/sdX
with/dev/mmcblk0
for the root partition using/dev/mmcblk0p1
in place of/dev/sdX3
.
I hereby claim:
- I am nickmcsweeney on github.
- I am shindler25 (https://keybase.io/shindler25) on keybase.
- I have a public key ASAMBnHwE4GMFMBDTUZqWkqml-Gz-ee4glr_uSZyx0CHkQo
To claim this, I am signing this object:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ | |
// shim for using process in browser | |
var process = module.exports = {}; | |
// cached from whatever global is present so that test runners that stub it | |
// don't break things. But we need to wrap it in a try catch in case it is | |
// wrapped in strict mode code which doesn't define any globals. It's inside a | |
// function because try/catches deoptimize in certain engines. | |
var cachedSetTimeout; |