4661082?
  • 5
    Stock
  • 0
    Comment
Stock this post
  • toru2220
  • kohyama
  • sperkbird
  • Noboruhi
  • kasumani

BeagleBone BlackにはデフォルトでÅngstrom LinuxがeMMCにインストール済みですが、eMMCは寿命があるのでmicroSDカードから別のOSを起動するように設定します。
今回はDebianを選択しました。
※ Ubuntu, ArchLinuxでも同じ方針でインストールできます。

インストール

この手順ではU-Bootとルートファイルシステムをそれぞれ書き込む方法でインストールします。
(ArchLinuxをこの手順でインストールした事があるため)
※ イメージファイルを書き込む手順は下記ダウンロードページ他、色んなページで紹介されています。

使用させていただくファイル

今回はARM HF Linuxで公開されているイメージを利用させていただきました。(Debian/Ubuntuの場合)
ダウンロードページ
※ 後でwgetで取得する手順なのでココでダウンロードしておく必要はありません。

microSDカードにイメージを書き込む

以下、Mac上のUbuntu@VMWareFusionで作業しています。
※ VirtualBoxとかローカルでも大丈夫です。

microSDカードを確認

単純に接続前後で差分を確認する

接続前
~$ ls /dev/sd*
/dev/sda    /dev/sda1   /dev/sda2   /dev/sda5
接続後

"/dev/sdb" として認識された状態

~$ ls /dev/sd*
/dev/sda    /dev/sda1   /dev/sda2   /dev/sda5   /dev/sdb

書き込み先のパーティションを作成

~$ sudo fdisk /dev/sdb

パーティションはArchLinuxのインストール手順に書いてある通りに作成しました。
下記ページに日本語でほぼ同様の記載があります。
http://www.voip-info.jp/index.php/BeagleBone_Black_Asterisk

一応、入力を羅列しておきます。
※ 説明は間違っているかもしれません。

  1. o (既存のパーティションクリア)
  2. p (パーティションの確認)
  3. n (新規パーティション作成: uboot用)
  4. p (プライマリパーティションを選択)
  5. 1 (パーティション番号: 1)
  6. [enter] (パーティション開始位置 → デフォルト)
  7. +64M (パーティション終了位置 → 64MB確保)
  8. t (パーティションタイプ変更)
  9. e (W95 FAT16を選択)
  10. a (ブート可能に設定)
  11. n (新規パーティション作成: rootfs用)
  12. p (プライマリパーティションを選択)
  13. 2 (パーティション番号: 2)
  14. [enter] (パーティション開始位置 → デフォルト(1の直後))
  15. [enter] (パーティション終了位置 → デフォルト(最大))
  16. p (パーティションの確認)
  17. w (書き込み)

フォーマット

~$ sudo mkfs.vfat -F 16 /dev/sdb1
~$ sudo mkfs.ext4 /dev/sdb2

書き込み

※ ArchKinuxの場合はファイル名、tarコマンドのオプションが異なります。
cf. ArchLinuxのインストール手順

~$ mkdir boot
~$ sudo mount /dev/sdb1 boot
~$ sudo tar Jxvf uboot-bone.tar.xz -C boot
~$ mkdir root
~$ sudo mount /dev/sdb2 root
~$ sudo tar Jxvf debian-wheezy-7.2-armhf-rootfs-3.8.13-bone30.tar.xz -C root

接続解除

書き込みが終わったのでマウントを解除してmicroSDカードを抜きます。

~$ sudo umount boot root

これでインストール完了です。

起動確認

microSDカードのスロット付近にあるスイッチを押した状態で電源を入れ、押したまましばらくするとLEDが点滅したらボタンから手を離します。(ボタンを離すタイミングは未確認)
これでmicroSDカードからOSが起動するはずです。

インストール後

このままでは本体のスイッチを押しながら電源を入れないと、microSDから起動しません…
(ファームウェアを更新するとmicroSDカードを刺すだけで起動するかもしれません)

microSDカードからOSが起動したら、次のようにuEnv.txtを変更することでmicroSDカードから起動するそうです。
これは下記のページを参考にさせていただきました。
http://tomowatanabe.hatenablog.com/entry/2013/12/15/202806
(bootfileだけ設定していてハマりました…)

※ 以下はmicroSDカードで起動したOS上での操作です。

~$ sudo nano /boot/uboot/uEnv.txt
uEnv.txt
mmcpart=2
bootfile=zImage # 追加
optargs=fixrtc
uenvcmd=i2c mw 0x24 1 0x3e; kd=0; if test $mmcdev -eq 1; then mmc dev 0; if mmc rescan; then kd=1; fi; mmc dev 1; fi; setenv mmcroot /dev/mmcblk${kd}p${mmcpart} ro
loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdtaddr} ${bootdir}/dtbs/${fdtfile}
loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${bootdir}/${bootfile}
mmcboot=echo Booting from mmc ...; run mmcargs; bootz ${kloadaddr} - ${fdtaddr} # 追加

これで再起動後はmicroSDカードからOSが起動します。

めでたしめでたし。