오류: 루트 장치가 성공적으로 설치되었지만 /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은 절대 fsck되지 않습니다.

" - usr 후크를 추가합니다. 루트를 마운트한 후 /usr 파티션을 마운트합니다. 0.9.0 이전에는 /usr이 실제 루트 디렉토리의 /etc/fstab에 있으면 자동으로 마운트되었습니다."

그리고 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 확장에 따라)는 이제 mount 되지 않으면 존재하지 않음을 /usr/bin의미합니다 . 따라서 초기 램디스크에 마운트되어 있는지 확인해야 합니다 . 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.conf( nano이것은 단지 예시일 뿐이므로 자세히 설명하지 않겠습니다).

    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. 하지만 시스템에 있는 것을 사용하세요. "Pass" 번호는 /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 "후크" 는 생성되는 초기화 이미지에 무엇을 추가해야 하는지 알려주는 작은 스크립트입니다 .

답변2

민트에서 할 수 있습니다루트 변경initramfs를 재생성하려면 Manjaro 설치로 이동하세요.

~/foo선택한 디렉터리( ) 아래에 Manjaro 루트 디렉터리를 마운트합니다 . /usr에 파티션을 마운트 ~/foo/usr하고, 부팅이 별도인 경우 부팅도 마운트하세요. 마운트 프로세스 시스템 개발:

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

루트를 변경합니다.chroot ~/foo /bin/bash

설명된 대로위키피디아: "후크는 이미지에 추가될 내용을 설명하는 작은 스크립트입니다." 편집을 통해 /etc/mkinitcpio.confWiki 및 댓글에 표시된 대로 항목 에 usr fsck및 후크를 추가했습니다. initramfs 재생성: (에 기록됩니다 )shutdownHOOKmkinitcpio -p linux/boot

chroot를 종료하고 proc, sys, dev 및 Manjaro 파티션을 마운트 해제한 후 재부팅을 시도합니다.

답변3

Linux Mint용 USB 부팅 장치를 만들고, 2개의 파티션에 모든 데이터를 백업하고, 두려운 sbin/init를 찾을 수 없다는 메시지를 받은 후 다양한 복구 시도를 시도하는 데 약 6시간을 낭비했습니다...

이 문제는 사소한 업데이트 후에 발생했습니다. 시스템이 재부팅되지 않았습니다. sbin 폴더 전체가 신비롭게 삭제되어 복구할 수 없는 것 같습니다. 내가 찾을 수 있는 유일한 의미 있는 조언은 "다시 설치"하는 것입니다.

수정사항(5분 미만!!)은 다음과 같습니다.

  1. 에서 시작하다원래라이브 설치 디스크(이 경우 Cinnamon Mint 17.1),
  2. 파일 탐색기를 루트로 엽니다(폴더를 마우스 오른쪽 버튼으로 클릭하고 "루트로 열기"를 선택하거나 터미널을 열고 "sudo nemo" 입력).
  3. 라이브 설치의 sbin 폴더를 찾으세요.
  4. 결함이 있는 Mint 파티션 마운트(아이콘 클릭)
  5. sbin 폴더에 적용된 권한을 변경합니다(마우스 오른쪽 버튼 클릭, 속성, 권한, 기타, 파일 액세스, 읽기 및 쓰기 - 그런 다음 "동봉된 파일에 권한 적용" 클릭).
  6. 전체 sbin 폴더를 설치 루트 디렉터리(/)에 복사합니다. (여기에는 시스템 "bin", "boot", "home", "usr" 등의 폴더가 위치합니다.)
  7. 재시작

관련 정보