
私は、特殊なカーネルとカーネル モジュールを必要とする特殊なハードウェアを搭載したラップトップ用に、小さなレスキュー パーティション (他のすべてのシステム パーティションとストレージ パーティションの後に約 800 MB の空き領域) を作成しようとしています。そのため、Clonezilla Live や GParted Live などの標準のレスキュー ツールはあまりうまく機能しません。パーティションが小さすぎて、構築したいものに必要なモジュールとソフトウェアを含めることができず、システムの大部分を圧縮して実行時に RAM にロードする必要があります。また、 に頼るのではなく、システムを完全に抽出しsquashfs
、パーティションで許可される範囲でシステムに加えられた変更を保存する機能も必要です。Ubuntu 20.04 をベース システムとして使用し、この目的のために次のスキームを考案しました。
- で初期システムを構築した後
chroot
、実行時に解凍されたシステムファイルとユーザーファイルを格納する/ram
ためのマウントポイントとして空のフォルダを作成し、すべてのシステムファイルフォルダとユーザーファイルフォルダ( 、、、、、、)を移動しtmpfs
ます。home
usr
var
opt
etc
等) を にコピーし/ram
、それぞれを へのシンボリック リンクに置き換えます/ram/$dir
。/ram
を として圧縮し/ram.tar.gz
、特殊なマウント ポイント (dev
、sys
、run
、tmp
、proc
) とboot
を 上にそのまま残しますrootfs
。 を削除し、 をパーティションに/ram/*
書き込みます。rootfs
- 起動時にカーネルとが
initrd
ロードされた後、 を事前マウントし、にrootfs
マウントして、の内容を に抽出します。これは、 を root として置き換える前に実行する必要があります。そうしないと、 は圧縮アーカイブをマウントして抽出するために必要なユーティリティにアクセスできません。tmpfs
/ram
/ram.tar.gz
/ram
rootfs
initramfs
rootfs
/ram
- マウントし
rootfs
て起動を続行します。 /ram.tar.gz
シャットダウン時に としてバックアップし、/ram.tar.gz.bak
変更された/ram
を に圧縮します/ram.tar.gz
。 これは を使用して実現できますsystemd
。
明らかに、ステップ 4 で問題が発生する可能性があるため、ステップ 2 ではバックアップの整合性を含め/ram.tar.gz
、失敗した場合はバックアップをロードする必要がありますが、これはスクリプトに含めるいくつかの追加コマンドでありinitramfs-tools
、私の質問の範囲を超えています。質問は次のとおりです。
を変更せずに/usr/share/initramfs-tools/init
、ステップ2を実行するためのスクリプトを作成するにはどうすればよいでしょうか/etc/initramfs-tools/scripts
? コマンドは次のように簡単です。
mount -t tmpfs -o $OPTIONS none /ram
tar xvzf ram.tar.gz
PREREQ
しかし、スクリプトをどのフォルダーに含めるか (init? local? top? bottom? premount?)、またスクリプト自体のヘッダーをどのように操作するかについては、少し迷っています。
答え1
非常に簡単でした。作成:
/etc/initramfs-tools/scripts/local-bottom/ramfiles
#!/bin/sh
set -e
PREREQ=""
prereqs()
{
echo "${PREREQ}"
}
case "${1}" in
prereqs)
prereqs
exit 0
;;
esac
mount -t tmpfs -o size=100% none ${rootmnt}/ram
tar xvzf ${rootmnt}/ram.tar.gz -C ${rootmnt}
それから
sudo chmod +x /etc/initramfs-tools/scripts/local-bottom/ramfiles
sudo update-initramfs -u