Linux ブート ディスクを作成しようとしています (サイズが小さく、ターミナルのみのインターフェイスのため Fennix を選択しました)。ブート ディスクが機能し、Linux が読み込まれ、内部 HDD などをマウントできるため、すべて問題ありません。ただし、メニューは ISOLINUX.CFG を介して機能していますが、各メニュー選択にスクリプトを添付したいです。スクリプトはライブ ディスクから HDD に 2 つのファイルをコピーします。メニューで init= を使用してスクリプトを起動するのに苦労しています。ディスク上のスクリプト ファイルが見つからないようです (アクセスするためにどこに配置すればよいかわかりません。複数のディレクトリを試しました)。
下記にメニューオプションの例を示します
ラベル finnix
メニューラベル インストール アップデート
テキストヘルプ
2つのiniファイルをハードドライブにコピーします
ENDTEXT
カーネル boot/x86/linux init=copy1.bs
追加 initrd=boot/x86/initrd.xz vga=791 nomodeset quiet
起動後に LiveCD からファイルにアクセスする方法と、選択が行われたときにこれらのスクリプト ファイルにアクセスできるようにメニューを更新する方法について、正しい指示をいただける方はいらっしゃいますか。
上記が意味を成すことを願っています。
ありがとう!
答え1
ではisolinux.cfg
、ブート オプションは KERNEL 行ではなく APPEND 行に移動します。したがって、init=copy1.bs
代わりに APPEND 行に移動する必要があります。
また、 このオプションを使用するとinit=
、シェル スクリプトがプロセス #1 として実行されることになります。つまり、複数の仮想コンソールなどを使用して通常の環境を設定する代わりに、その 1 つのスクリプトのみが実行されます。そのスクリプトが終了すると、プロセス #1 が終了するとカーネルがパニック (クラッシュ) します。
Finnix initrd ファイルがどのように構築されているかに応じて、このinit=
オプションを使用すると、実際に何か有用なことを実行する前に、Finnix 起動スクリプトの一部またはすべての機能を複製する必要がある状況でスクリプトが起動される可能性もあります。
代わりに、独自のカスタム ブート パラメータを作成することもできます。ブート パラメータは、/proc/cmdline
カーネルに認識されていない場合でも に/proc/cmdline
表示されます。 を読み取り、そこからカスタム パラメータ値を取得し、それを使用して任意の場所で別のスクリプトを実行する起動スクリプトを作成できます。このアプローチは、標準パラメータを使用するよりもデバッグが簡単かもしれませんinit=
。
Finnix ルート ファイルシステムはfinnix/arch/x86/root.img
ファイル内にあるようです。現時点では完全に分析する時間はありませんが、 Finnix の使用中に CD を取り出せるようにinitrd.xz
、RAM ディスクをセットアップしてその内容をroot.img
そこにロードしているのではないかと思います。
スクリプトをroot.img
ファイル内に取り込むには、イメージ ファイル (squashfs ファイルシステム イメージ) をマウントし、その内容を別のディレクトリにコピーし、そこに独自のファイルを追加してから、コマンドmksquashfs
(squashfs-tools
パッケージ内) を使用して新しいイメージ ファイルを作成します。