BBB_debootstrap_wheezy

BeagleBoneBlack (以下BBB)で debian wheezy を debootstrap する。
開発PCに debian wheezy をインストールし、cross-tool-chain や nfs のセットアップは済ませておく。

# rootユーザでの操作を意味する
$ 一般ユーザでの操作を意味する

最初に microSD に debian wheezy をインストールする。
次に 内蔵 eMMC に(Angstromを消して) debian wheezy をインストールする。

debootstrap

開発PC (debian wheezy)上で

$ mkdir work
$ cd work
$ su
# apt-get install debootstrap
# debootstrap --foreign --arch armhf wheezy wheezy-target

BBB Angstrom を起動して

# busybox  mount PC_ADDRESS:/SHARE_DIRECTORY /mnt -o ro,tcp,nolock
等でNFSマウントして 上記 wheezy-target 作業ディレクトリ一式を cp -a でコピーしてくる。
# cd wheezy-target
# chroot .
# bash
# mount -t proc proc /proc/
# mount -t sysfs sysfs /sys/
# /debootstrap/debootstrap --second-stage
I: Installing core packages...
I: Unpacking required packages...
I: Unpacking libacl1:armhf... 
...中略...
I: Base system installed successfully.    成功!!
# apt-get clean
# exit        (bashを抜ける)
# exit        (chrootを抜ける)
# tar cf - . | gzip -9 > ../wheezy-armhf-base.tgz
# cd ../
# tar tzf wheezy-armhf-base.tgz  (念のため)
./
./bin/
./bin/mknod
./bin/more
./bin/nc
./bin/chmod
./bin/grep
CTRL+C

出来上がった wheezy-armhf-base.tgz を保存しておく。
Angstromではftp server/client 共にないので scp などでPCにコピーすれば良いか。

microSDにdebianを手動でインストールする

2G以上のmicroSDを用意する。 Angstromで起動した場合は microSDは /dev/mmcblk1 になる。

パーティショニング

# cfdisk /dev/mmcblk1
                           cfdisk (util-linux 2.21.2)

                            Disk Drive: /dev/mmcblk1
                        Size: 8010072064 bytes, 8010 MB
              Heads: 4   Sectors per Track: 16   Cylinders: 244448

    Name        Flags      Part Type  FS Type          [Label]        Size (MB)
 ------------------------------------------------------------------------------
    mmcblk1p1   Boot        Primary   FAT16                              128.00
    mmcblk1p2               Primary   Linux                             4096.00
                            Pri/Log   Free Space                        3786.09
  • 第一パーティションは FAT (id = 0x06) /boot/uboot にマウント
  • 第二パーティションは ext3 (id = 0x83) / (rootfs) にマウント

フォーマット

# mkdosfs -F16 /dev/mmcblk1p1
# mkfs.ext3  /dev/mmcblk1p2

第一パーティション(FAT)へbootloader関連ファイルをコピー

# mount /dev/mmcblk1p1              /media/mmc1/
# cd /media/mmc1/
# vi uEnv.txt        (新規作成)
optargs=run_hardware_tests
bootdir=/boot
bootpart=0:2
mmcroot=/dev/mmcblk0p2 ro
mmcrootfstype=ext3 rootwait
bootpart=0:2 
  最初の0:の部分は  0:microSD   1:内蔵eMMC
  次の2の部分は第二パーティション
# cp /media/BEAGLEBONE_/MLO         ./
# cp /media/BEAGLEBONE_/u-boot.img  ./
# ls -l
-rw-r--r-- 1 root root  105440 Mar  4 08:34 MLO
-rw-r--r-- 1 root root  379428 Mar  4 08:29 u-boot.img
-rw-r--r-- 1 root root    1451 Mar  4  2014 uEnv.txt
# cd
# umount /media/mmc1/

第二パーティション(ext3) へ rootfs を展開

# mount /dev/mmcblk1p2              /media/mmc1/
# cd /media/mmc1/
# tar xzfv ~/wheezy-armhf-base.tgz

rootfs の /boot 以下に device-tree と kernel をコピーする。
uboot/ サブディレクトリを作る

