次にBBB起動用のmicro SDカードを作成する。
具体的にはBeagleboard.orgにあるDebianのディスクイメージをmicro SDカードに焼く。
当然の事ながら母艦でmicroSDが読み書きできる必要がある。
用意するmicro SDカードは4GB以上であればなんでも良いが、新品でなければ一度フルフォーマットを行う方が良い。
BBBのような半組み込み機器の場合、必ずしも丁寧にシャットダウンされるとは限らない。
inode非参照領域はオール0xffで埋めておくのが良い。
一方、SDカード全般に言えることであるが、未使用セクタ(一度もアクセスされた事がないセクタ)と事後的に オール0xffで埋められたセクタはカード内では同じでは無い可能性がある。
SDカードベンダ各社、ware levelingのメカニズムは公開していないので、おまじないの域を超えないが、 新品のmicro SDカードを使う場合は未使用セクタを10%程度残すべき。
未使用領域を10%程度残す戦略は、後述する同程度のmicro SDカードにバックアップをコピーする場合でも有用である。
今回使うmicro SDカードは過去デジカメ用に使っていたKingMAX社の4GBのもの。
使わなくなって久しく、一度フルフォーマットを行う。
以後の作業は母艦(ゲストOS)で行う。
ディスクイメージの取得
temp-host@temp-host:~/download$ wget http://debian.beagleboard.org/images/bone-debian-7.5-2014-05-14-2gb.img.xz --2014-08-24 00:27:55-- http://debian.beagleboard.org/images/bone-debian-7.5-2014-05-14-2gb.img.xz debian.beagleboard.org (debian.beagleboard.org) をDNSに問いあわせています... 205.251.243.100 debian.beagleboard.org (debian.beagleboard.org)|205.251.243.100|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 492771768 (470M) [application/octet-stream] `bone-debian-7.5-2014-05-14-2gb.img.xz' に保存中 100%[======================================>] 492,771,768 760KB/s 時間 8m 9s 2014-08-24 00:36:06 (984 KB/s) - `bone-debian-7.5-2014-05-14-2gb.img.xz' へ保存完了 [492771768/492771768]
ディスクイメージの展開
temp-host@temp-host:~/download$ xz -d bone-debian-7.5-2014-05-14-2gb.img.xz
この環境ではSDカードは/dev/sdbとなっていた。
間違えて他のデバイスに上書きしないように注意が必要。
ディスクイメージをSDカードにコピーする。
凄く時間がかかるので注意。
temp-host@temp-host:~/download$ sudo dd if=bone-debian-7.5-2014-05-14-2gb.img of=/dev/sdb 3481600+0 レコード入力 3481600+0 レコード出力 1782579200 バイト (1.8 GB) コピーされました、 1893.74 秒、 941 kB/秒
元のディスクイメージは2Gらしいのでパーティションを広げる。
今回作成するmicro SDカードは開発ベースとする予定。
ディスクイメージのバックアップや他のSDカードにバックアップしたディスクイメージのコピーを行う為、 容量としては3.5GB程度にとどめる。
同じ4GのSDカードでも総容量はメーカー、種類により同じではない。
raw Deviceで示される容量に広げてしまうと、他の4Gのmicro SDカードに焼き戻せるか保障できなくなる。
ディスクイメージは広げる事は簡単にできるが、狭める事ができるかは状況による事に注意が必要。
4Gを超えてくるとバックアップにかかる時間も容量も増えるので、現実的ではなくなる。
3.5G程度がバランスが取れていると思う。
先ずfdiskを用いてパーティションを広げる
temp-host@temp-host:~/download$ sudo fdisk /dev/sdb コマンド (m でヘルプ): p ディスク /dev/sdb: 3930 MB, 3930062848 バイト ヘッド 121, セクタ 62, シリンダ 1023, 合計 7675904 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスク識別子: 0x00000000 デバイス ブート 始点 終点 ブロック Id システム /dev/sdb1 * 2048 198655 98304 e W95 FAT16 (LBA) /dev/sdb2 198656 3481599 1641472 83 Linux コマンド (m でヘルプ): d パーティション番号 (1-4): 2 コマンド (m でヘルプ): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p パーティション番号 (1-4, 初期値 2): 2 最初 セクタ (198656-7675903, 初期値 198656): 初期値 198656 を使います Last セクタ, +セクタ数 or +size{K,M,G} (198656-7675903, 初期値 7675903): +3584M コマンド (m でヘルプ): p ディスク /dev/sdb: 3930 MB, 3930062848 バイト ヘッド 121, セクタ 62, シリンダ 1023, 合計 7675904 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスク識別子: 0x00000000 デバイス ブート 始点 終点 ブロック Id システム /dev/sdb1 * 2048 198655 98304 e W95 FAT16 (LBA) /dev/sdb2 198656 7538687 3670016 83 Linux コマンド (m でヘルプ): w パーティションテーブルは変更されました! ioctl() を呼び出してパーティションテーブルを再読込みします。 警告: パーティションテーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。 カーネルはまだ古いテーブルを使っています。新しいテーブルは 次回リブート時か、partprobe(8)またはkpartx(8)を実行した後に 使えるようになるでしょう ディスクを同期しています。
これでパーティションの拡張は完了。
/dev/sdb2のパーティションを後続する未使用領域を用いて領域を広げたイメージになる。
その更に後方には未使用領域が残る。
一応再起動を行う。
temp-host@temp-host:~/download$ sudo sync temp-host@temp-host:~/download$ sudo sync temp-host@temp-host:~/download$ sudo sync temp-host@temp-host:~/download$ sudo reboot
「syncは3回」と昔習ったが、今でも必要なのだろうか?
この状態ではパーティションは拡張されたもののinodeテーブルは全てを使っていないのでdfでは1.8Gの容量となっている。
temp-host@temp-host:~/download$ sudo mount /dev/sdb2 rootfs temp-host@temp-host:~/download$ temp-host@temp-host:~/download$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 18G 11G 6.0G 65% / none 4.0K 0 4.0K 0% /sys/fs/cgroup udev 987M 4.0K 987M 1% /dev tmpfs 200M 1.2M 199M 1% /run none 5.0M 0 5.0M 0% /run/lock none 998M 6.0M 992M 1% /run/shm none 100M 36K 100M 1% /run/user /dev/sdb2 1.6G 1.5G 0 100% /media/temp-host/rootfs /dev/sdb1 96M 70M 27M 73% /media/temp-host/BEAGLE_BONE
resize2fsを用いてinode tableを書き換える。
temp-host@temp-host:~/download$ sudo resize2fs /dev/sdb2 resize2fs 1.42.9 (4-Feb-2014) Filesystem at /dev/sdb2 is mounted on /media/temp-host/rootfs; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/sdb2 is now 917504 blocks long. temp-host@temp-host:~/download$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 18G 11G 6.0G 65% / none 4.0K 0 4.0K 0% /sys/fs/cgroup udev 987M 4.0K 987M 1% /dev tmpfs 200M 1.2M 199M 1% /run none 5.0M 0 5.0M 0% /run/lock none 998M 6.0M 992M 1% /run/shm none 100M 36K 100M 1% /run/user /dev/sdb2 3.5G 1.5G 1.9G 45% /media/temp-host/rootfs /dev/sdb1 96M 70M 27M 73% /media/temp-host/BEAGLE_BONE
これで/dev/sdb2は3.5G使えるようになった。一応syncを行い再起動する。
temp-host@temp-host:~/download$ sudo sync temp-host@temp-host:~/download$ sudo sync temp-host@temp-host:~/download$ sudo sync temp-host@temp-host:~/download$ sudo reboot
これで起動用のmicro SDカードが完成した。
母艦から抜き、BBBのmicro SDカードスロットに挿入し、起動を試みる。
USB TTLシリアルを接続し115200bps 8bit; non parity; stop bit 1; フロー制御なし
U-Boot SPL 2014.04-00015-gb4422bd (Apr 22 2014 - 13:24:29) reading args spl_load_image_fat_os: error reading image args, err - -1 reading u-boot.img reading u-boot.img U-Boot 2014.04-00015-gb4422bd (Apr 22 2014 - 13:24:29) I2C: ready DRAM: 512 MiB NAND: 0 MiB MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1 *** Warning - readenv() failed, using default environment Net: not set. Validating first E-fuse MAC cpsw, usb_ether Hit any key to stop autoboot: 0 gpio: pin 53 (gpio 53) value is 1 mmc0 is current device gpio: pin 54 (gpio 54) value is 1 SD/MMC found on device 0 reading uEnv.txt 1672 bytes read in 6 ms (271.5 KiB/s) gpio: pin 55 (gpio 55) value is 1 Loaded environment from uEnv.txt Importing environment from mmc ... Checking if uenvcmd is set ... gpio: pin 56 (gpio 56) value is 1 Running uenvcmd ... reading zImage 4103240 bytes read in 332 ms (11.8 MiB/s) reading initrd.img 2957458 bytes read in 247 ms (11.4 MiB/s) reading /dtbs/am335x-boneblack.dtb 25926 bytes read in 10 ms (2.5 MiB/s) Kernel image @ 0x82000000 [ 0x000000 - 0x3e9c48 ] ## Flattened Device Tree blob at 88000000 Booting using the fdt blob at 0x88000000 Using Device Tree in place at 88000000, end 88009545 Starting kernel ... Uncompressing Linux... done, booting the kernel. [ 0.378673] omap2_mbox_probe: platform not supported [ 0.533221] tps65217-bl tps65217-bl: no platform data provided [ 0.596976] bone-capemgr bone_capemgr.9: slot #0: No cape found [ 0.634083] bone-capemgr bone_capemgr.9: slot #1: No cape found [ 0.671191] bone-capemgr bone_capemgr.9: slot #2: No cape found [ 0.708302] bone-capemgr bone_capemgr.9: slot #3: No cape found [ 0.722984] bone-capemgr bone_capemgr.9: slot #6: BB-BONELT-HDMIN conflict P8.45 (#5:BB-BONELT-HDMI) [ 0.732609] bone-capemgr bone_capemgr.9: slot #6: Failed verification [ 0.739355] bone-capemgr bone_capemgr.9: loader: failed to load slot-6 BB-BONELT-HDMIN:00A0 (prio 2) [ 0.756895] omap_hsmmc mmc.5: of_parse_phandle_with_args of 'reset' failed [ 0.819909] pinctrl-single 44e10800.pinmux: pin 44e10854 already requested by 44e10800.pinmux; cannot claim for gpio-leds.8 [ 0.831587] pinctrl-single 44e10800.pinmux: pin-21 (gpio-leds.8) status -22 [ 0.838873] pinctrl-single 44e10800.pinmux: could not request pin 21 on device pinctrl-single Loading, please wait... Scanning for Btrfs filesystems systemd-fsck[211]: rootfs: clean, 78642/221312 files, 396741/917504 blocks Debian GNU/Linux 7 beaglebone ttyO0 default username:password is [debian:temppwd] Support/FAQ: http://elinux.org/Beagleboard:BeagleBoneBlack_Debian The IP Address for wlan0 is: 192.168.1.15 The IP Address for usb0 is: 192.168.7.2 beaglebone login: debian Password: Last login: Sun Aug 24 15:09:25 UTC 2014 from 192.168.1.20 on pts/0 Linux beaglebone 3.8.13-bone50 #1 SMP Tue May 13 13:24:52 UTC 2014 armv7l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. debian@beaglebone:~$ uname -r 3.8.13-bone50 debian@beaglebone:~$
一応起動に成功。
eMMC起動と同様defaultでは username:debian, password:temppwd とある。
この設定でログインも問題なくできた。
Kernelのバージョンは3.8.13-bone50とのこと。
以下のfailedが出ているが気にしない事にする。
[ 0.756895] omap_hsmmc mmc.5: of_parse_phandle_with_args of 'reset' failed
次回はBBBのWiFiの設定を行う。