====== Java 領域を(大幅に)縮小して root filesystem 領域を広げる ====== [[mae3xx_ope:firmware_structure:start]] にあるとおり、Java(JRE) の領域がかなりの割合を占めています。\\ Java を使用しない場合、この領域を root filesystem に割り当てて、より多くのパッケージや自作のアプリケーションを入れたいということもあると思います。 カスタム bootloader に入れ替えることで、256MiB NAND Flash を搭載した標準品でも、root filesystem のサイズを 80MiB -> **95MiB** に拡大することができます。 \\ ===== 更新の手順 ===== ==== ファームウェアを入れた SDcard の準備 ==== NAND Flash のパーティション構造を変更する途中で全消去するため、bootloader からファームウェアを書き込む必要があります。\\ そのため、SDcard にファームウェアを書き込んで実機に挿入しておきます。 ※ ファームウェアに含まれている barebox.bin.img は除去しておきます。 \\ ==== bootloader の更新 ==== bootloader のみ更新するファームウェアを適用します。 ^ File ^ Stat ^ SHA1SUM ^ Note | |{{ :mae3xx_tips:java-less-environment:java-less-bootloader.img |}}|2019/07/05 17:31 245.5 KB|134e350fdb66425c576eef12fc7a4c438163b9a6| | \\ root@plum:~# firmup /tmp/java-less-bootloader.img ### MA-E3xx series firmware update utility (for 2-area firmware). Updating Area: 1 ... * Bootloader file found. writing "barebox.bin" image to /dev/mtd13 ... succeeded. erasing bootloader environments (/dev/mtd14)... done. Succeeded. \\ ==== 再起動 ==== bootloader で作業する必要があるので、コンソールを接続した上で再起動します。 root@plum:~# reboot Session terminated, terminating shell... ...terminated. \\ ==== bootloader で止める ==== bootloader でキー入力待ちの間にキーを押して自動起動を停止させます。 ... registering /dev/ubi0 registering kernel.0 as /dev/ubi0.kernel.0 registering kernel.1 as /dev/ubi0.kernel.1 registering initramfs.0 as /dev/ubi0.initramfs.0 registering initramfs.1 as /dev/ubi0.initramfs.1 registering kmod.0 as /dev/ubi0.kmod.0 registering kmod.1 as /dev/ubi0.kmod.1 registering rootfs.0 as /dev/ubi0.rootfs.0 registering rootfs.1 as /dev/ubi0.rootfs.1 registering opt as /dev/ubi0.opt registering overlay as /dev/ubi0.overlay UBI: attached mtd0 (name "nand0.UBI", size 255 MiB) to ubi0 UBI: PEB size: 131072 bytes (128 KiB), LEB size: 129024 bytes UBI: min./max. I/O unit sizes: 2048/2048, sub-page size 512 UBI: VID header offset: 512 (aligned 512), data offset: 2048 UBI: good PEBs: 2040, bad PEBs: 0, corrupted PEBs: 0 UBI: user volume: 10, internal volumes: 1, max. volumes count: 128 UBI: max/mean erase counter: 2/0, WL threshold: 4096, image sequence number: 9489 UBI: available PEBs: 0, total reserved PEBs: 2040, PEBs reserved for bad PEB handling: 40 Hit m for menu or any other key to stop autoboot: 1 type exit to get to the menu barebox@plum-ma[1GiB]:/ \\ ==== bootloader での作業 ==== === UBI のデタッチ === barebox@plum-ma[1GiB]:/ ubidetach ubi0 UBI: detaching mtd0 from ubi0 removing ubi0 UBI: mtd0 is detached from ubi0 \\ === NAND 消去 === barebox@plum-ma[1GiB]:/ erase /dev/nand0 \\ === UBI フォーマット === barebox@plum-ma[1GiB]:/ ubivol_init 2 ubiformat: /dev/nand0.UBI (nand), size 267386880 bytes (255 MiB), 2040 eraseblocks of 131072 bytes (128 KiB), min. I/O size 2048 bytes libscan: scanning eraseblock 2039 -- 100 % complete ubiformat: 2040 eraseblocks are supposedly empty ubiformat: formatting eraseblock 2039 -- 100 % complete UBI: attaching mtd0 to ubi0 UBI: scanning is finished registering /dev/ubi0 UBI: attached mtd0 (name "nand0.UBI", size 255 MiB) to ubi0 UBI: PEB size: 131072 bytes (128 KiB), LEB size: 129024 bytes UBI: min./max. I/O unit sizes: 2048/2048, sub-page size 512 UBI: VID header offset: 512 (aligned 512), data offset: 2048 UBI: good PEBs: 2040, bad PEBs: 0, corrupted PEBs: 0 UBI: user volume: 0, internal volumes: 1, max. volumes count: 128 UBI: max/mean erase counter: 0/0, WL threshold: 4096, image sequence number: 3639 UBI: available PEBs: 1996, total reserved PEBs: 44, PEBs reserved for bad PEB handling: 40 registering kernel.0 as /dev/ubi0.kernel.0 registering kernel.1 as /dev/ubi0.kernel.1 registering initramfs.0 as /dev/ubi0.initramfs.0 registering initramfs.1 as /dev/ubi0.initramfs.1 registering kmod.0 as /dev/ubi0.kmod.0 registering kmod.1 as /dev/ubi0.kmod.1 registering rootfs.0 as /dev/ubi0.rootfs.0 registering rootfs.1 as /dev/ubi0.rootfs.1 registering opt as /dev/ubi0.opt registering overlay as /dev/ubi0.overlay \\ 領域のサイズを確認してみます。 barebox@plum-ma[1GiB]:/ ls -l /dev/ubi0* c--------- 0 /dev/ubi0 crw------- 2193408 /dev/ubi0.initramfs.0 crw------- 2193408 /dev/ubi0.initramfs.1 crw------- 4257792 /dev/ubi0.kernel.0 crw------- 4257792 /dev/ubi0.kernel.1 crw------- 2193408 /dev/ubi0.kmod.0 crw------- 2193408 /dev/ubi0.kmod.1 crw------- 387072 /dev/ubi0.opt crw------- 40384512 /dev/ubi0.overlay crw------- 99735552 /dev/ubi0.rootfs.0 crw------- 99735552 /dev/ubi0.rootfs.1 barebox@plum-ma[1GiB]:/ rootfs.* のサイズが 99735552bytes (95.1MiB) になっていることが確認できました。 \\ === ファームウェアの書込 === SDcard に入れておいたファームウェアを書き込みます。 barebox@plum-ma[1GiB]:/ firmup /boot/mae3xx_bionic_v4_2_1rc1.img 0 ### MA-E3xx series firmware updater firm area to write: 0 firm_dual: 1 * image file for "kernel" found. copying kernel image to /dev/ubi0.kernel.0 ... * image file for "kmod" found. copying kmod image to /dev/ubi0.kmod.0 ... * image file for "initramfs" found. copying initramfs image to /dev/ubi0.initramfs.0 ... * image file for "rootfs" found. copying rootfs image to /dev/ubi0.rootfs.0 ... * image file for "dtb" found. erasing /dev/spi.dtb.0 ... copying dtb(DeviceTree) image to /dev/spi.dtb.0 ... update finished. barebox@plum-ma[1GiB]:/ ※ **opt** のファイルが入っていてもスキップするようになっています。 \\ ==== 起動 ==== 新しいファームウェアで起動するためにリセットします。 barebox@plum-ma[1GiB]:/ reset barebox 2013.12.0-gc51c3f4 #3 Tue Mar 11 18:24:49 JST 2014 Board: plum-ma[1GiB] m25p80 m25p800: m25p16 (2048 Kbytes) booting from SPI barebox 2013.12.0-00438-gb5233a419 #882 Fri Jun 28 14:28:42 JST 2019 Board: plum-ma[1GiB] nand: ONFI param page 0 valid ... \\ Linux から UBI のサイズを確認すると、root filesystem 領域が大きくなっていることが確認できます。 user1@plum:~$ cat /proc/mtd dev: size erasesize name mtd0: 0ff00000 00020000 "UBI" mtd1: 00100000 00020000 "OOPS" mtd2: 0040f800 0001f800 "kernel.0" mtd3: 0040f800 0001f800 "kernel.1" mtd4: 00217800 0001f800 "initramfs.0" mtd5: 00217800 0001f800 "initramfs.1" mtd6: 00217800 0001f800 "kmod.0" mtd7: 00217800 0001f800 "kmod.1" mtd8: 05f1d800 0001f800 "rootfs.0" <--- mtd9: 05f1d800 0001f800 "rootfs.1" <--- mtd10: 0005e800 0001f800 "opt" mtd11: 02683800 0001f800 "overlay" mtd12: 00020000 00010000 "MLO" mtd13: 00080000 00010000 "barebox.bin" mtd14: 00020000 00010000 "barebox.env" mtd15: 00020000 00010000 "dtb.0" mtd16: 00020000 00010000 "dtb.1" mtd17: 00020000 00010000 "hist_firmup" mtd18: 000e0000 00010000 "hist_boot" \\