squashfs ルートで起動可能なシステムを作成する方法

squashfs ルートで起動可能なシステムを作成する方法

私の目標は、必要なソフトウェアがロードされたカスタマイズされたルート ファイル システムを取得できるようにすることです。これまで、debootstrap と chroot を使用して圧縮ファイル システムを作成し、システムに必要なソフトウェアをインストールしてきました。

私が今直面している問題は、システムを起動するたびに、chroot で設定されたユーザー アカウントが機能しないということです。最初の起動ではすべてうまくいきますが、2 回目の起動ではログインできません。これは私にとって不可解なことです。

誰か理由や、調べ始める場所を知っていますか?

答え1

squashfs ファイルシステムで動作するシステムを取得するには:

sudo apt-get install live-boot live-boot-initramfs-tools extlinux
sudo update-initramfs -u

ブートストラップされた、または実行中の Ubuntu ファイルシステムから、必要なパッケージを含む squashfs ファイルを作成します。 https://help.ubuntu.com/community/LiveCDCustomizationFromScratchビルド用のデブートストラップされたシステムを作成するための優れた手順が提供されています。ターゲット ドライブを ext2/3/4 でフォーマットし、ブート可能フラグを有効にします。ターゲット ドライブにフォルダー レイアウトを作成し、extlinux をインストールします。

mkdir -p ${TARGET}/boot/extlinux ${TARGET}/live
extlinux -i ${TARGET}/boot/extlinux
dd if=/usr/lib/syslinux/mbr.bin of=/dev/sdX #X is the drive letter
cp /boot/vmlinuz-$(uname -r) ${TARGET}/boot/vmlinuz
cp /boot/initrd.img-$(uname -r) ${TARGET}/boot/initrd
cp filesystem.squashfs ${TARGET}/live

次の内容で ${TARGET}/boot/extlinux/extlinux.conf を作成します。

DEFAULT Live
LABEL Live
  KERNEL /boot/vmlinuz
  APPEND initrd=/boot/initrd boot=live toram=filesystem.squashfs
TIMEOUT 10
PROMPT 0

これで、ターゲット ドライブから圧縮されたシステムを起動できるはずです。

答え2

この質問は OP によって解決されました:

うまく動作しました。live-boot と live-boot-initramfs-tools を使用して、ブートローダー用の initrd と extlinux を生成しました。うまく動作しました。

関連情報