必須オプションでコンパイルされたバックポート6.1 Linuxカーネルを持つDebian 11サーバーのext4で、大文字と小文字を区別しないファイルシステム機能(casefold)を有効にする必要があります。
サーバーには2GBのスワップパーティションとファイルシステム用の大規模なext4パーティションがあり、このパーティションでも起動します。物理/仮想ホスト自体ではないルートとしてのみSSHアクセス権があるため(仮想)、USBスティックまたはCDROMメディアにアクセスできません。
ウォレット機能を有効にする最速の方法は何ですか? une2fsはファイルシステムがすでにマウントされているため、これは望ましくありません。
アイデア:スワップ領域を削除し、その中に小さな回復システムをインストールし、その回復システムで再起動し、ルートパーティションのファイルシステムオプションを変更し、アクティブパーティションで再起動し、スワップ領域を復元します。ただし、これを達成するには、必須のune2fsコマンドを実行する追加のLinuxシステムを準備する必要があります。
もっと良い方法がありますか?再起動後に回復システムを使用し、必要なネットワーク設定を事前設定できますか?
答え1
@MarcusMüllerのおかげでこれを行うことができました。秘密はinitrdイメージにtune2fsを追加し、起動中に呼び出すことです。
スクリプトの生成initramfs-utils
:
cat > /usr/share/initramfs-tools/scripts/local-premount/ext4_casefold << 'EOF'
#
# ext4_casefold
#
# initrd script to add the casefold option to the root filesystem
#
DEVICE=/dev/sda2
prereqs()
{
. /usr/share/initramfs-tools/hook-functions
copy_exec /usr/sbin/tune2fs usr/sbin/tune2fs
}
case $1 in
# get pre-requisites
prereqs)
prereqs
exit 0
;;
esac
echo "Adding casefold option to $DEVICE"
sleep 5
/usr/sbin/tune2fs -O casefold $DEVICE
echo "If everything went well, we added the casefold option to $DEVICE"
sleep 5
EOF
実行可能にする:
chmod a+x /usr/share/initramfs-tools/scripts/local-premount/ext4_casefold
initrd を再構築します。
update-initramfs -u
RAMディスクの内容に実際にtune2fsが含まれていることを確認してください(オプション)。
INIT_RD_IMAGE=initrd.img-6.1.0-0.deb11.7-amd64
rm -rf /root/initrd
mkdir /root/initrd
cp /boot/$INIT_RD_IMAGE /root/$INIT_RD_IMAGE.gz
gunzip /root/$INIT_RD_IMAGE.gz
cd /root/initrd
cpio -id < /root/$INIT_RD_IMAGE
再起動してお楽しみください!
答え2
私はあなたのアプローチが好きです。メインシステムのデータを変更する必要がないので、きれいです。
そして、そうです。tune2fs
大きく実行したい場合は、最も簡単な解決策は実行中のLinuxで実行することです。したがって、デフォルトのファイルシステムがマウントされていない場合に実行できる実際の方法はありません。
tune2fs … /dev/disk/by-partuuid/…
私はあなたのネットワーク設定が意味がないと思います。あなたは、システムで何をしたいのかを正確に知っています。 SSHシェルを提供するためにネットワークを事前設定する方が、自動化されたスクリプトで実行するよりも優れています。通常のシステムを起動するのにかかる時間) 必要な作業) はより困難です。
今、2つのオプションがあります。
- あなたの Debian は現在以下を使用しています。初期化プログラム含むファイルシステムの初期化(私は希望する)
- しかし、実際にはそうではありません。
最初のケースでは、tune2fs
必要な呼び出しのみを含めるようにinitrd生成プロセスを変更し、新しいinitrdを作成して起動するのがおそらく最も簡単な方法です。 initrdはビルドを避けたいものです:カスタマイズされた本格的なLinuxシステム(これは、ルートファイルシステムをマウントして基本的な起動プロセスを続行する前にLinuxディストリビューションがシステムを初期化する方法です)。とにかく、Debianはあなたのためにこれを作りました:)
認めなければなりません。私がDevianoid Linuxで同様のことをしてから10年(またはそれ以上)が過ぎたので、私はわかりません。どのように;Debianの文書(悲しいことに少し不足していて古いようです)を確認してを参照してください/etc/mkinitrd
。
2番目のケースでは、あなたのアプローチは合理的なようです。
答え3
以前にリモートルートファイルシステムを変更するために使用した方法は、ラムディスクに軽量OSを設定してから(たとえば、aをインストールしてtmpfs
からdebootstrap
pingすることによって)、対応するpivot_root
RAMディスクとして実行することです。いくつかのクリーンアップでは、ルートファイルシステムをアンマウントして変更を続行できます。これらの操作はすべて、いつでもシステムを再起動することなくリアルタイムで実行できます。もちろん、システムをクリーンな状態に戻すには、最終的な再起動を実行することをお勧めします。
この方法を使用すると、プロセス中にリモート接続を維持し、変更時に発生する可能性がある問題を解決できるという利点があります。再起動する前に、変更されたファイルシステムをマウントしてみることもできます。
pivot_root
非常に包括的なユーザーガイドがあります。この同様の質問に対する答え。この答えは、既存のシステムの重要な部分をRAMディスクにコピーします。これにより、SSHアクセスやその他のツールを簡単に維持できます。