エラー:ルートデバイスが正常にインストールされましたが、/ sbin / initが存在しません。

エラー:ルートデバイスが正常にインストールされましたが、/ sbin / initが存在しません。

私のコンピュータにLinux MintとManjaro Linuxをインストールしました。 MBRにのみLinux Mintをインストールしました。 Manjaroの場合、パーティションを作成しましたが、/boot/efiMBRのインストールを確認していません。

だから私はgrubコントロールのためにペパーミントを使用します。 Manjaroを起動しようとすると、次のようになります。

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 /]#

シェルプロンプトの後には何も書き込めません。動作が停止したり、次のメッセージが表示され続ける場合があります。

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

など...

init=/usr/lib/systemd/systemdGoogle で見たように grub に追加しようとしましたが、まだ同じです。

Manjaroインストールの場合と/別々のパーティションを使用することに注意してください。たぶんこれが影響を与えるのでしょうか?私が見るには/usr/varここ

ところで問題は何も書けないので止まるということです。

ブログ投稿へのコメントも見つかりました。ここそれは以下を規定します:

「/usr を別々のパーティションとして使用する場合は、次の要件に従う必要があります。」 - 終了フックを追加します。シャットダウンプロセスは、保存されたinitramfsコピーにリダイレクトされ、/ usr(およびルート)がVFSから適切にアンマウントされるようにします。

- fsckフックを追加して/etc/fstabで/ usrをpassno 0としてマークします。すべての人にお勧めしますが、起動時に/ usrパーティションをfsckに設定したい場合は必須です。ではありません。

" - usrフックを追加します。ルートをマウントした後に/ usrパーティションをマウントします。

そして、mkinitcpio.confを変更するたびに、mkinitcpio -p linuxを実行して実際に新しいイメージを作成して正しい場所に配置することを忘れないでください。

/usr私は実際に別々のパーティションにあるので、これは有望なものです。これらの「フック」とは何ですか?

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
    }
}

ベストアンサー1

@Leiazがコメントで正しく指摘したように、/sbinArch(およびManjaro拡張による)は、マウントされていない場合は存在しないことを/usr/bin意味します。したがって、初期のRAMディスクにマウントされていることを確認する必要があります。 OPのArch wiki引用が意味するものは次のとおりです。/usr/usr/sbin/init/usr

/usrを別々のパーティションとして使用する場合は、次の要件を満たす必要があります。

  • mkinitcpio-generate-shutdown-ramfs.serviceを有効にするか、シャットダウンフックを追加してください。

  • fsckフックを追加し、/ etc / fstabで/ usrをpassno 0としてマークします。すべての人にお勧めしますが、起動時に/ usrパーティションをfsckに設定するには必須です。このフックがないと、/ usrは決してfsckされません。

  • usrフックを追加します。ルートをマウントした後、/ usrパーティションをマウントします。 0.9.0より前は、/ usrが実際のルートディレクトリの/ etc / fstabにある場合は自動的にマウントされていました。

したがって、正しいフックを使用して新しい初期化ファイルを生成する必要があります1。これはHOOKS=""の行を変更することによって追加されます/etc/mkinitcpio.conf。だから

  1. Mintで起動し、Manjaro/ディレクトリをマウントします。

    mkdir manjaro_root && sudo mount /dev/sda11 manjaro_root
    

    今Manjaroのルートディレクトリが~/manjaro_root

  2. お気に入りのエディタを使用してファイルを編集しますmkinitcpio.confnanoこれは単なる例であり、詳細は説明しません)。

    sudo nano ~/manjaro_root/etc/mkinitcpio.conf
    

    行を見つけて、関連するHOOKSフックが含まれていることを確認してください。

    HOOKS="shutdown usr fsck"
    

    重要:すでに存在するフックを削除しないでください。そこに上記の内容を追加するだけです。たとえば、最終結果は次のとおりです。

    HOOKS="base udev autodetect sata filesystems shutdown usr fsck"
    
  3. /usrpassnoを0としてマークします/etc/fstab。これを行うには、manjaro_root/etc/fstabこの/usr行を開いて見つけます。この例ではと仮定します/dev/sda12。ただし、システムにあるものを使用してください。 「パス」番号は/etc/fstabアイテムの最後のフィールドです。したがって、線が次のようになっていることを確認する必要があります。

    /dev/sda12  /usr  ext4  rw,errors=remount-ro     0      0
                                                            ^
                             This is the important one -----|
    
  4. 新しい初期化イメージを作成します。これを行うには、/usrManjaroのディレクトリもマウントする必要があります。

    sudo mount /dev/sda12 ~/manjaro_root/usr
    

    私はArchの経験があまりないので、必要ないかもしれません(おそらくmkinitcpio実行できませんchroot)。ただし、安全のために環境を設定してください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
    

    ~/manjaro_root/これで実際にはchroot環境になります/。これで、新しい初期化イメージの作成に進むことができます。

    mkinitcpio -p linux
    
  5. やめるchroot

    exit
    
  6. 更新してくださいgrub.cfg(もう一度言うが、実際には必要ないかもしれません)。

    sudo update-grub
    

それでは、再起動してManjaroで再起動してみてください。


1mkinitcpio「フック」は、生成される初期化イメージに何を追加する必要があるかを示す小さなスクリプトです。

おすすめ記事