Installing Void Linux on the Acer TravelMate B311-33-C3FM ======================================================================== Contents ======================================================================== Materials Flashing the USB Stick Configuring BIOS on the Laptop Installation Post-Installation Tasks - Update the System - Enable Power Management - Install Intel Microcode Updates - Install iwd(8) for Wireless Networking - Install Xorg - Install Development Tools - Install Other Packages - Configuring Yubico Security Keys - Install doas(1) and Create Basic Rules - Configure Audio - CD Ripping - Configure Printing Additional Maintenance Actions - Updating BIOS References ======================================================================== Materials ======================================================================== I started with these: - Acer TravelMate B311-33 laptop - A small USB stick (8GB is sufficient) - A computer with USB and Internet connectivity (I used Raspbian Linux on a Raspberry Pi Zero W) ======================================================================== Flashing the USB Stick ======================================================================== Download the live .iso image. I downloaded the x86_64 musl image: wget https://repo-default.voidlinux.org/live/current/void-live-x86_64-musl-20240314-base.iso wget https://repo-default.voidlinux.org/live/current/sha256sum.{sig,txt} wget https://github.com/void-linux/void-packages/raw/refs/heads/master/srcpkgs/void-release-keys/files/void-release-20240314.pub Verify the image. I was using a Ubuntu derivative that did not have Void Linux's minisign(1), so I compiled it from source. I got the public release key from Void's Git repo per the handbook: minisign -V -p void-release-20240314.pub -x sha256sum.sign -m sha256sum.txt sha256sum -c --ignore-missing sha256sum.txt Flash the image to a USB stick (/dev/sde here): dd if=void-live-x86_64-musl-20240314-base.iso of=/dev/sde bs=1M Remove the USB drive. ======================================================================== Configuring BIOS on the Laptop ======================================================================== According to Acer's website (accessed late 2024), boot the Acer laptop and press F2 while the startup logo screen appears. I tried this, but the laptop went straight to Windows 11's installation screen. If this happens to you, shut the laptop down (hold the power button down and follow any on-screen instructions to shut it down) and try again. Note that the charging LED on the laptop's left edge turns blue when the laptop is on (orange while charging). Rapidly pressing the F2 key as soon as the blue LED appeared (but before the Acer logo scree appeared) opened BIOS settings for me. I did the following in the "Main" settings: - Correct the system's date and time. - Disable the F12 Boot Menu option. - Disable D2D Recovery. In the "Advanced" settings: - Disable Intel VTD. I do not plan to run virtual machines. - Disable Intel VTX. I do not plan to run virtual machines. In the "Security" settings: - Set a supervisor password to lock people out of BIOS. In the "Boot" settings: - Disable Secure Boot. Exit saving changes. If you ever need to reset BIOS settings, press F9 and Enter in the home BIOS screen to reset to defaults, then F10 to save changes and exit. ======================================================================== Installation ======================================================================== Insert your USB key into a USB port. When you turn the laptop on or reboot, repeatedly hit the F12 key before the Acer logo appears. This will take you to the boot selection menu. Select your USB drive to boot it. Follow the on-screen instructions and Void installation guide. ======================================================================== Post-Installation Tasks ======================================================================== ------------------------------------------------------------------------ Update the System ------------------------------------------------------------------------ Update all packages: sudo xbps-install -Su ------------------------------------------------------------------------ Enable Power Management ------------------------------------------------------------------------ acpid(8) was not enabled by default: sudo ln -s /etc/sv/acpid /etc/runit/runsvdir/default Install acpi(1) so you can check battery and AC plug statuses: sudo xbps-install -S acpi Then you can check battery and AC adapter statuses thus: acpi -abi ------------------------------------------------------------------------ Install Intel Microcode Updates ------------------------------------------------------------------------ Install the intel-ucode package and regenerate initrmfs per the Void Handbook (this example assumes you are running Linux kernel 6.6.z): sudo xbps-install -S void-repo-nonfree sudo xbps-install -S intel-ucode sudo xbps-reconfigure --force linux6.6 ------------------------------------------------------------------------ Install iwd(8) for Wireless Networking ------------------------------------------------------------------------ Use iwd(8) to configure and manage wireless networking: sudo xbps-install iwd sudo ln -s /etc/sv/dbus /etc/runit/runsvdir/default sudo ln -s /etc/sv/iwd /etc/runit/runsvdir/default Assuming your wireless network's SSID is MY_NETWORK and its password is MY_PASSWORD, create /var/lib/iwd/MY_NETWORK.psk (owned by root with 0600 permissions): [Security] Passphrase=MY_PASSWORD Confirm that iwd(8) connects: ip addr ------------------------------------------------------------------------ Install Xorg ------------------------------------------------------------------------ Install X and the Mesa OpenGL library: sudo xbps-install -S xorg-minimal xorg-fonts libX11-devel libXft-devel freetype-devel mesa Unfortunately, Xorg does not recognize the Acer touchpad out of the box. libinput does not find it: sudo libinput list-devices It turned out that this is a problem with Acer laptops in general. According to an Acer community thread, you can enter BIOS (press F2 repeatedly on boot before the logo screen appears until you get to BIOS settings), go to "Main", and press Ctrl-S to show hidden options, including an option to switch the trackpad from I2C to PS2. Switching it to PS2, saving the settings, and booting made the trackpad appear to Linux. ------------------------------------------------------------------------ Install Development Tools ------------------------------------------------------------------------ For example: sudo xbps-install -S clang git make zig ------------------------------------------------------------------------ Install Other Packages ------------------------------------------------------------------------ I installed these packages: sudo xbps-install -S firefox gnupg lynx neovim picocom signify wget xterm xz ------------------------------------------------------------------------ Configuring Yubico Security Keys ------------------------------------------------------------------------ You have to make udevd(8) recognize your security key via a rule. First, plug your security key in and, assuming it is a USB device, get its vendor and product IDs from lsblk(8): lsblk Create /etc/udev/rules.d/70-u2f.rules as follows. Set the correct vendor and product IDs. For my security key: ------------------------------------------------------------------------ # Yubico Security Key KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0664", GROUP="plugdev", ATTRS{idVendor}=="1050", ATTRS{idProduct}=="0120" ------------------------------------------------------------------------ This should let non-root users (in the plugdev group) use the device. Add your user to the plugdev group to give it access: sudo usermod -a -G plugdev YOURUSER If you want to create ed25519-sk or ecdsa-sk ssh(1) keys, install openssh-sk-helper: sudo xbps-install -S openssh-sk-helper ------------------------------------------------------------------------ Install doas(1) and Create Basic Rules ------------------------------------------------------------------------ doas(1) is much simpler than sudo(1) -- no surprise given its OpenBSD origins. Install it thus: sudo xbps-install -S opendoas Configure it by creating /etc/doas.conf, owned by root:root. See doas.conf(5) for the syntax. Here is a great initial doas.conf: permit nopass YOURUSER as root cmd /usr/bin/reboot args permit nopass YOURUSER as root cmd /usr/bin/shutdown args -h now permit nopass YOURUSER as root cmd /usr/bin/xbps-install args -Su This permits the user YOURUSER to reboot, shutdown, and update the system without entering a password. ------------------------------------------------------------------------ Configure Audio ------------------------------------------------------------------------ Install the alsa-utils, pipewire, and sof-firmware packages. You will need the void-repo-nonfree package to get the latter one: sudo xbps-install -S alsa-utils pipewire sof-firmware Create system-wide PipeWire configuration for wireplumber(1) and the pipewire-pulse interface: mkdir -p /etc/pipewire/pipewire.conf.d ln -s /usr/share/examples/wireplumber/10-wireplumber.conf /etc/pipewire/pipewire.conf.d/ ln -s /usr/share/examples/pipewire/20-pipewire-pulse.conf /etc/pipewire/pipewire.conf.d/ Ensure that your user's profile defines the XDG_RUNTIME_DIR environment variable. Here's a good value: export XDG_RUNTIME_DIR=/run/user/$(id -u) Reboot your system and log in as a user in the audio group. You need to run pipewire(1) in a D-Bus session, usually via dbus-run-session(1). To do this for your X window manager, run the window manager in a D-Bus session in your .xinitrc. For example, if your window manager is dwm, your .xinitrc might look like this: exec dbus-run-session -- /path/to/dwm Run pipewire(1) as a user in the audio group: pipewire Use wpctl(1) to control wireplumber(1). To see everything: wpctl status To set device 53 to 75% volume: wpctl set-volume 53 0.75 To toggle mute on an audio input or output device, such as device 53: wpctl set-mute 53 toggle ------------------------------------------------------------------------ CD Ripping ------------------------------------------------------------------------ Install abcde(1), cdparanoia(1) (for reading raw CD data), an audio encoder such as the Opus encoder, and cd-discid(1): sudo xbps-install -S abcde cdparanoia opus-tools cd-discid abcde(1) will rip the CD into a subdirectory of the current directory. Here is a good way to rip music CDs to Opus: abcde -l -o opus:"--bitrate 128" -x ------------------------------------------------------------------------ Configure Printing ------------------------------------------------------------------------ Install cups(1) and cups-filters: sudo xbps-install -S cups cups-filters Enable cupsd(8): sudo ln -s /etc/sv/cupsd /etc/runit/runsvdir/default Some printer manufacturers have additional drivers. For example, if you have an HP printer, install hplip: sudo xbps-install -S hplip Then run hp-setup thus after cupsd(8) starts. The defaults are usually sufficient: sudo hp-setup -i a2ps(1) and enscript(1) are helpful for printing plain text files: sudo xbps-install -S a2ps enscript Then printing a plain text file named document.txt is as simple as: enscript -B -p document.ps -M Letter document.txt lpr -P my_printer -o sides=two-sided-long-edge document.ps ======================================================================== Additional Maintenance Actions ======================================================================== ------------------------------------------------------------------------ Updating BIOS ------------------------------------------------------------------------ Check the Acer support site for BIOS firmware updates. You have to enter your model "TravelMate B311-33" or your laptop's serial number and check the firmware section. Compare the latest firmware version to what your BIOS reports. If there is a newer firmware version, download and extract the .zip file, which contains a Windows .exe. If your laptop is not running Windows (we are running Linux), use 7zip to unzip the .exe file. There should be a .bin or .fd file in it: That is the BIOS firmware. Format a USB drive with a FAT filesystem (type 0c in fdisk). Copy the firmware file onto it. Insert the USB drive into your laptop, enter BIOS, and find the option to update BIOS from USB. You should find the USB drive in there and the .bin or .fd file on it. Selecting the option should restart your computer and initiate the firmware upgrade: If it works correctly, the screen will mention the new version you are updating to. ======================================================================== References ======================================================================== - Acer, "How to Enter the BIOS Setup" https://community.acer.com/en/kb/articles/86-how-to-enter-the-bios-setup