User Tools

Site Tools


oclug-live-distro

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
oclug-live-distro [2017/04/04 17:47]
jcnash [EFI Booting]
oclug-live-distro [2017/04/04 17:47] (current)
jcnash
Line 15: Line 15:
  
   * [[livedistro:​SMurphy170321|livedistro:​SMurphy170321]]   * [[livedistro:​SMurphy170321|livedistro:​SMurphy170321]]
- 
-===== Investigation of EFI boot (S Murphy) ===== 
- 
-==== Arch Installation Notes ==== 
- 
-Scott Murphy <​scott.murphy@arrow-eye.com>​ 
-  * version: 1.0 
-  * keywords: VMWare, Arch Linux, macOS, UEFI 
-  * 2017-03-21 
- 
-==== Getting started ==== 
- 
-First, the Arch documentation is very good. You can get all of this directly 
-from it, however it makes a few assumptions that might trip you up if you are 
-new to arch, UEFI and running under VMWare. 
- 
-I'm using VMWare for my Arch install, so this is specific to installing under 
-VMWare Fusion 8 on macOS. This probably translates pretty much directly to other 
-installs if you leave out the VMWare items. The other thing is that my install 
-is the 64-bit install. I don't have a 32-bit system and was not interested in 
-trying it out in VMWare at this time. Maybe in a update. 
- 
-==== Get a copy of Arch ==== 
- 
-You can find the Arch distro links on the [https://​www.archlinux.org|Arch Linux 
-website], in the https://​www.archlinux.org/​download/​[Download] section. Select a 
-mirror or bittorrent link and get started. I selected the 
-https://​mirror.csclub.uwaterloo.ca/​archlinux/​iso/​2017.03.01/​[CS Club mirror] at 
-the university of Waterloo. I picked the 
-https://​mirror.csclub.uwaterloo.ca/​archlinux/​iso/​2017.03.01/​archlinux-2017.03.01-dual.iso[2017-03-01] 
-image. Once it is downloaded, You can use the iso in whatever way you want. I'm 
-using it as is, in a virtual DVD drive. 
- 
-You can burn it to a DVD if you have something sufficiently old, however if your 
-device supports booting for USB, I'd go that route. 
- 
-NOTE: Add a link to the create a USB version instructions 
- 
-==== Create your VMWare VMX file ==== 
- 
-Create a new VMWare machine by selecting `New -> Create a custom virtual 
-machine` in the VMWare Library. Go through the full creation up to the point 
-where you start the VM to get the install going. My VM has  
- 
-   * A 20GB disk 
-   * 1024MB RAM 
-   * A single processor 
- 
-==== Forcing UEFI Boot ==== 
- 
-In order to use UEFI, you need to edit the VMX file. Assuming you called the 
-machine `New Arch VM`, you would find the vmx file in the `~/​Documents/​Virtual 
-Machines.localized/​New Arch WM.vmwarevm` directory. In this case, the file will 
-be called `New Arch VM.vmx`. ​ If there is an additional file with the same name 
-and a .lck extansion, the library has the file open. Make sure you have the 
-startup window closed. If there is no `.lck` file, then all you need to do is 
-edit the file and add the following line to it. 
- 
-<​code>​ 
-// Interesting,​ when I reformat a long line to 80 columns, vi crashes on my mac 
-// I've noticed it before, but it seems to be an issue with lines that wrap 
-// longer than four lines. 
-</​code>​ 
- 
-    firmware = "​efi"​ 
- 
- 
-That was pretty straightforward. This will tell VMWare to use UEFI as the boot 
-method instead of legacy BIOS. 
- 
-==== The actual installation ==== 
- 
-This will go more like a series of steps. There will only be extra info where it 
-gets somewhat odd. 
- 
-Now that you have the blank VM created and the VMX file modified, it is time to 
-get started. 
- 
-   * Mount the DVD image and connect it to the VM 
-   * Power on the VM. It should autoboot into a root shell 
-   * Verify that you are in UEFI mode 
- 
-    ls /​sys/​firmware/​efi/​efivars 
- 
-   * Make sure you can see the internet (The system should have dhcp'd an address) 
- 
-   ping archlinux.org 
- 
- 
-   * Enable network time protocol 
- 
-   ​timedatectl set-ntp true 
-   ​timedatectl status 
- 
- 
-   * Partition your disk. In this instance, you need to create at least three partitions: 
-       * Boot (512M, fat32) 
-       * Swap (I usually use 256M and hope I never start swapping) 
-      * / (The bulk of the disk) 
- 
-   * you can use `sgdisk` to create your partitions with the following commands, assuming your disk is /dev/sda: 
- 
-   ​sgdisk -p /dev/sda 
-   ​sgdisk --new=0:​0:​+512M /dev/sda 
-   ​sgdisk --new=0:​0:​+256M /dev/sda 
-   ​sgdisk --new=0:0:0 /dev/sda 
-   ​sgdisk --typecode=1:​EF00 /dev/sda 
-   ​sgdisk --typecode=2:​8200 /dev/sda 
-   ​sgdisk --change-name=1:"​EFI System"​ /dev/sda 
-   ​sgdisk --change-name=2:"​Linux swap" /dev/sda 
-   ​sgdisk --change-name=3:"​Linux filesystem"​ /dev/sda 
-   ​sgdisk -p /dev/sda 
- 
- 
-That should first show you a disk with no partition table, and then the disk with all 
-three partitions, something like this: 
- 
-   Disk /dev/sda: 41943040 sectors, 20.0 GiB 
-   ​Logical sector size: 512 bytes 
-   Disk identifier (GUID): 9E17A0DA-9DED-4E62-BAE7-076E1522C21B 
-   ​Partition table holds up to 128 entries 
-   First usable sector is 34, last usable sector is 41943006 
-   ​Partitions will be aligned on 2048-sector boundaries 
-   Total free space is 4061 sectors (2.0 MiB) 
- 
-   ​Number ​ Start (sector) ​   End (sector) ​ Size       ​Code ​ Name 
-      1            2048         ​1048576 ​  511.0 MiB   ​EF00 ​ EFI System 
-      2         ​1050624 ​        ​1574911 ​  256.0 MiB   ​8200 ​ Linux swap 
-      3         ​1574912 ​       41943006 ​  19.2 GiB    8300  Linux filesystem 
- 
- 
-Now that the disk is properly partitioned,​ you will format the partitions: 
- 
-   ​mkfs.fat -F32 /dev/sda1 
-   ​mkswap -L swap /dev/sda2 
-   ​mkfs.ext4 /dev/sda3 
- 
- 
-NOTE: UEFI partitions are FAT32 formatted and the UEFI BIOS can read FAT32 partitions to locate 
-the correct `.efi` file to boot. This also makes it easy to mount that partition 
-to make fixes. 
- 
-What are we going todo? 
- 
-   . Mount the root partition on /mnt 
-   . Create a new directory to mount the boot partition on and mount it there 
-   . Use the pacstrap program to install the base operating system 
-   . Create a new fstab that reflects the mounted disks 
-   . Chroot to the newly installed OS so initial changes could be made  
-   . Set the timezone 
-   . Set the hardware clock to the running OS 
-   . Enable the en_US locakle and set the system language to en_US UTF8 
-   . Give the system a hostname 
-   . Let the system refer to itself in a zeroconf (bonjour) way 
- 
-In order to acomplish this, enter the following commands: 
- 
-   mount /dev/sda3 /mnt 
-   mkdir /mnt/boot 
-   mount /dev/sda1 /mnt/boot 
-   ​pacstrap /mnt/base 
-   ​genfstab -U /mnt >> /​mnt/​etc/​fstab 
-   ​arch-chroot /mnt 
-   ln -sf /​usr/​share/​zoneinfo/​America/​Toronto /​etc/​localtime 
-   ​hwclock --systohc 
-   sed -i '​s/#​en_US/​en_US/'​ /​etc/​locale.gen 
-   ​locale-gen 
-   echo "​LANG=en_US.UTF-8"​ > /​etc/​locale.conf 
-   echo "​myhostname"​ > /​etc/​hostname 
-   echo "​127.0.0.1 ​    ​myhostname.localdomain myhostname"​ >> /etc/hosts 
- 
- 
-==== Intel based System==== 
- 
-If this is an Intel based system, you will need to add the ability to perform 
-cpu microcode updates. I don't know if this even works under VMWare, but if I 
-have to install on a physical system, then I want to remember this part. 
- 
-You enable the updates that by adding the intel microcode package: 
- 
-   ​pacman -S intel-ucode 
- 
- 
-NOTE: Need to check this out on a test system. I'm not sure you need to perform 
-this step if you are not using grub. I'm not, so this might be useless. I 
-happen to like having grub in place, so this is not wasted documentation,​ just 
-potentially unused. 
- 
-In order to fix the bootloader to use the intel microcode upadtes, we need to 
-install the grub utilities and update the configuration:​ 
- 
-   ​pacman -S grub 
-   ​grub-mkconfig -o /​boot/​grub/​grub.cfg 
- 
- 
-or you might need to do it inside the EFI setup. That will ne noted in the /boot 
-secting below. 
- 
-Now you should set the root password: ​ 
- 
-   ​passwd 
- 
- 
-Congratulations,​ the system has been installed. Unfortunately,​ it will not boot 
-just yet. 
- 
-==== The /boot Partition ==== 
- 
-This is where it tends to get a little harder to follow. At this point, you can 
-unmount the disks and reboot - you will not have a bootable system, but you will 
-have a fully functional system if it could only boot. If you mess 
-around enough, it will boot, but you may not know what you did or why it works. 
-I like to compare this to the first time you use grub or PXE boot a system. You 
-are not sure what is happening under the hood, even though you edited those 
-files. 
- 
-If you rebooted, you will need to boot from your install media again. Don't 
-bother with the selection 'Boot from Installed System'​ or whatever version it 
-offers, it will not boot. 
- 
-If you reboot, you need to mount the disks again and chroot again. Once that has 
-happened, you can continue on and make a bootable system. 
- 
-You are going to need some more tools installed, so fire up `pacman` 
- 
-   ​pacman -S efibootmgr efitools 
- 
-You can check to see if the system is effectively ready for this by running the 
-`efivar` command and seeing the output 
- 
-   ​efivar -l 
- 
-This should give you a list of "​things"​ that look like a bunch of GUIDs followed 
-by a readable word. If so, everything you need is in place. 
- 
-This is the secret sauce for making the system bootable: 
- 
-   ​efibootmgr -d /dev/sda -p 1 -c -L "Arch Linux" -l '​\vmlinuz-linux'​ -u "​root=/​dev/​sda3 rw initrd=/​initramfs-linux.img"​ 
- 
- 
-NOTE: Intel microcode updates may require the previous line to include two 
-`initrd=` sections, so the previous line would have `-u "​root=/​dev/​sda3 rw initrd=/​intel-ucode.img initrd=/​initramfs-linux.img"​` 
- 
-==== Enabling the network ==== 
- 
-This is for a wired connection, however the procedure is similar for wireless. 
-Look at this first and then check out the wireless section of the networking 
-reference below. 
- 
-The legacy `net-utils` have been fully deprecated in the current version of Arch, 
-so you will be using the `ip` command 
- 
-Get the name of the wired interface. It will not be eth0. 
- 
-   ip link 
- 
- 
-The output will be like: 
- 
-   1: lo: <​LOOPBACK,​UP,​LOWER_UP>​ mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 
-    link/​loopback 00:​00:​00:​00:​00:​00 brd 00:​00:​00:​00:​00:​00 
-   2: ens33: <​BROADCAST,​MULTICAST,​UP,​LOWER_UP>​ mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 
-    link/ether 00:​0c:​29:​dc:​56:​64 brd ff:​ff:​ff:​ff:​ff:​ff 
- 
-The wired interface is **ens33**. 
- 
-Assuming you will be using dhcp for your networking, this is how you get it 
-working. Enter the following commands: 
- 
-<​code>​ 
-cd /​etc/​systemd/​network 
-echo > local.network<<​EOF 
-[Match] 
-Name=ens33 
- 
-[Network] 
-DHCP=ipv4 
-EOF 
-systemctl enable systemd-networkd.service 
-ip a 
-</​code>​ 
- 
-If this is a system you rebooted before you configured the network, you can 
-enable the networking using the command: 
- 
-    systemctl start systemd-networkd.service 
- 
- 
-The final command, `ip a`, should show that you now have an address on your 
-local network. This should come up after a reboot. 
- 
-==== Final Steps ==== 
- 
-At this point, you should be golden. exit from the chrooted system by typing 
-`exit` and then unmount the disk partitions using the command `umount -R /mnt` 
-and then enter `reboot` 
- 
-==== TODO ==== 
- 
-  * X11 Setup 
-  * Window Manager installation 
-  * TBD 
- 
-==== References ==== 
- 
-The following pages (mostly from the Arch Wiki) were used to make these notes. 
- 
-  * [[https://​wiki.archlinux.org/​index.php/​Installation_guide|Installation guide - ArchWiki]] 
-  * [[https://​wiki.archlinux.org/​index.php/​Unified_Extensible_Firmware_Interface|Unified Extensible Firmware Interface - ArchWiki]] 
-  * [[https://​wiki.archlinux.org/​index.php/​EFI_System_Partition | EFI System Partition - ArchWiki]] 
-  * [[https://​wiki.archlinux.org/​index.php/​Talk:​EFISTUB#​ESP_mount_points | Talk:​EFISTUB - ArchWiki]] 
-  * [[https://​wiki.archlinux.org/​index.php/​EFISTUB | EFISTUB - ArchWiki]] 
-  * [[https://​wiki.archlinux.org/​index.php/​Network_configuration#​Check_the_connection | Network configuration - ArchWiki]] 
-  * [[https://​wiki.archlinux.org/​index.php/​Microcode#​Enabling_Intel_microcode_updates | Microcode - ArchWiki]] 
-  * [[https://​wiki.archlinux.org/​index.php/​Systemd-networkd#​Basic_DHCP_network | systemd-networkd - ArchWiki]] 
-  * [[https://​wiki.archlinux.org/​index.php/​VMware/​Installing_Arch_as_a_guest#​VMware_Tools_versus_Open-VM-Tools | VMware/​Installing Arch as a guest - ArchWiki]] 
-  * [[https://​wiki.archlinux.org/​index.php/​Arch_User_Repository | Arch User Repository - ArchWiki]] 
- 
-Also looked at: 
- 
-  * [[https://​blog.uncooperative.org/​blog/​2014/​02/​06/​the-efi-system-partition/​ | The EFI System Partition and the Default Boot Behavior - The Unco√∂perative Organization]] 
-  * [[https://​github.com/​rasa/​vmware-tools-patches | rasa/​vmware-tools-patches:​ Patch and build VMware tools automatically]] 
-  * [[http://​planetvm.net/​blog/?​p=2730 | Boot via EFI firmware - PlanetVM]] 
- 
-For creating that USB stick, you can use the traditional `dd` method or try out 
-[[https://​etcher.io/​ | Etcher]] if you are command line weary. 
- 
-==== Extra Information ==== 
- 
-Of course if you would prefer to do the install, including the GUI desktop and 
-software selection the easy way, there are two projects of note that can help you out. 
- 
-They are: 
- 
-  * [[https://​arch-anywhere.org | ArchAnywhere]] 
-  * [[https://​sourceforge.net/​projects/​revenge-installer | Revenge Installer]] 
- 
  
  
oclug-live-distro.txt · Last modified: 2017/04/04 17:47 by jcnash