コンテキスト:
目標: OSをdebian 9+に非破壊的にアップグレードします。理想的には、マシンは新しいOSで再起動するまで稼働し続ける必要があるためです。
したがって、サーバーごとに、次のことを行う予定です(他の提案を歓迎します)。
私の問題は、resize2fsがマウント解除された場合にのみshrinkext4fsを実行できることです。したがって、GRUB2のブートロードシーケンス中に、initrdイメージまたはinitramfsを使用して、マウントされていない/ dev/sda1でresize2fsを呼び出すという考え方です。
静的なresize2fsバイナリとそれを呼び出す(そして他の検証などを行う)シェルスクリプトを含む独自のinitrdイメージを作成しましたが、grub.cfgファイルに正しいエントリを書き込んで作成しようとして問題が発生したようです。 initrdイメージをマウントし、マウントされていない/ dev/sda1でサイズ変更スクリプトを実行します。
だから私の質問は:
/ bin/resize.shスクリプトを含むカスタムinitrdイメージをロードして実行するには(/bin/resize.sh)、どのgrub.cfg menuentryを記述する必要がありますか?
(@ All:申し訳ありませんが、質問に答えるために戻ってこなかったことに気づきました。これまで以上に遅くなりました。ここにあります。)ありがとうございました Bob ところで。
だから、私の解決策は:
私は、大まかに次の手順でinitrdを使用して動作させることができました。
1.initrdイメージファイルを作成します(〜/ initrdで既存のファイルを解凍し、いくつかのファイルを追加します)そして次のように再圧縮します:
debian7-32bits:~/initrd# find . | cpio -o -H newc | gzip -9 > /boot/initrd.img-3.2.0-5-486-resize2fs
2。次のように/boot/grub/grub.cfgにエントリを作成します。
debian7-32bits:~/initrd# menuentry "run_once_resize_fs" { set root='(hd0,msdos1)'; insmod linux grub help kernel initrd; linux /boot/vmlinuz-3.2.0-5-486; initrd /boot/initrd.img-3.2.0-5-486-resize2fs; }
2。次のように/boot/grub/grub.cfgにエントリを作成します。
残念ながら、2年前の別の職場で、起動時にメニューエントリを呼び出すスクリプト(ステップ3.?)がありません。うまくいけば、これはまだ誰かを助けることができます。