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/

関連情報