Depois de tentar instalar um kernel compilado e reinicializar, estou recebendo o erro:
montagem: montagem UUID = 59c56381-e5ec-4a8b-8c2e-f9c6a66d524c em /sysroot falhou: esse dispositivo não existe
Por que isso está acontecendo? Como posso corrigir isso para inicializar corretamente?
Sobre o sistema
- Alpine Linux 3.12_alpha20200319 (borda) - Alpine Linux Virtual
- Kernel 5.4.31-0-virt
- Executando dentro do VirtualBox
Etapas de construção do kernel
wget https://mirrors.edge.kernel/pub/linux/kernel/v5.x/linux-5.4.30.tar.xz
tar -xf linux-5.4.30.tar.xz
cp /boot/config-virt /home/name/build/.config
make -C /home/name/linux-5.4.30 O=/home/name/build listnewconfig
make -j4 -C /home/name/linux-5.4.30 O=/home/name/build
cd /home/name/build
make modules_install
Não tenho certeza sobre as seguintes etapas:
cp System.map /boot/System.map-virt
cp arch/x86_64/boot/bzImage /boot/vmlinuz-virt
cp .config /boot/config-virt
Não corro make install
porque passa arch/x86/boot/bzImage. Por causa disso, acho que está instalando 32 e 64 bits. Então, estou tentando instalar manualmente.
Meu arquivo extlinux.conf:
DEFAULT menu.c32
PROMPT 0
MENU TITLE Alpine/Linux Boot Menu
MENU HIDDEN
MENU AUTOBOOT Alpine will be booted automatically in # seconds
TIMEOUT 30
LABEL virt
MENU LABEL linux virt
LINUX vmlinuz-virt
INITRD initramfs-virt
APPEND root=UUID=59c56381-e5ec-4a8b-8c2e-f9c6a66d524c moudles=sd-mod,usb-storage,ext4 quiet rootfstype=ext4
MENU SEPARATOR
Tentativas de consertar
(Todos os itens abaixo ainda resultam no mesmo erro)
- Executando
mkinitfs
no/
diretório antes da reinicialização - Correndo
extlinux --install /boot
- Executando
make install
no diretório build e alterando a linha extlinux.confLINUX vmlinuz-virt
paraLINUX vmlinuz
- Tentei mudar os controladores de armazenamento VirtualBox para AHCI, virtio-scsi e PIIX4.
Pode ser útil:
Verifiquei o UUID especificado no erro e no extlinux.conf. Ele identifica /dev/sda3. No entanto, quando entro no shell de recuperação de emergência após uma falha na inicialização e verifico o diretório /dev, ele não está presente. Não faço ideia do porquê.
lsmod não mostra nenhum módulo carregado. Presumo que isso não deveria estar acontecendo.
Se eu continuar a inicialização digitando, exit
recebo o kernel panic
arquivos
.config -https://github.com/alpinelinux/aports/blob/master/main/linux-lts/config-virt.x86_64
extlinux.conf -https://pastebin.com/QMkePsqS
mkinitfs.conf -https://pastebin.com/rksn7GcN
Responder1
Como mencionado na postagem,
lsmod não mostra nenhum módulo carregado. Presumo que isso não deveria estar acontecendo
o problema era porque os módulos não estavam sendo carregados no kernel. A versão atual do kernel em execução era 5.4.31-0-virt e a versão que estava sendo construída era 5.4.30. Os módulos sendo instalados estavam sendo colocados no /lib/modules/5.4.30
diretório. Isso fez com que o disco RAM inicial (initramfs) fosse compilado sem os módulos corretos para o kernel e, portanto, não fosse carregado na inicialização.
Para corrigir isso, após instalar os módulos do kernel ao construir o initramfs, o seguinte comando deve ser usado:
mkinitfs -o /boot/initramfs-virt 5.4.30
Este comando inclui os módulos instalados para o kernel 5.4.30 no initramfs em vez de usar a uname -r
versão padrão (neste caso 5.4.31-0-virt). O kernel é então capaz de carregar os módulos -> ler os discos -> inicializar a partir do disco necessário.