[Q5]chrootと/dev
こんなことを考えていた。
今のSmartQ5では、rootfsはinitramfsにあり、そこにinitで/devなどを作り、init.rcで/systemや/dataをmountするなどしている。
それを、init.rcの適当なところでchrootさせることでパーティションを減らせるのではないかと。
やっているのだが、うまくいかない。
socketの作成がうまくいかないのだ。
initの中で、device_init→init.rcのinitセクション実行→start_property_service、の順で行われているため、/devがinitセクション実行中のchrootで消されているからだろう。
ならば、とinitセクション実行後にdevice_initをもう一度呼ぶようにしたけど、だめ。
よくよく見ると、それよりずっと前、一番最初に/devのmkdirなどがあった。
ああ、そうですか。。。
そんなことを考えると、initのしょっぱなでmountとchrootさせてしまえばいいっちゃなかろうか。
そげんあれこれ考えたくないけんね。
だが、mount()が動かない・・・。
考えてみれば当たり前なのだが、/devがないのにmountも何もあったもんじゃない。
/devはどうやっているかというと、rootfsにmkdirしたあと、tmpfsをmountさせているのだ。
かといって、/devを作ってあれこれしたあとにchrootしても、その設定はchroot先の/devには引き継がれないのではないか?
シンボリックリンクさせようかと思ったけど、ネットで見る限りchrootはchroot外へのシンボリックリンクができないようだし。
なんだ、あれこれやって結論は「できない」なのか??
chrootはそういう目的ではなく、緊急リカバリー用に使おうとしているのかなぁ。
とにかくまあ、あんまり簡単にはできなさそうなことがわかったのでいいとしよう。
きれいにやるなら、u-bootのところからSDカードをマウントすることだろうけど、インストーラを何とかしないと手を出せなさそうだから、やめておこう。
さすがに起動しなくなるのは困る。

コメント