BeagleBone Black起動用のmicro SDカードを作成

次に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の設定を行う。

タイトルとURLをコピーしました