- Hardware Setup
- Troubleshooting and Recovery
- Next up
- Switching between Ubuntu and Arch
As I mentioned in frame.work: First Impressions, my intention with the frame.work laptop was to multiboot - not with multiple OSes on a single drive, but with swappable drives.
To that end, the internal NVME is being used to store my work directory (git repos, etc) - which TBH, is where the speed needs to be since that is where all the builds are.
The individual OS drives are on swappable (in this case) 250gb modules.
I am also using Ventoy on a USB-A stick for OS installation.
I had installed Ubuntu 21.04 on the first 250gb module. I’ve been using that for about a month, and it has been working out really well.
Now, for the second module. I have decided to install Arch. For this I was using
archlinux-2021.08.01-x86_64.iso. I know
it’s a month out of date, but I forgot to download a newer iso.
Like last time, I would normally use ZFS for my filesystem; however, for a single external USB drive I decided not to do that.
This was the easy part.
- Unplug the power. Is that necessary? No clue, but it seemed like a good idea.
- Remove the 250gb Ubuntu module.
- Insert a new blank 250gb module.
- Insert the Ventoy USB.
- Re-attach power. This step wasn’t strickly necessary as I was at 100% power but I prefer to do OS installs while plugged in.
- Turn on the power.
During the initial bootup, the Ventoy USB was detected. I selected the archlinux iso and away we went.
In theory, I was following the official installation guide, however I did not have a secondary computer in front of me at the time. As such, I just took a few notes before doing the above steps and took a go of it.
First, I wanted to make sure I was booted into EFI mode.
I saw a directory of files, so… we’re good.
This reported that my wifi device was
This reported that nothing was soft or hard blocked.
This puts you into the
iwd interactive configuration.
station wlan0 scandoesn’t appear to do anything but…
station wlan0 get-networksthen lists the available wifi networks
station wlan0 connect MyWifiNetworkName(obviously not my real wifi name) then asks you for the Wifi password
device wlan0 showconfirms everything looks ok
station wlan0 showconfirms you are connected. If it says connecting, wait a moment.
Confirm you have wifi by running
timedatectl set-ntp true timedatectl status
While you are here, it’s a good time to figure out the correct terminology for your timezone.
It might seem obvious, but You aren’t going to be selecting “Los Angeles”, for example, like you would in Ubuntu.
You can run
timedatactl list-timezones to find the right one. For me it was “US/Pacific”.
Find the Drive
lsblk will show you a list of drives. In my case, it showed a 64gb, 250gb and a 500gb.
- The 64gb was the Ventoy USB
- THe 500gb was the NVME
- The 250gb was the new drive and already contained a FAT partition
In my case, the 250gb drive was
sda1 already defined).
Partition the Drive
fdisk /dev/sda. (in my case).
mif you need help
pto print the current partitions and confirm you are on the correct partitions
dto delete the only partition currently on the drive
nto create a new partition and specify the size of at least 260mb. I did
tto change the partition type to
nto create another partition. Size should be roughly (memory + 2GB). I have 64gb so I did
+70GB. I has debated not doing a swap partition, but if I wanted to hibernate down the road, I didn’t want to have to re-format my drive.
tto change the partition type to
nto create another partition. Let it take the remaining space.
tto change the partition type. The installation guide said to make it
Linux roothowever the labels were all cut off on the frame.work display due to the screen size. I ended up using the
linuxalias from the bottom of the screen, though I am pretty sure that was not the correct one. Seems to have worked though.
vto verify that everything is ok; and
pif you want to review it.
wto write the changes to disk
Our partitions are:
- EFI : /dev/sda1
- swap : /dev/sda2
- root : /dev/sda3
Format the Drive
First the EFI partition:
mkfs.fat -F32 /dev/sda1
Then the swap partition:
And finally the root partition:
Mount the Drive
First, we mount the root partition
mount /dev/sda3 /mnt
Then we need to create a place to mount the EFI and mount it.
mkdir /mnt/boot mount /dev/sda1 /mnt/boot
Finally, enable the swap
Initializing the System
/etc/pacman.d/mirrorlist and make sure it looks reasonable.
pacstrap /mnt base linux linux-firmware nano man-db man-pages texinfo grub efibootmgr intel-ucode iwd
In my case, I forgot
iwd which prevented the new system from being able to connect to the network. See Troubleshooting and Recovery.
Generate the fstab:
genfstab -U /mnt >> /mnt/etc/fstab
/mnt/etc/fstab and make sure it looks reasonable.
Set your locale
Based on our earlier
ln -sf /usr/share/zoneinfo/US/Pacific /etc/location
Set the hardware clock to UTC
nano /etc/locale.genand uncomment
nano /etc/locale.confand add
Setup your hostname
nano /etc/hostnameand add a single line that is your new hostname
Then add entries to
127.0.0.1 localhost ::1 localhost 127.0.1.1 myhostname.localdomain myhostname
Set a root password
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub --removable
/boot is technically
/mnt/boot from earlier. You are inside the chroot.
The bootloader id of
grub will create (at later steps):
I didn’t originally include
--removable but the drive would not show up in the UEFI bootloader after switching OSes.
/etc/default/grub if needed.
grub-mkconfig -o /boot/grub/grub.cfg
There was a note on the Arch wiki about making some changes to the kernel configuration to support the microcode. As I didn’t have the wiki in front of me during this process, I’ll probably need to go back and revisit that.
exit umount -R /mnt reboot
At this stage, remove install media and login as root.
You’ll want to continue with General recommendation. I still need to do that myself.
Troubleshooting and Recovery
The first time through, I did not include the
iwd package. I could not access dhcp, nmcli, iwctl, anything.
I also couldn’t install any packages.
So what do you do?
- Reboot onto the live iso. On this step, I had to go into the BIOS as the frame.work didn’t seem to allow me to default to the removable USB or reorder the boot entries – just check or uncheck them. To reorder them, you need to use the
-buttons while highlighting the item in non-Auto mode. Thanks to lbkNhubert for the solution.
- Run the Mount the Drive steps
pacman -S iwd
- Run the Exiting chroot steps
- If you unchecked the boot entry in the BIOS, make sure to re-enable it.
Once I was back into the system, I was able to run
iwctl using the same Setup Wifi steps I did during the installer process.
One caveat was that
systemd-resolve.service was not running.
I needed to uncomment the DNS entry in
/etc/systemd/resolved.conf and add some values to it. I just copied the fallback.
Then restart the services:
systemctl restart systemd-resolved.service
systemctl restart iwd.service
It’s still not always working on bootup - which I’ll need to look into. Running those two
systemctl lines after startup does get wifi working though.
Install, customize, configure.
Switching between Ubuntu and Arch
When I went to swap the Arch drive with the Ubuntu one, the BIOS didn’t see any drives. I tried rebooting multiple times.
--removable on grub-install should help with that, however I am not sure that is a long term solution. Maybe I need to modify the grub configuration. Also, maybe I need to do a similar fix for Ubuntu.