タイトルが文字数制限で書けなかった、、、書きたかったタイトルはこれ

 

「ラズパイをoverlayfsでROM化する際に、何で /boot/config.txt に initramfs initrd.gz 」と書くのか考えてみたです。

 

ROM化というのは、

ラズパイの起動用マイクロSDに書き込みを行わないようにして、電源ブツ切り対応にしたり、マイクロSDの書き込み回数制限(1000回とか)に達しないようにする技の事です。

(詳しくはググってください)

 

このROM化の方法の1つに、overlayfs方というLinux純正機能を使う方法があります

(〃)

 

このoverlayfs方をラズパイに適用する時、/boot/config.txtの最終行に

initramfs initrd.gz 

と書くのですが、トラブった際に理由が知りたくなり、なんとなくわかったのでここに書き残しておきます

 

------------

initramfs initrd.gz  の直接的な意味は、

ラズパイOS(Linux)起動のため

gz形式で圧縮された initrd.gzというファイルをrootfsという一時的なメインメモリ上のRAMDisk読み込んで、initファイルを実行してLinuxを起動するというコマンドになります。

 

(ubuntuとかだと、grubがやっている事。ラズパイはlinuxとしては特殊な起動方法で行われます。あのマイクロSD内に なぜか fat32フォーマットされた領域があり、biosがそこを /boot として認識してブート動作します。詳しくはググってください)

 

そこで思うわけです。

 

何でオリジナルの /boot/config.txtにはinitramfs initrd.gz が無いのにブート出来るのかと。

無いとブートできないじゃないか と。

 

調べたところ、

どうやら、Linuxカーネルはビルドされる際、デフォルトのinitramfsがカーネルに埋め込まれており、指定しなければこれが呼ばれるようです。

ラズパイはこの仕組みをつかって、initramfs無指定でもブートしていると分かりました。

 

---------------

あと、overlayfsでROM化する手順に

git clone https://github.com/josepsanzcamp/root-ro.git

でroot-roを取ってきて、
 
次に

rsync -va root-ro/etc/initramfs-tools/* /etc/initramfs-tools/

で実行中の  /etcに同期して

mkinitramfs -o /boot/initrd.gz

で、initramfs を /boot/initrd.gz に作るという流れがあるのですが。
 
 
この流れ的に、作る/boot/initramfs.gzには /etc/initramfs-toolsが含まれる(= /etc 配下もmkinitramfs対象)かどうがを確認しました。
 
結論はYes
 

調査の結果、initramfs には

bin  conf  etc  init  lib  lib64  run  sbin  scripts  付近が入っている模様なので、/etc/initramfs-tools/ は無事
/boot/initrd.gzに詰め込まれています
 
 
 
なぜ /boot/config.txt に initramfs initrd.gzと書くのかについてはスッキリしました。
誰かのスッキリのお手伝いが出来たなら幸いです。
 
 
が、
私のトラブルはまだ解決してないので、モヤモヤしたまま今日は寝ます
。。。
 
※いろいろ間違えてたらすみません&教えてください