独自のinitrdを構築するときに/ devディレクトリをどのように入力しますか?

独自のinitrdを構築するときに/ devディレクトリをどのように入力しますか?

initrdについて学びたいです。私はフォローしましたこのチュートリアル最初から独自のinitrdを作成し、そこにbusyboxをインストールしました。その後、isolinuxを使用して.isoを作成してvirtualboxでテストできました。良い結果!

busyboxの基本コマンドがあるので、ファイルシステムをマウントしたいと思います。ただし、/ devディレクトリはチュートリアルをたどりながら作成したいくつかのファイルを除いてほとんど空です(sdaなし)。私はudevについて学び、これが私に必要なものだと思います。しかし、どのように進むべきかわかりません。

udevから最新のソースコードを取得してコンパイルしてinitrdに追加する必要がありますか?それでは、私の初期化スクリプトで/bin/udevなどを呼び出しますか?それとも/devディレクトリを埋める別の/より良い方法はありますか?

編集する:私が行ったことに関する追加情報とアップデートです。

  • 仮想ボックスですべてをテストしました。私はVirtual Boxにubuntu Minimalをインストールし、initrdで.isoを作成し、VirtualBoxのISOから起動しました。
  • 私は/lib/modulesvmlinuzとdebian-businesscard.isoのファイルを使って、以前にリンクされたチュートリアルに従って作成したinitrdにコピーしました。
  • カーネルはCONFIG_DEVTMPFS=y
  • /devtty0-tty63や他のいくつかのデバイスなど、いくつかのデバイスがありますが、sda / hdaはありません。
  • lspci -k現在のオペレーティングシステムと仮想ボックスで実行して、どのモジュールが使用されているかを確認します。モジュールSATA Controllerとして使用されるそうです。ahci
  • 実行すると、modprobe -v ahci多くの「不明なシンボル:ata_some_stuff」について文句を言いますがSCSI Subsystem initializedATA-6: VBOX HARDDISKなどを返しますDirect-Access ATA VBOX HARDDISK。ただし、ハードドライブデバイスがまだ見つかりません/dev

私の現在の/init/スクリプトは次のとおりです。

#!/bin/ash
mount -t devtmpfs none /dev
mount -t proc /proc /proc
mount -t sysfs none /sys
modprobe -v ahci
echo "Hello world"
exec /bin/ash --login

何が間違っているのか、どうすればいいのか知っている人はいますか?

ベストアンサー1

Gilesの答えは正確ですが、昔ながらです:-).注目すべきもう一つのことは、(何よりも用語についてもっと詳しく見ることです)、リンクされたガイドがinitrdではなくinitramfsを作成する方法のガイドラインであることです。どちらも同様で同じ目的を提供しますが、画像を保存して読み込む方法は異なります。

とにかく、あなたの質問に対する答えは実際には非常に簡単です。

  1. devtmpfsカーネルで有効( CONFIG_DEVTMPFS=y)
  2. mount -t devtmpfs none /devスクリプトで最初に実行しますinit

それはすべてです。 devtmpfsは/devudevのように埋められます。/dev(initramfsイメージから)、またはなどを使用して基本を事前に入力する必要さえありません。nullzeroconsole

おすすめ記事