ERRO: Dispositivo raiz montado com sucesso, mas / sbin / init não existe

7

Instalei o Linux Mint e o Manjaro Linux no meu computador. Eu instalei apenas o Linux mint no MBR. Para Manjaro, criei uma partição /boot/efi , mas não verifiquei para instalar no MBR.

Então, eu estou controlando grub de hortelã. Agora, quando eu tento inicializar o Manjaro, ele mostra:

ERROR: resume: no device specified for hibernation: performing fsck on
dev/sda11  /dev/sda11: clean 1727/915712 files, .... blocks

WARNING: The root device is not configured to be mounted read-write!It
may be fsck'd again later

:mounting /dev/sda11 on real boot running cleanup hook [udev]

ERROR: Root device mounted successfully, but /sbin/init does not exist.

sh:can't access tty; job control turned off

[rootfs /]#

Após o prompt do shell, não consigo escrever nada. Ele trava, ou às vezes me mostra mensagens como:

usb 3-3: device not accepting address 2, error -62

e assim por diante ...

Eu tentei adicionar init=/usr/lib/systemd/systemd ao grub, como eu vi no google, mas continua o mesmo.

Devo observar que, para a instalação do Manjaro, estou usando uma partição separada para / e /usr e /var . Isso talvez tenha uma influência? Como eu vi aqui .

Mas o problema é que não consigo escrever nada, trava.

Também encontrei um comentário em uma postagem no blog aqui que afirma:

“If you keep /usr as a separate partition, you must adhere to the following requirements: “ - Add the shutdown hook. The shutdown process will pivot to a saved copy of the initramfs and allow for /usr (and root) to be properly unmounted from the VFS.

“ - Add the fsck hook, mark /usr with a passno of 0 in /etc/fstab. While recommended for everyone, it is mandatory if you want your /usr partition to be fsck’ed at boot-up. Without this hook, /usr will never be fsck’d.

“ - Add the usr hook. This will mount the /usr partition after root is mounted. Prior to 0.9.0, mounting of /usr would be automatic if it was found in the real root’s /etc/fstab.”

And never forget to run mkinitcpio -p linux every time after you make changes to mkinitcpio.conf to actually create the new images and get them the right place.

Isso parece promissor, pois meu /usr está de fato em uma partição separada. Quais são esses "ganchos" e como os adiciono?

parted -l :

Model: ATA TOSHIBA MQ01ABD0 (scsi)
Disk /dev/sda: 750GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system     Name                  Flags
 1      1049kB  1075MB  1074MB  ntfs            Basic data partition  hidden, diag
 2      1075MB  1347MB  273MB   fat32           Basic data partition  boot
 3      1347MB  1482MB  134MB   ntfs            Basic data partition  msftres
 4      1482MB  80,1GB  78,6GB  ntfs            Basic data partition  msftdata
 5      80,1GB  80,4GB  262MB   ext4
 6      80,4GB  90,4GB  10,0GB  ext4                                  msftdata
 7      93,0GB  102GB   9000MB  ext4                                  msftdata
 9      102GB   106GB   3999MB  linux-swap(v1)
10      106GB   106GB   250MB   fat32                                 boot
11      106GB   121GB   15,0GB  ext4                                  msftdata
12      121GB   151GB   30,0GB  ext4                                  msftdata
13      151GB   165GB   14,0GB  ext4                                  msftdata
14      165GB   206GB   40,9GB  ext4                                  msftdata
 8      206GB   743GB   537GB   ext4                                  msftdata
15      743GB   747GB   4000MB  linux-swap(v1)                        msftdata

grub :

