livedistro:scottmurphy20170321
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revision | |||
| livedistro:scottmurphy20170321 [2024/03/31 19:34] – removed - external edit (Unknown date) 127.0.0.1 | livedistro:scottmurphy20170321 [2024/03/31 19:34] (current) – ↷ Page name changed from livedistro:smurphy170321 to livedistro:scottmurphy20170321 scott5 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ===== Investigation of EFI boot (Scott Murphy) ===== | ||
| + | |||
| + | ==== Arch Installation Notes ==== | ||
| + | |||
| + | Scott Murphy < | ||
| + | * 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:// | ||
| + | website], in the https:// | ||
| + | mirror or bittorrent link and get started. I selected the | ||
| + | https:// | ||
| + | the university of Waterloo. I picked the | ||
| + | https:// | ||
| + | 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 `~/ | ||
| + | Machines.localized/ | ||
| + | be called `New Arch VM.vmx`. | ||
| + | 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. | ||
| + | |||
| + | < | ||
| + | firmware = " | ||
| + | </ | ||
| + | |||
| + | 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 / | ||
| + | |||
| + | * Make sure you can see the internet (The system should have dhcp'd an address) | ||
| + | |||
| + | ping archlinux.org | ||
| + | |||
| + | |||
| + | * Enable network time protocol | ||
| + | |||
| + | | ||
| + | | ||
| + | |||
| + | |||
| + | * 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: | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | |||
| + | 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 | ||
| + | | ||
| + | Disk identifier (GUID): 9E17A0DA-9DED-4E62-BAE7-076E1522C21B | ||
| + | | ||
| + | First usable sector is 34, last usable sector is 41943006 | ||
| + | | ||
| + | Total free space is 4061 sectors (2.0 MiB) | ||
| + | |||
| + | | ||
| + | 1 2048 | ||
| + | 2 | ||
| + | 3 | ||
| + | |||
| + | |||
| + | Now that the disk is properly partitioned, | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | |||
| + | 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 | ||
| + | | ||
| + | | ||
| + | | ||
| + | ln -sf / | ||
| + | | ||
| + | sed -i ' | ||
| + | | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | |||
| + | |||
| + | ==== 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: | ||
| + | |||
| + | | ||
| + | |||
| + | |||
| + | 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, | ||
| + | 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: | ||
| + | |||
| + | | ||
| + | | ||
| + | |||
| + | |||
| + | 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: | ||
| + | |||
| + | | ||
| + | |||
| + | |||
| + | Congratulations, | ||
| + | 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' | ||
| + | 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` | ||
| + | |||
| + | | ||
| + | |||
| + | You can check to see if the system is effectively ready for this by running the | ||
| + | `efivar` command and seeing the output | ||
| + | |||
| + | | ||
| + | |||
| + | This should give you a list of " | ||
| + | by a readable word. If so, everything you need is in place. | ||
| + | |||
| + | This is the secret sauce for making the system bootable: | ||
| + | |||
| + | | ||
| + | |||
| + | |||
| + | NOTE: Intel microcode updates may require the previous line to include two | ||
| + | `initrd=` sections, so the previous line would have `-u " | ||
| + | |||
| + | ==== 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: < | ||
| + | link/ | ||
| + | 2: ens33: < | ||
| + | link/ether 00: | ||
| + | |||
| + | 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: | ||
| + | |||
| + | < | ||
| + | cd / | ||
| + | echo > local.network<< | ||
| + | [Match] | ||
| + | Name=ens33 | ||
| + | |||
| + | [Network] | ||
| + | DHCP=ipv4 | ||
| + | EOF | ||
| + | systemctl enable systemd-networkd.service | ||
| + | ip a | ||
| + | </ | ||
| + | |||
| + | 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:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | Also looked at: | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | |||
| + | For creating that USB stick, you can use the traditional `dd` method or try out | ||
| + | [[https:// | ||
| + | |||
| + | ==== 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:// | ||
| + | * [[https:// | ||
| + | |||
