
Percebi recentemente que, ao tentar inicializar o kernel do Linux ( 5.8.0-55-generic
em uma distribuição padrão do Ubuntu 20.04), se eu especificar a unidade raiz usando root=PARTUUID=.....
e fornecer o UUID da partição ext4 em maiúsculas, o kernel inicializa, mas trava por 30s durante a inicialização (conforme mostrado nestas linhas de /var/log/dmesg
):
[ 2.853379] kernel: input: HID 05ac:820b as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.8/2-1.8.1/2-1.8.1.2/2-1.8.1.2:1.0/0003:05AC:820B.0009/input/input10
[ 2.857488] kernel: hid-generic 0003:05AC:820B.0009: input,hidraw8: USB HID v1.11 Mouse [HID 05ac:820b] on usb-0000:00:1d.0-1.8.1.2/input0
[ 2.938013] kernel: usb 2-1.8.1.3: new full-speed USB device number 8 using ehci-pci
[ 3.057584] kernel: usb 2-1.8.1.3: New USB device found, idVendor=05ac, idProduct=8289, bcdDevice= 1.50
[ 3.067746] kernel: usb 2-1.8.1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 3.077779] kernel: usb 2-1.8.1.3: Product: Bluetooth USB Host Controller
[ 3.087836] kernel: usb 2-1.8.1.3: Manufacturer: Apple Inc.
[ 32.329915] kernel: EXT4-fs (sda4): mounted filesystem with ordered data mode. Opts: (null)
[ 32.498137] systemd[1]: Inserted module 'autofs4'
[ 33.091557] systemd[1]: systemd 245.4-4ubuntu3.7 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=hybrid)
[ 33.130184] systemd[1]: Detected architecture x86-64.
[ 33.179603] systemd[1]: Set hostname to <michael-MacBookPro>.
[ 33.342145] systemd[1]: Created slice system-modprobe.slice.
[ 33.350600] systemd[1]: Created slice system-systemd\x2dfsck.slice.
[ 33.358792] systemd[1]: Created slice User and Session Slice.
Se eu especificar exatamente o mesmo PARTUUID em letras minúsculas, não haverá travamento:
[ 2.643019] kernel: input: HID 05ac:820b as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.8/2-1.8.1/2-1.8.1.2/2-1.8.1.2:1.0/0003:05AC:820B.0009/input/input10
[ 2.652851] kernel: hid-generic 0003:05AC:820B.0009: input,hidraw8: USB HID v1.11 Mouse [HID 05ac:820b] on usb-0000:00:1d.0-1.8.1.2/input0
[ 2.685911] kernel: EXT4-fs (sda4): mounted filesystem with ordered data mode. Opts: (null)
[ 2.733247] kernel: usb 2-1.8.1.3: new full-speed USB device number 8 using ehci-pci
[ 2.852575] kernel: usb 2-1.8.1.3: New USB device found, idVendor=05ac, idProduct=8289, bcdDevice= 1.50
[ 2.860616] kernel: usb 2-1.8.1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 2.867916] kernel: usb 2-1.8.1.3: Product: Bluetooth USB Host Controller
[ 2.875182] kernel: usb 2-1.8.1.3: Manufacturer: Apple Inc.
[ 2.882524] systemd[1]: Inserted module 'autofs4'
[ 3.490681] systemd[1]: systemd 245.4-4ubuntu3.7 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=hybrid)
[ 3.529529] systemd[1]: Detected architecture x86-64.
[ 3.585335] systemd[1]: Set hostname to <michael-MacBookPro>.
[ 3.732416] systemd[1]: Created slice system-modprobe.slice.
[ 3.740515] systemd[1]: Created slice system-systemd\x2dfsck.slice.
[ 3.748458] systemd[1]: Created slice User and Session Slice.
(Observe que a mesma mensagem 'sistema de arquivos montado' está em ambos os logs, apenas algumas linhas antes e sem grande atraso no log de inicialização rápida.)
A versão maiúscula do PARTUUID está sendo usada, no entanto (não, por exemplo, substituída por outra coisa): se eu inserir um dígito errado, depois dos 30 anos trava o kernel reclama que não consegue encontrar o sistema de arquivos raiz, como esperado.
Alguém pode ajudar a explicar isso? Parece pelo menos que não deveria funcionar, se o caso fosse importante, e não que deveria funcionar depois de um atraso de 30 segundos.
ATUALIZAÇÃO 1: O mesmo (comportamento acima e semelhanças/diferenças de /etc/fstab
comportamento) root=UUID=...
também se aplica a root=PARTUUID=...
.
ATUALIZAÇÃO 2: Eu acho que isso deve ser um pouco diferente do que acontece com /etc/fstab
(tanto porque a montagem da raiz deve acontecer antes que /etc/fstab
possa ser lida, e também porque - como discutido nos comentários - /etc/fstab
simplesmente falha com caso errado (PART)UUID, enquanto root=...
é bem-sucedido, após uma pausa de 30s ).