oclug-live-distro
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | Last revisionBoth sides next revision | ||
oclug-live-distro [2017/04/04 17:47] – [EFI Booting] jcnash | oclug-live-distro [2017/04/04 17:47] – jcnash | ||
---|---|---|---|
Line 15: | Line 15: | ||
* [[livedistro: | * [[livedistro: | ||
- | |||
- | ===== Investigation of EFI boot (S 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. | ||
- | |||
- | < | ||
- | // Interesting, | ||
- | // I've noticed it before, but it seems to be an issue with lines that wrap | ||
- | // longer than four lines. | ||
- | </ | ||
- | |||
- | 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:// | ||
- | |||
oclug-live-distro.txt · Last modified: 2024/03/31 15:34 by scott5