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 revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
oclug-live-distro [2017/04/04 17:47] – [Live Distro Planning Document] jcnashoclug-live-distro [2017/04/04 17:47] jcnash
Line 14: Line 14:
 ==== EFI Booting ==== ==== EFI Booting ====
  
-  * [[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'+
-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: 2024/03/31 15:34 by scott5