149 lines
4.9 KiB
Markdown
149 lines
4.9 KiB
Markdown
Microsoft Surface Pro 3 with Arch Linux and i3
|
|
==============================================
|
|
**!!! documentation unfinished !!!**
|
|
|
|
(Dual) Booting Arch Linux (and Windows) with UEFI and Secure Boot
|
|
-----------------------------------------------------------------
|
|
|
|
- Save all your files, will will format the whole file system.
|
|
- Download Arch Linux ISO [archlinux-yyyy.mm.dd-dual.iso] [arch] via HTTP Direct
|
|
Downloads (choose a Mirror) or BitTorrent Download
|
|
[arch]: https://www.archlinux.org/download/ "Arch Linux Downloads"
|
|
|
|
- Create UEFI bootable USB device (with [Rufus] [rufus] and default settings)
|
|
[rufus]: https://rufus.akeo.ie/ "Rufus"
|
|
|
|
- Disable Secure Boot [\[Source: Windows\]] [win:sb]
|
|
1. Shut down your Surface.
|
|
2. Press and hold the volume-up button on your Surface and at the same time,
|
|
press and release the power button.
|
|
3. When you see the Surface logo, release the volume-up button.
|
|
The UEFI menu will display within a few seconds.
|
|
4. Disable *Secure Boot Control*
|
|
[win:sb]: https://www.microsoft.com/surface/en-us/support/warranty-service-and-recovery/how-to-use-the-bios-uefi?os=windows-10&=undefined "Windows"
|
|
|
|
- (Optionally: Disable Windows Fast Boot — to switch between operating
|
|
systems)
|
|
|
|
|
|
# Installing the Linux distro
|
|
Insert the live USB and boot by holding volume down, then the power button.
|
|
|
|
Optionally set the keyboard layout (default is US)
|
|
|
|
$ loadkeys de-latin1
|
|
|
|
Set or in this case increase the font size
|
|
|
|
$ setfont latarcyrheb-sun32
|
|
|
|
Connect to the Internet
|
|
|
|
$ iw dev # list wireless devices
|
|
$ iw dev wlp1s0 link # Print information about the current link
|
|
$ wifi-menu -o wlp1s0 # -o hides the password
|
|
|
|
Update the system clock
|
|
|
|
$ timedatectl set-ntp true
|
|
$ timedatectl status
|
|
$ timedatectl set-timezone Europe/Berlin
|
|
|
|
|
|
## Partitioning
|
|
Note: Using `parted` with `mkpart` defines partitions via a *from* and a *to*
|
|
argument.
|
|
|
|
$ lsblk # list devices /dev/sda?
|
|
$ parted /dev/sdx # could be /dev/sda
|
|
(parted) mklabel gpt # for UEFI
|
|
(parted) mkpart ESP fat32 1MiB 513MiB # EFI System Partition
|
|
(parted) set 1 boot on
|
|
(parted) mkpart primary linux-swap 513MiB 9GiB # for 8GB DRAM
|
|
(parted) mkpart primary ext4 9GiB 40% # Linux partition
|
|
(parted) mkpart primary ntfs 40% 60% # Shared partition
|
|
(parted) quit
|
|
|
|
That last entry is for a shared NTFS filesystem that both operating systems
|
|
(Linux and Windows) can use, e. g. for a cloud service like Dropbox, email,
|
|
downloads, etc. The Windows section is left unallocated, it will be formatted by
|
|
the windows installer.
|
|
|
|
|
|
## Formatting
|
|
|
|
$ mkfs.fat -F32 /dev/sdx1 # UEFI boot must be fat32
|
|
$ mkswap /dev/sdx2
|
|
$ swapon /dev/sdx2
|
|
$ mkfs.ext4 /dev/sdx3 # Linux root
|
|
$ mkfs.ntfs -f /dev/sdx4
|
|
|
|
|
|
## Mount
|
|
Mount the root partition on `/mnt` and for the boot partition first create
|
|
directory and then mount it also.
|
|
|
|
$ mount /dev/sdx3 /mnt
|
|
$ mkdir -p /mnt/boot
|
|
$ /dev/sbx1 /mnt/boot
|
|
|
|
|
|
## Install the base packages and configure the system
|
|
Edit `/etc/pacman.d/mirrorlist` and select a download mirror (uncommenting the
|
|
specific line). [\[see also Arch Linux Wiki: Mirrors\]] [arch:mirrors]
|
|
[arch:mirrors]: https://wiki.archlinux.org/index.php/Mirrors "Arch Linux Mirrors"
|
|
|
|
Install the base packages or more
|
|
|
|
$ pacstrap /mnt base
|
|
# or
|
|
$ pacstrap -i /mnt base base-devel btrfs-progs
|
|
|
|
Generate an `fstab` file, so the filesystem knows how to mount the disk
|
|
partitions. [\[see also Arch Linux Wiki: fstab\]] [arch:fstab]
|
|
[arch:fstab]: https://wiki.archlinux.org/index.php/Fstab "Arch Linux fstab"
|
|
|
|
$ genfstab -U /mnt >> /mnt/etc/fstab
|
|
|
|
Change root into the new system
|
|
|
|
$ arch-chroot /mnt /bin/bash # bash shell instead of the default sh
|
|
|
|
For localizations uncomment `en_US.UTF-8 UTF-8` and other needed localizations
|
|
in `/etc/locale.gen`, e. g. `de_DE.UTF-8 UTF-8`. Finally generate the locale
|
|
files:
|
|
|
|
$ locale-gen
|
|
|
|
Set the LANG variable in `/etc/locale.conf` accordingly
|
|
|
|
LANG=en_US.UTF-8
|
|
|
|
Optionally set the keyboard layout and set the font in `/etc/vconsole.conf`
|
|
|
|
KEYMAP=de-latin1
|
|
FONT=latarcyrheb-sun32
|
|
|
|
Set the time zone, e. g. for Germany as Europe/Berlin.
|
|
Three ways possible: [\[see also Arch Linux Wiki: Time zone\]] [arch:tz]
|
|
[arch:tz]: https://wiki.archlinux.org/index.php/Fstab "Arch Linux Time zone"
|
|
|
|
- interactively with `tzselect` (e. g. 7) Europe, 16) Germany, 2) Germany, 1) yes),
|
|
- via `timedatectl`
|
|
|
|
$ timedatectl # check the current zone
|
|
$ timedatectl list-timezones # list available zones
|
|
$ timedatectl set-timezone Europe/Berlin # change your time zone
|
|
|
|
- or create the symlink manually
|
|
|
|
$ ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
|
|
|
|
Set the Hardware Clock from the System Clock, and update the timestamps in
|
|
`/etc/adjtime` via:
|
|
|
|
hwclock --systohc --utc
|
|
|
|
|
|
...
|