Debian 10 update-initramfs 실패: /dev/null을 생성할 수 없습니다.

Debian 10 update-initramfs 실패: /dev/null을 생성할 수 없습니다.

chroot를 통해 복제 부팅 수정을 시도했습니다(새 프로세서, 부팅 시 중단됨). liveUSB로 부팅하고 파일 시스템을 /mnt에 마운트합니다. 실행하면 update-initramfs -uv거의 끝까지 계속 진행하다가 다음 오류와 함께 실패합니다.

...
Adding module /lib/modules/4.19.0-25-amd64/kernel/drivers/infiniband/hw/mlx4/mlx4_ib.ko
Adding module /lib/modules/4.19.0-25-amd64/kernel/drivers/infiniband/core/ib_uverbs.ko
Adding module /lib/modules/4.19.0-25-amd64/kernel/drivers/infiniband/hw/mlx5/mlx5_ib.ko
Adding config /etc/initramfs-tools/conf.d/resume
/usr/sbin/mkinitramfs: 333: /usr/sbin/mkinitramfs: cannot create /dev/null: Directory nonexistent
E: no ldd around - install libc-bin
Removing /boot/initrd.img-4.19.0-25-amd64.dpkg-bak
update-initramfs: failed for /boot/initrd.img-4.19.0-25-amd64 with 1.

나는 이런 일이 일어나는 것을 본 적이 없으며 최선의 진행 방법을 모릅니다. /dev읽기 전용 디렉터리 가 아닌가요 ? 나는 달리기를 시도했지만 apt auto-clean아무것도 해결하지 못했습니다. 나는 그것을 실행하려고 했지만 apt auto-remove4GB의 데이터를 출력하고 싶었고 그렇게 하도록 허용할지 확신이 없었습니다.

최선의 진행 방법에 대한 제안이 있으십니까?

편집: 나는 또한 이것을 시도했고 udevadm trigger --sysname-match=null이것이 나에게 running in chroot, ignoring request. 나는 mknod -m 0666 /dev/null c 1 3내가 일반적으로 들었던 것을 시도했다 no such file or directory. 확실히 그것을 좋아할 것입니다.

EDIT2: 관련 파티션을 마운트한 방법은 다음과 같습니다.

root@debian: ~ # mount /dev/sda2 /mnt
root@debian: ~ # mount /dev/sda1 /mnt/boot/efi/
root@debian: ~ # mount --bind /proc /mnt/proc
root@debian: ~ # mount --bind /sys /mnt/sys
root@debian: ~ # mount --bind /dev /mnt/dev
root@debian: ~ # mount --bind /etc/resolv.conf /mnt/etc/resolv.conf
root@debian: ~ # chroot /mnt/ /bin/bash

스왑이 있긴 sda3한데 굳이 그럴 필요는 없을 것 같아요.

답변1

이것이 도움이 될 수 있습니다

재부팅하고 수행한 작업을 취소한 다음 Debian Live 터미널에서:


필요한 파일 시스템 마운트

  1. mkdir /mnt/debian
    • mount /dev/sda2 /mnt/debian
  2. cd /mnt/debian && mkdir -p boot/efi
    • mount /dev/sda1 /mnt/debian/boot/efi
  3. mount --types proc /proc /mnt/debian/proc
  4. mount --rbind /sys /mnt/debian/sys
  5. mount --make-rslave /mnt/debian/sys
  6. mount --rbind /dev /mnt/debian/dev
  7. mount --make-rslave /mnt/debian/dev
  8. mount --bind /run /mnt/debian/run
  9. mount --make-slave /mnt/debian/run
  10. 임의로 선택할 수 있는:swapon /dev/sda3
  11. 네트워킹 활성화:cp --dereference /etc/resolv.conf /mnt/debian/etc/

위의 내용 중 일부는 실패할 수 있습니다.루트 다이어그램최소 설치 프로그램에서 사용됩니다. 그렇다면 디렉터리가 존재하지 않는다는 오류를 무시하세요.

계속하다:

공유 메모리 다시 생성

  1. test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
  2. mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm
  3. chmod 1777 /dev/shm /run/shm

이제 필요한 마운트가 생성되었으며 chroot수리를 진행할 수 있습니다.

Chroot 입력

  1. chroot /mnt/debian /bin/bash
  2. source /etc/profile
  3. export PS1="(chroot) ${PS1}"

설명하다

이제 메시지가 표시되고 (chroot) root@debian #복구를 완료할 수 있습니다. 귀하의 Cannot create /dev/null오류는 필수 파일 시스템 단계( /devLiveCD에서 "빌려야" 함) 에서 6단계와 7단계를 수행하지 않았기 때문에 발생했다고 생각합니다 . 바라보다바인드 마운트에 대해 알아보기자세한 내용은 간단히 말해서 --rbind또는재귀적 바인딩를 사용하면 한 파일 시스템 외부의 디렉토리를 해당 하위 디렉토리를 포함하여 다른 파일 시스템 내부에 "연결"할 수 있습니다. 위 목록에서 우리는 chroot에 /sys, 및 를 효과적으로 /dev"연결"합니다 . /run를 사용 --rslave하거나재귀적 종속성, 이제 chroot 내의 디렉터리와 하위 디렉터리를 변경하고 chroot 외부의 변경 사항을 유지하여 두 당사자를 동기화 상태로 유지할 수 있습니다. 시스템이 복구 스틱/CD에 있기 때문에 변경 사항은 재부팅 후에도 유지되지 않지만 재부팅하기 전에 마운트 해제 및 동기화되므로 chroot에서 수행됩니다.

답변2

오류는 다음과 같습니다.

cannot create /dev/null: Directory nonexistent

즉, 생성할 디렉터리 /dev/null가 없기 때문에 생성할 수 없습니다./dev/존재하다.

이 디렉토리에는 심각한 문제가 있습니다 /dev/.

관련 정보