# cd boot/
# cp /boot/am335x-boneblack.dtb     ./
# cp /boot/uImage-3.8.13            ./
# ln -s uImage-3.8.13 uImage
# mkdir uboot
# cd ../
# chroot .
# bash
# passwd                          (rootパスワードの設定)
# vi /etc/inittab                 (一部を変更)
1:2345:respawn:/sbin/getty 115200 ttyO0
#2:23:respawn:/sbin/getty 38400 tty2
#3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6
# vi /etc/fstab
/dev/mmcblk0p1  /boot/uboot   vfat    ro      0 0
/dev/mmcblk0p2  /             ext3    errors=remount-ro       0 1
# vi /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
# vi /etc/apt/sources.list
deb http://ftp.jp.debian.org/debian wheezy main contrib non-free
deb-src http://ftp.jp.debian.org/debian wheezy main contrib non-free

deb http://ftp.jp.debian.org/debian/ wheezy-updates main
deb-src http://ftp.jp.debian.org/debian/ wheezy-updates main
# exit                            (bashを抜ける)
# exit                            (chrootを抜ける)
# sync
# cd 
# umount /media/mmc1/

debian起動

microSDを挿入して電源を入れればdebian wheezyが起動するはず。電源ON時にS2を押していればmicroSDの MLO から起動する。押さないとMLOだけはeMMCのMLOから起動する。

/bootの下が分かりにくいため図示する。

/boot       は第二パーティション(ext3)
/boot/uboot は第一パーティション(FAT)
/boot/
|-- am335x-boneblack.dtb
|-- uImage -> uImage-3.8.13
|-- uImage-3.8.13
`-- uboot
    |-- MLO
    |-- u-boot.img
    `-- uEnv.txt

内蔵eMMCのdebian化

内蔵eMMCにはAngstromがインストールされている。これを消去してdebian wheezyにする。元に戻すには BBB_eMMC_flasher を参考のこと。

wheezy microSD で起動する。

/dev/mmcblk0      ... microSD
/dev/mmcblk1      ... 内蔵eMMC

パーティショニング

# cfdisk /dev/mmcblk1
                           Disk Drive: /dev/mmcblk1
                       Size: 1920991232 bytes, 1920 MB
             Heads: 255   Sectors per Track: 63   Cylinders: 233

   Name        Flags      Part Type  FS Type          [Label]        Size (MB)
------------------------------------------------------------------------------
   mmcblk1p1   Boot        Primary   vfat            [BEAGLEBONE]       131.61
   mmcblk1p2               Primary   Linux                             1497.01
                           Pri/Log   Free Space                         

このように適当なパーティションを作る。第一パーティションに Boot フラグが必要。

フォーマット

# apt-get install dosfstools
# mkdosfs -F16 /dev/mmcblk1p1
# mkfs.ext3 /dev/mmcblk1p2

第一パーティション(FAT)

# mount /dev/mmcblk1p1 /media/
# cd /media
# vi uEnv.txt
optargs=run_hardware_tests
bootdir=/boot
bootpart=1:2
mmcroot=/dev/mmcblk0p2 ro
mmcrootfstype=ext3 rootwait
bootpart=1:2 
  最初の1:の部分は 0:microSD   1:内蔵eMMC
  次の2の部分は第二パーティション
# cp -a /boot/uboot/MLO         ./
# cp -a /boot/uboot/u-boot.img  ./
# cd /
# sync
# umount /media

第二パーティション(ext3)

# mount /dev/mmcblk1p2 /media/
# cd /media

debianのbaseを展開

# tar xzvf /root/wheezy-armhf-base.tgz
# chroot ./
# passwd
rootユーザのパスワード設定
# exit
# cp /etc/inittab /media/etc/
# cp /etc/fstab   /media/etc/
# cp /etc/apt/sources.list   /media/etc/apt/
# cp /etc/network/interfaces /media/etc/network/
# cd /media/boot/
# cp /boot/uImage-3.8.13         ./
# cp /boot/am335x-boneblack.dtb  ./
# ln -s uImage-3.8.13 uImage    
# mkdir uboot
# cd /
# umount /media

BBBBox

IMG_1013s.jpg

BeagleBoneBlack Box 中身を debian にすれば小さなPCとして活用できます。USBも4chありますし。

関連

  • 自動リンク