menuentry 'Linux Mint 17 Cinnamon 64-bit, 3.13.0-24-generic (/dev/sda5)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod part_gpt
    insmod ext2
    set root='hd0,gpt5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt5 --hint-efi=hd0,gpt5 --hint-baremetal=ahci0,gpt5  19af2e09-8946-4ca2-9655-75921f3609a5
    else
      search --no-floppy --fs-uuid --set=root 19af2e09-8946-4ca2-9655-75921f3609a5
    fi
    linux   /vmlinuz-3.13.0-24-generic root=UUID=9356f543-f391-4ba5-9dcc-e8484d6935e0 ro   quiet splash $vt_handoff
    initrd  /initrd.img-3.13.0-24-generic
}
menuentry 'Linux Mint 17 Cinnamon 64-bit, 3.13.0-24-generic (/dev/sda5) -- recovery mode' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod gzio
    insmod part_gpt
    insmod ext2
    set root='hd0,gpt5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt5 --hint-efi=hd0,gpt5 --hint-baremetal=ahci0,gpt5  19af2e09-8946-4ca2-9655-75921f3609a5
    else
      search --no-floppy --fs-uuid --set=root 19af2e09-8946-4ca2-9655-75921f3609a5
    fi
    echo    'Loading Linux 3.13.0-24-generic ...'
    linux   /vmlinuz-3.13.0-24-generic root=UUID=9356f543-f391-4ba5-9dcc-e8484d6935e0 ro recovery nomodeset 
    echo    'Loading initial ramdisk ...'
    initrd  /initrd.img-3.13.0-24-generic
}


menuentry 'Manjaro Linux (0.8.10) (on /dev/sda11)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-95ed019d-9269-4869-9f99-a03f002a53c6' {
    insmod part_gpt
    insmod ext2
    set root='hd0,gpt11'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt11 --hint-efi=hd0,gpt11 --hint-baremetal=ahci0,gpt11  95ed019d-9269-4869-9f99-a03f002a53c6
    else
      search --no-floppy --fs-uuid --set=root 95ed019d-9269-4869-9f99-a03f002a53c6
    fi
    linux /boot/vmlinuz-312-x86_64 root=/dev/sda11
    initrd /boot/initramfs-312-x86_64.img
}
submenu 'Advanced options for Manjaro Linux (0.8.10) (on /dev/sda11)' $menuentry_id_option 'osprober-gnulinux-advanced-95ed019d-9269-4869-9f99-a03f002a53c6' {
    menuentry 'Manjaro Linux (0.8.10) (on /dev/sda11)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-312-x86_64--95ed019d-9269-4869-9f99-a03f002a53c6' {
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt11'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt11 --hint-efi=hd0,gpt11 --hint-baremetal=ahci0,gpt11  95ed019d-9269-4869-9f99-a03f002a53c6
        else
          search --no-floppy --fs-uuid --set=root 95ed019d-9269-4869-9f99-a03f002a53c6
        fi
        linux /boot/vmlinuz-312-x86_64 root=/dev/sda11
        initrd /boot/initramfs-312-x86_64.img
    }
}
    
por George 29.06.2014 / 16:39

3 respostas

7

Como @Leiaz apontou muito corretamente nos comentários, /sbin no Arch (e por extensão, Manjaro) agora é um link simbólico para /usr/bin . Isso significa que, a menos que /usr esteja montado, /usr/sbin/init não existirá. Portanto, você precisa certificar-se de que /usr seja montado pelo ramdisk inicial. Isso é o que a citação do wiki do Arch no seu OP significa:

If you keep /usr as a separate partition, you must adhere to the following requirements:

  • Enable mkinitcpio-generate-shutdown-ramfs.service or add the shutdown hook.

  • Add the fsck hook, mark /usr with a passno of 0 in /etc/fstab. While recommended for everyone, it is mandatory if you want your /usr partition to be fsck'ed at boot-up. Without this hook, /usr will never be fsck'd.

  • Add the usr hook. This will mount the /usr partition after root is mounted. Prior to 0.9.0, mounting of /usr would be automatic if it was found in the real root's /etc/fstab.

