Welp, since it is Gentoo Linux, it'll never gonna be easy to install, and definitely having much more rocky process than Rocky Linux (pun intented).
Installing Gentoo Linux is just a test to my Linux knowledge and hopefully it'll help me troubleshoot problems when managing other's machine.
Anyway, the official Gentoo Installation Handbook is very helpful for getting started, mostly.
- EFI
- Systemd
- No-multilib (removes 32 bit software support)
- GPT+LVM in boot disk
- Boot partition + swap partition + root partition only
- XFS formatted root partition
- Latest release of Linux Kernel, 6.0.8 to be exact
- Have initramfs
- Using GRUB2
Since I was using Virtual Box 6.1 before, I found out that there's a new update for the Virtual Box which strangely not able to be picked up by auto update process.
I'm trying to configure the VM as modern as possible, including EFI and using virtio as storage controller, nic and anywhere if possible.
Well... It wouldn't be a great start if EFI console shows no mapped device, is it?
Using virtio-scsi seems to having problem for the EFI firmware picking up the disks and cd drive. As I'm not familiar with configuring the firmware, I switched to a known good controller, LSILogic SAS.
Other than that, the machine works well.
The boot sequence of the live ISO image will show the penguin image when booting.
This, I believe, is caused by a kernel config CONFIG_LOGO.
I was expecting these penguins will gone after the auto login. They didn't.
I have to switch to another tty using Ctrl+Alt+F2 and switch back to tty1 to get rid of these.
While fetching sys-kernel/linux-firmware package, I got the message:
Calculating dependencies... done!
!!! All ebuilds that could satisfy "sys-kernel/linux-firmware" have been masked.
...(ignored)
A copy of the 'linux-fw-redistributable' license is located at '/var/db/repos/gentoo/licenses/linux-fw/redistributable'.
A copy of the 'no-source-code' license is located at '/var/db/repos/gentoo/licenses/no-source-code'.
...(ignored)
The message indicates that I haven't agreed to some licenses.
These licenses can be found inside @BINARY-REDISTRIBUTABLE.
As I don't want to allow all binary redistributable package installed without acknowledged, I choose to create a file in /etc/portage/package.license/sys-kernel_linux-firmware with the content:
sys-kernel/linux-firmware @BINARY-REDISTRIBUTABLE
Here we go again! Another package being masked!
When trying to get package sys-kernel/vanilla-sources (the original Linux kernel), here what I got:
!!! All ebuilds that could satisfy "sys-kernel/vanilla-sources" have been masked.
!!! One of the following masked packages is required to complete your request:
- sys-kernel/vanilla-sources-6.0.8::gentoo (masked by: ~amd64 keyword)
... (ignored)
As the error mentioned, it is being masked by the ~amd64 keyword. So another file is created : /etc/portage/package.accept_keyworkds/sys-kernel_vanilla-sources
sys-kernel/vanilla-sources ~amd64
As there might be thousands of kernel compile options, it is quite overwhelmingly hard to figure out what each option is doing.
So I reviewed what I'm going to have:
- System-wise:
- Initramfs
- systemd
- EFI
- No multilib
- Filesystem-wise:
- LVM
- XFS
- VFAT (for /boot)
- Hardware-wise:
- virtio-net, which is recognized as
Red Hat, Inc. Virtio network device - LSILogic SAS, which is recognized as
Broadcom / LSI SAS1068 PCI-X Fusion-MPT SASinlspci - AMD Ryzen 5000 series CPU, assigned 8 vCPUs to the VM.
- A VirtualBox VM
- virtio-net, which is recognized as
- Preferences:
- Ger rid of the penguin
- Kernel includes .config
- Enable support of FUSE (Filesystem in Userspace)
- Enable support of other filesystems
These gaves me some hint of what I should do.
Upon reading some other articles for configuring the kernel, I found out that the kernel option is very different in 6.0.8.
I'll have to find the same option in a different location, which is very tideous tbh.
These are the requirements for my environment:
- System-wise:
- Initramfs
- Package
sys-kernel/dracutinstalled. General Setup/[*] Initial RAM filesystem and RAM disk (initramfs/initrd) supportGeneral Setup/[*] Support inital ramdisk/ramfs compressed using <any><= Enable all compression method is recommended
- Package
- systemd
- Required options:
- Package
sys-apps/systemdis installed. General Setup/BPF subsystem/[*] Enable bpf() system callGeneral Setup/[*] Control Group support/[*] Support for eBPF programs attached to cgroupsGeneral Setup/[ ] Enable deprecated sysfs features to support old userspace toolsGeneral Setup/[*] Configure standard kernel features (expert users)/[*] open by fhandle syscallsGeneral Setup/[*] Configure standard kernel features (expert users)/[*] Enable eventpoll supportGeneral Setup/[*] Configure standard kernel features (expert users)/[*] Enable signalfd() system callGeneral Setup/[*] Configure standard kernel features (expert users)/[*] Enable timerfd() system call[*] Networking SupportDevice Drivers/Generic Driver Options/[*] Maintain a devtmpfs filesystem to mount at /devFile systems/[*] Inotify support for userspaceFile systems/Pseudo filesystems/[*] /proc file system supportFile systems/Pseudo filesystems/[*] sysfs file system support
- Package
- Recommended options:
General Setup/[*] Namespaces support/[*] Network namespaceGeneral architecture-dependent options/[*] Enable seccomp to safely execute untrusted bytecode[*] Enable the block layer/[*] Block layer SG support v4 helper lib[*] Networking Support/Networking options/<*> The IPv6 protocolDevice Drivers/Generic Driver Options/[ ] Support for uevent helperDevice Drivers/Firmware Drivers/[*] Export DMI identification via sysfs to userspaceFile systems/<*> Kernel automounter support (supports v3, v4 and v5)<== Could be selected by <*> Old Kconfig name for Kernel automounter supportFile systems/Pseudo filesystems/[*] Tmpfs virtual memory file system support (former shm fs)File systems/Pseudo filesystems/[*] Tmpfs POSIX Access Control ListsFile systems/Pseudo filesystems/[*] Tmpfs extended attributes
- Required options:
- EFI
Processor type and features/[*] EFI runtime service supportProcessor type and features/[*] EFI stub supportProcessor type and features/[*] EFI mixed-mode support[*] Enable the block layer/Partition Types/[*] Advanced partition selection[*] Enable the block layer/Partition Types/[*] EFI GUID Partition supportDevice Drivers/Firmware Drivers/[*] Mark VGA/VBE/EFI FB as generic system framebufferDevice Drivers/Graphics support/Frame buffer Devices/<*> Support for frame buffer devices/[*] EFI-based Framebuffer SupportFile systems/Pseudo filesystems/<*> EFI Variable filesystem
- No multilib
Binary Emulations/[*] IA32 Emulationbecomes not relevant.
- Initramfs
- Filesystem-wise:
- LVM
- Package
sys-fs/lvm2installed. Device Drivers/[*] Multiple devices driver support (RAID and LVM)/<*> Device mapper supportDevice Drivers/[*] Multiple devices driver support (RAID and LVM)/<*> Crypt target supportDevice Drivers/[*] Multiple devices driver support (RAID and LVM)/<*> Snapshot targetDevice Drivers/[*] Multiple devices driver support (RAID and LVM)/<*> Mirror targetDevice Drivers/[*] Multiple devices driver support (RAID and LVM)/<*> Multipath targetDevice Drivers/[*] Multiple devices driver support (RAID and LVM)/<*> I/O Path Selector based on the number of in-flight I/OsDevice Drivers/[*] Multiple devices driver support (RAID and LVM)/<*> I/O Path Selector based on the service time
- Package
- XFS
- Package
sys-fs/xfsprogsinstalled File systems/<*> XFS filesystem supportFile systems/[*] XFS POSIX ACL support
- Package
- VFAT (for /boot)
- Package
sys-fs/dosfstoolsinstalled File systems/DOS/FAT/EXFAT/NT Filesystems/`<*> VFAT (Windows-95) fs support
- Package
- LVM
- Hardware-wise:
- virtio-net, which is recognized as
Red Hat, Inc. Virtio network deviceDevice Drivers/[*] Network device support/[*] Network core deiver supportDevice Drivers/[*] Network device support/<*> Virtio network driver
- LSILogic SAS, which is recognized as
Broadcom / LSI SAS1068 PCI-X Fusion-MPT SASinlspciDevice Drivers/SCSI device support/<*> SCSI device supportDevice Drivers/SCSI device support/<*> SCSI disk supportDevice Drivers/SCSI device support/<*> SCSI CDROM supportDevice Drivers/SCSI device support/<*> SCSI generic supportDevice Drivers/SCSI device support/SCSI low-level drivers/<*> Legacy MPT2SAS config option<= Which should will also select-*- LSI MPT Fusion SAS 3.0 & SAS 2.0 Device Driver- There're some caveats here, which will be solved in problem 6.
- AMD Ryzen 5000 series CPU, assigned 8 vCPUs to the VM.
Processor type and features/[*] Symmetric multi-processing supportProcessor type and features/Processor family (Generic-x86-64)<= I'm not sure if the optionOpteron/Athlon64/Hammer/K8can be used or not.Processor type and features/(32) Maximum number of CPUs<= It is good as long as it's greater than 8.Processor type and features/[*] Multi-core scheduler supportProcessor type and features/[*] CPU microcode loading supportProcessor type and features/[*] AMD microcode loading support[*] Miriagtions for speculative execution vulnerabilities
- A VirtualBox VM
Processor type and features/Linux guest support/[*] Enable paravirtualization codeProcessor type and features/Linux guest support/[*] KVM Guest support (including kvmclock)Device Drivers/Graphics support/<M> DRM driver for VMware Virtual GPU<= As I'm using VMSVGA as the display driver.Device Drivers/Graphics support/<M> Virtual Box Graphics Card<= Just to be safeDevice Drivers/HID support/-*- HID bus supportDevice Drivers/HID support/<*> Generic HID driverDevice Drivers/HID support/[*] Battery level reporting for HID devicesDevice Drivers/HID support/USB HID support/<*> USB HID transport layerDevice Drivers/[*] USB support/<*> xHCI HCD (USB 3.0) supportDevice Drivers/[*] USB support/<*> EHCI HCD (USB 2.0) supportDevice Drivers/[*] USB support/<*> OHCI HCD (USB 1.1) supportDevice Drivers/[*] USB support/<*> UHCI HCD (most Intel and VIA) supportDevice Drivers/[*] USB support/<*> USB Mass Storage support<= In case of trying to pass USB stick devices into the VM.Device Drivers/[*] USB support/<*> USB Attached SCSIDevice Drivers/[*] Virtualization drivers/<M> Virtual Box Guest integration support<= Either<*>or<M>is ok hereDevice Drivers/[*] Virtualization drivers/<M> EFI secret area srcurityfs support<= Not sure the use of itFile systems/[*] Miscellaneous filesystems/<M> VirtualBox guest shared folder (vboxsf) support
- virtio-net, which is recognized as
- Preferences:
- Ger rid of the penguin
Device Drivers/Graphics support/[ ] Bootup logo
- Kernel includes .config
General setup/<*> Kernel .config supportGeneral setup/[*] Enable access to .config through /proc/config.gz
- Enable support of FUSE (Filesystem in Userspace)
File systems/<M> FUSE (Filesystem in Userspace) support
- Enable support of other common filesystems
File systems/<M> Second extended fs supportFile systems/[*] Ext2 extended attributesFile systems/[*] Ext2 POSIX Access Control ListsFile systems/<M> The Extended 3 (ext3) filesystemFile systems/[*] Ext3 POSIX Access Controls ListsFile systems/<M> JFS filesystem supportFile systems/[*] JFS POSIX Access Control ListsFile systems/<M> Btrfs filesystem supportFile systems/[*] Btrfs POSIX Access Control ListsFile systems/CD-ROM/DVD Filesystems/<*> ISO 9660 file system supportFile systems/CD-ROM/DVD Filesystems/[*] Microsoft Joliet CDROM extensionsFile systems/CD-ROM/DVD Filesystems/<*> UDF file system supportFile systems/DOS/FAT/EXFAT/NT Filesystems/<M> exFAT filesystem supportFile systems/DOS/FAT/EXFAT/NT Filesystems/<M> NTFS Read-Write file system support<= The one that the help message mentionedNTFS version 3.1.File systems/DOS/FAT/EXFAT/NT Filesystems/[ ] 64 bits per NTFS clusters<= As Microsoft Windows will not able to access the filesystem with this enabled.File systems/DOS/FAT/EXFAT/NT Filesystems/[*] activate support of external compressions lzx/xpress
- Ger rid of the penguin
References:
- https://wiki.gentoo.org/wiki/Dracut
- https://wiki.gentoo.org/wiki/LVM
- https://wiki.gentoo.org/wiki/Systemd
After reboot, GRUB menu shows up, selected the Gentoo Linux option. It started to load kernel and initramfs.
That's it. No output after Loading initramfs.
Unlike the live CD is able to pickup EFI VGA as frame buffer, it seems there's some problem with the graphics settings.
Enabling the simple frame buffer in the kernel config seems to work for now.
Device Drivers/Graphics support/< > Simple framebuffer driverDevice Drivers/Graphics support/Frame buffer Devices/<*> Support for frame buffer devices/<*> Simple framebuffer supportDevice Drivers/Graphics support/Console display driver support/[*] Framebuffer Console support
=====
Alternatively, the live CD also has /proc/config.gz enabled, which can be used as reference as well.
Now I can see what's going on for my booting. I saw it started dracut initqueue and stuck at there.
After around 16 minutes, it starts spitting out the message:
[ 992.100683] dracut-initqueue[255}: Warning: dracut-initqueue: timeout, still waiting for following initqueue hooks:
[ 992.101900] dracut-initqueue[255]: Warning: /lib/dracut/hooks/initqueue/finished/devexists-\x2fdev\x2fmapper\x2fgentoo--vg-gentoo--root.sh: "if ! grep -q After=remote-fs-pre.target /run/systemd/generator/systemd-cryptsetup@*.service 2>/dev/null; then
[ 992.102870] dracut-initqueue[255]: [ -e "/dev/mapper/gentoo--vg-gentoo--root" ]
[ 992.103592] dracut-initqueue[255]: fi"
[ 992.103875] dracut-initqueue[255]: Warning: dracut-iniqueue: starting timeout scripts
[ 992.104679] dracut-initqueue[255]L Warning: Could not boot.
Starting Dracut Emergency Shell...
Warning: /dev/mapper/gentoo--vg-gentoo--root does not exist
Which indicates that it's not able to find the root LVM volume.
After entering the emergency shell, I started out finding the logical volume (gentoo-root), volume group (gentoo-vg) and physical volume (should be /dev/sda2).
lvm lvs => Nothing
lvm vgs => Nothing
lvm pvs => Sill nothing
ls /dev/sd* => Also nothing!
The fact that /dev/sd* does not exist, makes me think I've selected the wrong driver (oops).
So I went back to the kernel config, select all LSI driver as module.
Device drivers/SCSI device support/[*] SCSI low-level drivers/[*] LSI Logic New Generation RAID Device DriversDevice drivers/SCSI device support/[*] SCSI low-level drivers/<M> LSI Logic Legacy MegaRAID DriverDevice drivers/SCSI device support/[*] SCSI low-level drivers/<M> LSI Logic MetaRAID SAS RAID ModuleDevice drivers/SCSI device support/[*] SCSI low-level drivers/{M} LSI MPT Fusion SAS 3.0 & SAS 2.0 Device DriverDevice drivers/SCSI device support/[*] SCSI low-level drivers/<M> Legacy MPT2SAS config option
After digging around, I found these
Device drivers/[*] Fusion MPT device supportDevice drivers/[*] Fusion MPT device support/<M> Fusion MPT ScsiHost drivers for SPI<= Probably not neededDevice drivers/[*] Fusion MPT device support/<M> Fusion MPT ScsiHost drivers for SAS
Which was disable before, great...