SYSLINUXを使用すると、カーネルイメージと初期ram-disk(initrd)イメージをそこからロードすることにより、FAT16USBスティックから起動できます。
より多くのスペースとより高速なアクセスを得るために、起動後にハードディスクからNTFSパーティションをマウントし、ループバックデバイスを使用してそこからファイルシステムイメージをマウントし、/ homeを置き換えたり、chrootしたりすることができますが、それはその後の方法です起動プロセスにより、システムの更新が不可能になります。
SYSLINUX自体にNTFSパーティションからのfs-imageをrootfsとしてマウントさせる方法はありますか?
または、initrdイメージを変更して、起動プロセスのより早い段階で新しいルートfsをマウントできますか?私はそのイメージをマウントして変更する方法を知っていますが、その中のスクリプトで失われ、いつどのように実行されるのかわかりません。
はい、それは可能です。また、組み込み関数でも機能します。 syslinux.cfg
を編集して、以下を含めます。
LABEL linux
LINUX /boot/vmlinuz
APPEND root=/dev/disk/by-label/data rootfstype=ntfs loop=images/linux_root.img loopfstype=ext4 rw
INITRD /boot/initrd.img
明らかに、カーネルイメージ(vmlinuz
)と初期RAMディスクイメージ(initrd.img
)をSYSLINUXで起動するFATパーティションにコピーする必要があります。 (パスはパーティションルートを基準にしています。)
root=
パラメータは、ルートファイルシステムイメージが存在するデバイスとパーティションを指定します。もちろん、/dev/sda1
表記または/dev/disk/by-UUID/SOMECRYPTYCNUMBER
バージョンを使用することもできます。
rootfstype
は、ファイルシステムイメージが存在するパーティションのファイルシステムを指定します。 NTFSとFATはどちらもすぐにサポートされます。よりエキゾチックなフォーマットの場合は、initrd.img
を編集して、適切なカーネルモジュールを含めてロードする必要があります。
loop=
は、ルートファイルシステムイメージが存在するパーティションのベースを基準にしたルートファイルシステムイメージへのパスを示します。 loopfstype=
はその内部タイプを指定します。明らかに、起動後に/
にマウントされます。イメージがロードされたパーティションは、このフォルダーが存在する場合、自動的に/Host
にマウントされます。 (アトミックにマウントされていない場合、他の場所にマウントすることはできません。ただし、そうである場合は、mount -m
を使用して別のマウントポイントに移動できます。)
システムアップデートによって更新されるたびに、カーネルとFATパーティションのinitrd.img
をコピーして上書きすることを忘れないでください。そうしないと、起動時に奇妙なことが起こる可能性があります。
残念ながら、同じ方法でスワップパーティションを含める方法はありません。そのために実際のパーティションを使用するか、実行中のシステムから起動した後にパーティションをアクティブ化する方法を見つける必要があります。
約を期待してください。 NTFSラッパーを介してマウントされたループデバイスに書き込むための10%のCPUオーバーヘッド。