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-remove
4GBのデータを出力したかったので、それを許可するかどうかはわかりませんでした。
最善の進行方法の提案がありますか?
編集:私もこれを試してみました、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端末で:
必要なファイルシステムのマウント
mkdir /mnt/debian
mount /dev/sda2 /mnt/debian
cd /mnt/debian && mkdir -p boot/efi
mount /dev/sda1 /mnt/debian/boot/efi
mount --types proc /proc /mnt/debian/proc
mount --rbind /sys /mnt/debian/sys
mount --make-rslave /mnt/debian/sys
mount --rbind /dev /mnt/debian/dev
mount --make-rslave /mnt/debian/dev
mount --bind /run /mnt/debian/run
mount --make-slave /mnt/debian/run
- 任意に選択できる:
swapon /dev/sda3
- ネットワーキングを有効にする:
cp --dereference /etc/resolv.conf /mnt/debian/etc/
上記のいくつかは失敗する可能性があります。ルート図最小インストーラで使用されます。その場合は、ディレクトリが存在しないというエラーを無視してください。
続ける:
共有メモリの再生成
test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm
chmod 1777 /dev/shm /run/shm
これで必要なマウントが作成され、chroot
修理を進めることができます。
Chroot 入力
chroot /mnt/debian /bin/bash
source /etc/profile
export PS1="(chroot) ${PS1}"
説明する
これでメッセージが表示され、(chroot) root@debian #
回復を完了できます。あなたのCannot create /dev/null
エラーは、必要なファイルシステムステップ(/dev
LiveCDで「借りる」)で手順6と7を実行していないために発生したと思います。バラよりバインドマウントについて学ぶ詳細については、簡単に言う--rbind
と、再帰的バインディングを使用すると、あるファイルシステムの外部のディレクトリを、そのサブディレクトリを含む別のファイルシステム内に「接続」することができます。上記のリストでは、chrootに、およびを/sys
効果的に/dev
「接続」します。/run
を使用する--rslave
か再帰的な依存関係今、chroot内のディレクトリとサブディレクトリを変更し、chrootの外側の変更を維持することで、両方のパーティを同期状態に保つことができます。システムはリカバリスティック/CDにあるため、変更は再起動後も保持されませんが、再起動前にマウント解除および同期されるため、chrootで行われます。
答え2
エラーは次のとおりです。
cannot create /dev/null: Directory nonexistent
つまり、作成するディレクトリ/dev/null
がないため、作成できません。/dev/
存在する。
このディレクトリには深刻な問題があります/dev/
。