● 概要 G3/G3L,X1用の インストールディスクイメージ作成ツール https://users.atmark-techno.com/blog/9492/3612 にある make_install_disk.tar.gz を流用して、Armadillo-640用の"インストールディスクイメージ作成ツール"を作る。 G3/G3L,X1用のツールに入っているbuild.shを改造する。 Armadillo-640用のインストールディスク(SDカード)イメージ install-disk-sd-a640-20190129.img に入っている - カーネルとDTB - ルートファイルシステム - インストールスクリプト をそのまま使う。 ● Armadillo-640用のインストールディスク(SDカード)イメージ loopデバイス、あるいは、実SDカードに書き込むなどして、 インストールディスクイメージの中身を取り出せるようにする。 ※ 作業でルートファイルシステムイメージ抽出のためにファイルを消すので注意! loopデバイスとしてマウントしようとすると、そのままではエラーになってマウントできない。 ※ fsckとresize2fsで修復すればloopマウントできるが、修復方法は割愛。 ここでは、SDカードに書き込んで/tmp/sd にマウントさいれているものとして説明する。 ● ツール用のディレクトリ $ cd ~/work <==== 何でもよいが・・・ $ mkdir make_install_disk $ mkdir make_install_disk/core $ mkdir make_install_disk/core/images ● ブートローダー Armadillo-640用のインストールディスクイメージ install-disk-sd-a640-20190129.img からブートローダーを取り出すことはできないので、 ソース u-boot-a600-v2018.03-at4.tar.gz からビルドする。 その際、 - デフォルト環境変数をSDブートにする https://users.atmark-techno.com/forum/armadillo/3784#comment-6734 - eMMCの環境変数を使わないようにする https://users.atmark-techno.com/forum/armadillo/3784#comment-6735 修正を行う。 ~/work/u-boot-a600-v2018.03-at4/ でビルドしたものとする。 $ cp ~/work/u-boot-a600-v2018.03-at4/u-boot.imx ~/work/make_install_disk/core/ ● カーネルとDTB Armadillo-640用のインストールディスクイメージの /boot/に入っている -rw-r--r-- 1 atmark atmark 27015 1月 29 12:52 a640.dtb -rw-r--r-- 1 atmark atmark 6105312 1月 29 16:04 uImage をルートファイルシステムと一緒にtar-ballにするので、 個別にコピーする必要なし。 ● インストールスクリプト Armadillo-640用のインストールディスクイメージの /images/に入っている -rwxr-xr-x 1 atmark atmark 5172 1月 29 12:52 install.sh を使う。 カーネルとDTBと同様にルートファイルシステムと一緒にtar-ballにしてもよいのだが、 あとでこれを修正することがあるかもしれないので、取り出しておく。 $ cp -p /tmp/sd/images/install.sh ~/work/make_install_disk/core/images/ ● ルートファイルシステムとカーネルとDTB Armadillo-640用のインストールディスクイメージの/image/以下をすべて削除。 $ sudo rm -f /tmp/sd/images/* ※ /image/の下以外にも不要なものがたくさんあるのだが、放置。 トップから全体を(/boot/の下のカーネルとDTBも一緒に)tar-ballにする。 (カーネルも入っているので、dist.tar.gzというファイル名は適切ではないかも) $ cd /tmp/sd $ sudo tar cvzf ~/work/make_install_disk/core/dist.tar.gz * 作ったtar-ballのオーナーがrootになっているのでatmarkに変更。 $ sudo chown atmark:atmark ~/work/make_install_disk/core/dist.tar.gz ● ツールのスクリプト make_install_disk.tar.gzのトップに入っているbuild.shを ~/work/make_install_disk/にコピー。 $ cp /build.sh ~/work/make_install_disk/ このbuild.shをArmadillo-640用に修正。 ● ファイル確認 $ cd ~/work $ LANG=C tree make_install_disk make_install_disk |-- build.sh `-- core |-- dist.tar.gz |-- images | `-- install.sh `-- u-boot.imx ● 使い方 make_install_diskディレクトリの下に、次のファイルがあるものとする。 (これらのファイルは別のディレクトリにあってもOKなはず) - u-boot-a600-v2018.03-at4.imx - uImage-a600-v4.14-at11 - armadillo-640-v4.14-at11.dtb - debian-stretch-armhf-a600-20181128.tar.gz 次のようにしてroot権限でbuild.shを実行 $ sudo ./build.sh \ u-boot-a600-v2018.03-at4.imx \ uImage-a600-v4.14-at11 \ armadillo-640-v4.14-at11.dtb \ debian-stretch-armhf-a600-20181128.tar.gz しばらく待つとカレントディレクトリに install-disk-sd-a640-YYYYMMDD.img というファイルが出来上がる 例 $ ls -l install* -rw-r--r-- 1 root root 308281344 2月 25 00:34 install-disk-sd-a640-20190225.img