isolinuxに基づいてカスタムAlpineイメージを構築しています。デフォルトでは、rootfsを圧縮してoverlayfsとしてマウントします。
ブートローダが正常に動作し、カーネルがロードされますが、initramfsで停止しました。以下があるとしましょう。
#!/bin/sh
export PATH=/sbin:/usr/sbin:/bin:/usr/bin
/bin/busybox --install -s
rescue_shell() {
echo "Something went wrong. Dropping you to a shell."
#/bin/busybox --install -s
/bin/sh || exec /bin/busybox sh
}
mount -t sysfs sysfs /sys
mount -t proc proc /proc
mkdir -p /dev/pts
mount -t devtmpfs -o exec,nosuid,mode=0755,size=2M devtmpfs /dev 2>/dev/null \
|| mount -t tmpfs -o exec,nosuid,mode=0755,size=2M tmpfs /dev
[ -c /dev/ptmx ] || mknod -m 666 /dev/ptmx c 5 2
[ -d /dev/pts ] || mkdir -m 755 /dev/pts
mount -t devpts -o gid=5,mode=0620,noexec,nosuid devpts /dev/pts
# shared memory area (later system will need it)
[ -d /dev/shm ] || mkdir /dev/shm
mount -t tmpfs -o nodev,nosuid,noexec shm /dev/shm
/bin/sh
# other code left for simplicity
したがって、一度入力すると、ロードされたモジュールが/bin/sh
なく、特にブロックデバイスの場合は、モジュールを取り付けてから圧縮画像を抽出してからオーバーレイを取り付ける必要があります/dev/sda
。/dev/sr0
/ proc / partitionsを一覧表示すると、デバイスのみが提供されます。ram[0-15]
これは起動後にRAMにロードされるため意味があります。
もしそうなら、私の質問は、利用可能なハードウェアに基づいてデバイスを検出する方法があるかどうかです。私も試してみましたが、mdev
まだブロックデバイスを取得できません。そうですmdev.conf
。テストはVirtualBoxで行った。ありがとうございます。
答え1
sysfsインターフェイスを介して公開されているモダリアを使用して運を試すことができます。
例を見るhttps://patchwork.openembedded.org/patch/148854/これは次のことを示します。
echo "/sbin/mdev" > /proc/sys/kernel/hotplug
mdev -s
find /sys/ -name modalias -print0 | xargs -0 sort -u -z | xargs -0 modprobe -abq
私が直接テストしたわけではありません。また、これはサポートされていない可能性があるBusyBox modprobeを使用しているようには見えません。それでも、初期のinitramfsがどのように見えるか-ab
を確認する価値があります。/sys
モダリアへの追加リンク: