最初の起動時に拡張ファイルシステムを一時的に無効にします


13

Raspbian Liteに基づいて、正しいロケール、タイムゾーンなどで既に構成されている社内Raspberry Piイメージを構築したいと思います。残念ながら、Raspbianイメージの現在のリリースでは、ファイルシステムのサイズが自動的に変更され、再起動します。

サイズ変更が発生しないようにすることで、ファイルシステムのサイズを小さくする手間を回避したいと思います。自動ファイルシステムのサイズ変更を一時的に無効にするなど、書き込み後に画像を編集するにはどうすればよいですか?

効果を明確にするために編集すると、元に戻せるはずです。つまり、カスタマイズしたイメージを最初の起動時に拡張する必要があります。


これは理想的な解決策ではないかもしれませんが、このような問題が発生しない小さなカード4GBを使用することを検討しました。
スティーブ

2
興味深いアイデア..小さなカードに書き込み、サイズ変更を効果的に制限します。私は直接的な解決策を好むが、これはまともな選択肢です。ありがとう
patricktokeeffe

2
それはかなり面倒です。これはraspi-config、最初のブート時に実行される方法で簡単な自己修復ブートスクリプトを介して行われ、簡単に無効にできると確信しています。一見できますが、新しい画像をダウンロードする必要があります。最後の画像は5月のものです。数時間後にもう一度確認してください。
goldilocks

回答:


13

Raspbianでは、これに責任を持つ2つの部分からなるメカニズムがあります。おそらく、最良のアイデアは、有効になっている場合は両方の部分を処理することです。

1つ目は、オリジナル/boot/cmdline.txtにこれが含まれていることです。

init=/usr/lib/raspi-config/init_resize.sh

ルートパーティション上のそのパスを持つスクリプトを参照します。これは、起動時の初期化プロセスとして使用されます。そのビットがないと、デフォルトでカーネルに組み込まれた値になります/sbin/init。これは、Raspbianではに対するシンボリックリンク/lib/systemd/systemdです。

の部分を削除することによりcmdline.txt、システムは正常に起動するはずです。

このスクリプトが実際に行うのは、SDカードのパーティションのサイズを変更することです。これは、パーティション内のファイルシステムのサイズ変更とは異なるプロセスであり、1が次に起こります。

発生する方法は、システムがすぐに正常にリブートされ(つまり、systemd経由)、init.dスクリプトが早期にトリガーされるように設定されていることです。これは2番目のパーティションから削除する必要があります。

/etc/init.d/resizefs_once

そして、それへのシンボリックリンクも削除する必要があります:

/etc/rc3.d/S01resizefs_once

必要に応じて、後で使用するためにコピーを保持raspi-configできますが、再度作成することができます(raspi-configシェルスクリプトに埋め込まれています)。実際に実行された場合、自身を削除するため、再び発生することはありません。

また、新しくサイズ変更されたパーティションのファイルシステムのサイズを変更します。

1つまたは他の部分のみが発生した場合、害はありません。最初のケースでは、拡張パーティションを満たさないファイルシステムになりますが、2番目のケースでは、ファイルシステムがすでにパーティションを埋めているため、何も起こりません。

後でraspi-configファイルシステムを拡大するために使用する場合、パーティションのサイズをすぐに変更してから、initスクリプトを設定します(前述のとおり)。

cmdline.txt最初のパーティションの編集は、VFATパーティションであるため、どのコンピューターでも簡単です。init.dファイルを削除するには、ext4ファイルシステムにアクセスして編集できるシステムが必要です。

代わりに、両方のタスクは、カードを書き込む前に画像ファイル自体に対して実行できます。GNU / LinuxシステムでRaspbianイメージをマウントおよび変更するには、こちらを参照してください。あるWindows用の並列Q&Aは

これもリバーシブルですが、最初の部分には2番目の部分の自動ステージングが含まれていないため、上記のようにメカニズムの両方の部分を戻す必要があります。


  1. そのスクリプトからのエラーメッセージは、ルートファイルシステムのサイズ変更に失敗したと主張することにより、これらの用語を間違いなく混乱させますが、実際に失敗したのは、ルートファイルシステムが存在するパーティションのサイズ変更です。一方を実行しても、もう一方は自動的に実行されません。

1
コメントは詳細なディスカッション用ではありません。この会話はチャットに移動さました
ガニマ

goldilockの無効化の@ init=/usr/lib/raspi-config/init_resize.shから/boot/cmdline.txtのubuntuの作品、あまりにも合わさると、すべて自身で十分なようです。4GBのUbuntuイメージを32GBのSDカードにフラッシュし、パーティションサイズを元のイメージサイズに保持しています。また/etc/init.d/resizefs_once/etc/rc3.d/S01resizefs_onceubuntu mateで最初にブートした後も存在しません。
17

確認のため、cmdline.txtand init.drc3.dfileおよびlinkの両方を復元すると、次回の起動時にすべてのサイズを変更できるようになりますraspi-configか、それとも手動で実行して実行しますか?
オックスウィビ

@Oxwiviはい、そうです。私はこの投稿全体を明確にし、最後にそれについて明示的なコメントをしました。
goldilocks

はい、ありがとうございます。また、IDKにはどのバージョンがありますが、少なくとも最新バージョンでは、外部で言及したサイズ変更スクリプト参照が含まれていませんcmdline.txt。しかし、使用してRaspbianイメージを起動しましたsystemd-nspawnが、エラーログが削除された後、サイズを変更しようとしましたcmdline.txt
オックスウィビ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.