initramfsに/sysを埋める方法は?

initramfsに/sysを埋める方法は?

Debianカーネルを使用してオペレーティングシステム(Linuxカーネル)を起動しようとしているので、initramfsを使用する必要があります(すべてがモジュールとしてビルドされるため)。しかし、initramfsで起動した後、/sys/blocksを次に埋めないようです。

# mdev -s

デバイス (/dev/sd[az][0-9]) で開発者を入力できません。

それでは、「/sys」をどのように正しく入力する必要がありますか?私はqemuを使ってシステムを起動し、元の画像を「hd」として使用しています。

注:
*これはDebian(または他のディストリビューション)ではありません。私のinitramfsは最初から作成されました。
*私はmdevを使用しています。
* /initスクリプトは次のとおりです。

mount -n -t proc none /proc
mount -n -t sysfs none /sys
mkdir /.root
mdev -s
mount -n -t $rootfstype $device /.root
umount /proc
umount /sys
exec switch_root /.root $init $@

編集:私の質問いいえ開発者を記入してください。必要に応じて手動で実行できます。 「/sys」を見て、「mknod」を使ってください。問題は、「/sys」に「/sys/block/sd[az][0-9]」デバイスがないことです。

情報:https://bin.privacytools.io/?d50e11eea81d8158#1ga51UE+NI6nX49SbkdjGitXOyZpalWUu2I3BuEMx+o=
(qemu呪いからコピーしたときに何かが逃した可能性があります)

ベストアンサー1

を使用するには、カーネル構成にコマンドを追加してから、次のコマンドを実行する必要がありますmdevCONFIG_UEVENT_HELPER=ymdev -s

echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

源泉:Gentoo Wiki

デフォルトのDebian 10カーネルにはCONFIG_UEVENT_HELPER設定がないため、mdev使用できません。代わりに、次のようにすることCONFIG_DEVTMPFS=yができます。

mount -n -t proc none /proc
mount -n -t sysfs none /sys
mount -n -t devtmpfs none /dev
mkdir /.root
# this would be a great place to run "fsck -C0 $device" if required by $rootfstype
mount -n -t $rootfstype $device /.root
umount /proc
umount /sys
umount /dev
exec switch_root /.root $init $@

...実際のルートファイルシステムへの移行が完了したら、devtmpfsファイルシステムを再マウントできます。

mount -n -t devtmpfs none /dev

おすすめ記事