Então, você precisa gerar um novo arquivo init com os ganchos direitos 1 . Estes são adicionados alterando a linha HOOKS="" em /etc/mkinitcpio.conf . Então

  1. Inicialize no Mint e monte o diretório Manjaro / :

    mkdir manjaro_root && sudo mount /dev/sda11 manjaro_root
    

    Agora, a raiz do Manjaro será montada em ~/manjaro_root .

  2. Edite o arquivo mkinitcpio.conf usando seu editor favorito (estou usando nano como exemplo, não mais):

    sudo nano ~/manjaro_root/etc/mkinitcpio.conf
    

    Encontre a linha HOOKS e verifique se ela contém os ganchos relevantes

    HOOKS="shutdown usr fsck"
    

    Importante ": não remova nenhum dos ganchos já presentes. Basta adicionar o acima aos que estão lá. Por exemplo, o resultado final pode parecer

    HOOKS="base udev autodetect sata filesystems shutdown usr fsck"
    
  3. Marque /usr com um passno de 0 em /etc/fstab . Para fazer isso, abra manjaro_root/etc/fstab e encontre a linha /usr . Para este exemplo, assumirei que é /dev/sda12 , mas use o que estiver em seu sistema. O número "pass" é o último campo de uma entrada /etc/fstab . Então, você precisa ter certeza de que a linha se parece com

    /dev/sda12  /usr  ext4  rw,errors=remount-ro     0      0
                                                            ^
                             This is the important one -----|
    
  4. Crie a nova imagem de inicialização. Para fazer isso, você terá que montar também o diretório /usr do Manjaro.

    sudo mount /dev/sda12 ~/manjaro_root/usr
    

    Eu não tenho muita experiência com o Arch, então isso pode não ser necessário (você pode executar mkinitcpio sem chroot ), mas para garantir, configure um ambiente chroot :

    sudo mount --bind /dev ~/manjaro_root/dev && 
    sudo mount --bind /dev/pts ~/manjaro_root/dev/pts && 
    sudo mount --bind /proc ~/manjaro_root/proc && 
    sudo mount --bind /sys ~/manjaro_root/sys &&
    sudo chroot ~/manjaro_root
    

    Você agora estará em um ambiente chroot que pensa que ~/manjaro_root/ é realmente / . Agora você pode ir em frente e gerar sua nova imagem de inicialização

    mkinitcpio -p linux
    
  5. Saia do chroot

    exit
    
  6. Atualize seu grub.cfg (novamente, isso pode não ser realmente necessário):

    sudo update-grub
    

Agora reinicie e tente iniciar o Manjaro novamente.

1 "Ganchos" são pequenos scripts que dizem ao mkinitcpio o que deve ser adicionado à imagem do init que ele gera.

    
por 29.06.2014 / 19:48
2

Do Mint, você pode alterar a raiz para a sua instalação do Manjaro, para regenerar o initramfs.

Monte sua raiz Manjaro no diretório de sua escolha ( ~/foo ). Monte sua partição /usr em ~/foo/usr , também monte a inicialização se estiver separada. Mount proc sys dev:

# mount -t proc proc ~/foo/proc/
# mount --rbind /sys ~/foo/sys/
# mount --rbind /dev ~/foo/dev/

E altere a raiz: chroot ~/foo /bin/bash

Como explicado no wiki : "Ganchos são pequenos scripts que descrevem o que será adicionado à imagem" . Edite /etc/mkinitcpio.conf , adicione os ganchos usr fsck e shutdown à entrada HOOK , conforme indicado no wiki e nos comentários. Regenerar initramfs: mkinitcpio -p linux (será escrito em /boot )

Saia do chroot, desmonte as partições proc, sys, dev e Manjaro e tente reiniciar.

    
por 29.06.2014 / 19:43
0

Desperdiçou por volta de 6 horas criando um dispositivo de boot USB para o Linux Mint, fazendo backup de todos os meus dados de 2 partições e tentando várias tentativas de resgate depois de obter a temida mensagem sbin / init não encontrada ...

Isso aconteceu após uma pequena atualização - o sistema não reinicializava. Parece que a pasta sbin inteira foi misteriosamente deletada e não pôde ser recuperada. O único conselho significativo que pude encontrar foi "re-instalar".

A correção, (menos de 5 minutos !!) foi a seguinte:

  1. inicialize a partir do disco de instalação ao vivo original (Cinnamon Mint 17.1, neste caso),
  2. abra um explorador de arquivos como raiz (clique com o botão direito do mouse em uma pasta e selecione "abrir como raiz", abra um terminal e digite "sudo nemo"
  3. localize a pasta sbin da instalação ativa
  4. monte a partição do Mint com defeito (clique no ícone)
  5. altere as permissões aplicáveis à pasta sbin (clique com o botão direito, Propriedades, Permissões, Outros, Acesso a arquivos, leitura e gravação - clique em "Aplicar permissões a arquivos anexos")
  6. copie a pasta sbin inteira para o diretório raiz instalado (/). (É aqui que as pastas do sistema 'bin', 'boot', 'home', 'usr' etc. estão localizadas.)
  7. Reinicializar
por 18.07.2016 / 18:57