BeagleBone BlackにUbuntu 14.04をインストール

連休で時間ができたので、以前途中までセットアップして放置状態だったBeagleBone Blackを引っ張り出してきて、もう一度環境構築することにしました。

前にどこまでやったかもう忘れてしまったのと、Ubuntuのバージョンも上がっているので、最初からやり直すことにします。

[前提]

  • BeagleBone BlackのrevisionはA5C
  • インストールするOSはUbuntu 14.04
  • 内蔵eMMCにはFlashせずSDカードブートで使う
  • 作業環境はWindows
スポンサーリンク
レクタングル(大)広告

SDカードにOSイメージを書き込み

SDカードの復旧

既にUbuntuがインストール済みのSDカードを再利用するので、SDカードのフォーマットから開始しました。新品のSDカードを使う場合はこの作業は不要ですね。

SDFormatterでフォーマットしようとしたところ、既にbootableイメージが書いてあるせいかカードの容量が正しく認識されず、フォーマットすることが出来ませんでした。しかたがないので一旦SDカードを物理フォーマットすることにします。

いくつかツールを漁って試しましたがうまくいかないので、しかたなくcygwinでdd。

まずcygwin上でのSDカードドライブのデバイスファイルを確認。

cygwin$ cat /proc/partitions
major minor  #blocks  name   win-mounts

    8     0 976762584 sda
    8     1   9605120 sda1   K:\
    8     2    102400 sda2   J:\
    8     3 164789248 sda3   C:\
    8     4 797153301 sda4   D:\
    8     5   5107712 sda5   L:\
    8    16      1249 sdb
    8    17      1249 sdb1   F:\    <= サイズがおかしい
    8    32         0 sdc
    8    48      4994 sdd
    8    49      4994 sdd1   M:\
    8    64         0 sde

SDドライブはWindows上でFドライブにマウントされているので、/dev/sdbであることが分かりました。これ間違うとえらいことになるので慎重に。

ddでSDカードにzero write。

cygwin$ dd if=/dev/zero of=/dev/sdb

cygwinのせいなのか、PCの性能のせいなのか、恐ろしく時間がかかりました。3,4時間待っても終わらず、仕方なく一晩放置。起きたら終わっていました。

論理フォーマット

続いてSDFormatterを使って論理フォーマットします。

オプションは、クイックフォーマット、論理サイズ調整=ONを指定。これは問題なく終了。

イメージの書き込み

Ubuntuのイメージは、http://elinux.org/BeagleBoardUbuntu#eMMC:_BeagleBone_BlackにあるBeagleBone Black用のpre-built imageを使用。この時点で公開されていたのは BBB-eMMC-flasher-ubuntu-14.04.2-console-armhf-2015-04-09-2gb.img.xz です。

書き込みはddでもできますが、上記サイトでも紹介されているWin32DiskImagerの方が断然早くて簡単です。

こちらはものの数分で完了。このツールでゼロファイル書き込みもできればいいんだけど。いい方法を知っている方がいたら教えて下さい。

念のためwindows上でブロックサイズを確認。大丈夫そうです。

cygwin$ cat /proc/partitions
major minor  #blocks  name   win-mounts

    8     0 976762584 sda
    8     1   9605120 sda1   K:\
    8     2    102400 sda2   J:\
    8     3 164789248 sda3   C:\
    8     4 797153301 sda4   D:\
    8     5   5107712 sda5   L:\
    8    16  15358976 sdb
    8    17  15358976 sdb1   F:\    <= 16GBっぽい値になった
    8    32         0 sdc
    8    48      4994 sdd
    8    49      4994 sdd1   M:\
    8    64         0 sde

起動確認

BeagleBone BlackとWindows PCをUSBシリアル変換ケーブルで接続し、TeratermでWindowsから接続。

SDカードをBeagleBone Blackに刺して電源を入れると、内蔵側のAngstromではなくSDカードのUbuntuで起動しました。

前回やったときは本体のselectボタンを押しながら起動する必要があったのですが、今回は必要ないようです。イメージにその設定が既に入っているのかも知れません。ひょっとするとボードのrevisionに依存するかも。

各種セットアップ

次にUbuntu上での各種セットアップをしていきます。

デフォルトではユーザ:ubuntu、パスワード:temppwdが設定されているので、まずはこれでログインして作業を進めます。

パーティションの拡張

SDカードに書いたイメージは2GBサイズのものなので、ファイルシステム上も2GB分しかパーティションが切られていない状態になっています。

$ df -T
Filesystem     Type     1K-blocks   Used Available Use% Mounted on
/dev/mmcblk0p1 ext4       1811704 797216    920792   9% /     <= ここ
none           tmpfs            4      0         4   0% /sys/fs/cgroup
udev           devtmpfs    236988      4    236984   1% /dev
tmpfs          tmpfs        50272    208     50064   1% /run
none           tmpfs         5120      0      5120   0% /run/lock
none           tmpfs       251352      0    251352   0% /run/shm
none           tmpfs       102400      0    102400   0% /run/user

fdiskでパーティションを拡張します。

$ sudo fdisk /dev/mmcblk0

Command (m for help): p

Disk /dev/mmcblk0: 15.7 GB, 15728640000 bytes
128 heads, 23 sectors/track, 10434 cylinders, total 30720000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            2048     3749887     1873920   83  Linux

Command (m for help): d    <= partition 1 を削除(ここではまだ実際には削除されない)
Selected partition 1

Command (m for help): n    <= 新規partitionを作成
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p    <= primary partitionを選択
Partition number (1-4, default 1): 1    <= partition番号は1
First sector (2048-30719999, default 2048):    <= default
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-30719999, default 30719999):  <= default
Using default value 30719999

Command (m for help): w     <=  wで実際に設定内容を書き込み
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

終わったらリブート。

% sudo reboot

確認してみる。

$ sudo fdisk /dev/mmcblk0

Command (m for help): p

Disk /dev/mmcblk0: 15.7 GB, 15728640000 bytes
128 heads, 23 sectors/track, 10434 cylinders, total 30720000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            2048    30719999    15358976   83  Linux    <= 16GBっぽい値になっている

パーティションサイズは拡張された模様。しかし、

$ df -T
Filesystem     Type     1K-blocks   Used Available Use% Mounted on
/dev/mmcblk0p1 ext4       1811704 797216    920792   9% /     <= 変わってない
none           tmpfs            4      0         4   0% /sys/fs/cgroup
udev           devtmpfs    236988      4    236984   1% /dev
tmpfs          tmpfs        50272    208     50064   1% /run
none           tmpfs         5120      0      5120   0% /run/lock
none           tmpfs       251352      0    251352   0% /run/shm
none           tmpfs       102400      0    102400   0% /run/user

ファイルシステム上のサイズが変わっていないです。resize2fsでファイルシステムにも反映させます。

$ sudo resize2fs /dev/mmcblk0p1

再度確認。

$ df -T
Filesystem     Type     1K-blocks    Used Available Use% Mounted on
/dev/mmcblk0p1 ext4      15095792 1283624  13167852   9% /     <= 拡張された
none           tmpfs            4       0         4   0% /sys/fs/cgroup
udev           devtmpfs    236988       4    236984   1% /dev
tmpfs          tmpfs        50272     208     50064   1% /run
none           tmpfs         5120       0      5120   0% /run/lock
none           tmpfs       251352       0    251352   0% /run/shm
none           tmpfs       102400       0    102400   0% /run/user

これでOKです。

新規ユーザ作成

まずは初期パスワードの変更が必要ですが、ubuntuというユーザで使い続けるのもあれなので、新しくユーザを作りましょう。

  • ユーザ作成
$ sudo useradd -m <ユーザ名>

-m オプションを付けるとホームディレクトリを作ってくれます

  • パスワード追加
$ sudo passwd <ユーザー名>
  • 追加したユーザでsudoができる様に設定
$ sudo gpasswd -a <ユーザ名> sudo

グループsudoにこのユーザを追加します。既に/etc/sudoersにsudoグループが登録されているので、このグループに追加するだけでsudo可能になります。

  • ユーザubuntuを削除
$ sudo userdel ubuntu

新しく追加したユーザでログインしsudoできることを確認したら、ユーザubuntuは消してしまってもいいでしょう。

ホスト名変更

ホスト名も変更しておきましょう。

$ sudo hostname <ホスト名>

/etc/hostnameも編集。

$ sudo vi /etc/hostname

/etc/hostsも変更。

$ sudo vi /etc/hosts
127.0.0.1 localhost
127.0.1.1 localdomain.arm arm     # この行を変更後のホスト名に修正
# => 127.0.1.1 localdomain.<ホスト名> <ホスト名>

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

終わったらネットワーク再起動

$ sudo /etc/init.d/networking restart

ネットワーク設定

次はネットワーク設定です。

/etc/network/interfacesを開いてみるとeth0の設定が既にDHCPになっているのでこのままでよさそう。

# The primary network interface
auto eth0
iface eth0 inet dhcp

Static IP Addressを使う場合は以下のように設定する感じでしょう。(実際の値は各自の環境に合わせて)

# iface eth0 inet dhcp    # 元のDHCP設定をコメントアウト
iface eth0 inet static
    address 192.168.1.10    # このボードに設定するIP
    netmask 255.255.255.0
    gateway 192.168.1.1    # ルータのIP
    dns-nameservers 192.168.1.1    # DNSサーバのIP

DHCPで割り当てられたIP Addressを確認。

$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 90:59:af:5c:4f:ea
          inet addr:192.168.1.100  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::9259:afff:fe5c:4fea/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7515 errors:0 dropped:0 overruns:0 frame:0
          TX packets:401 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:469823 (469.8 KB)  TX bytes:51767 (51.7 KB)
          Interrupt:56

WindowsからTeraterm等で192.168.1.100へssh接続してみてつながればOK。ここからはシリアル接続は抜いてしまって、ネットワーク経由の作業に切り換えてしまってもいいでしょう。

ぼくの環境では、このままだとLAN内の接続はできるのですがインターネットへ接続することが出来ませんでした。ネットワークの名前解決が出来ていない様です。/etc/resolv.confを見てみると

$ cat resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
search usen.ad.jp
domain localdomain
search localdomain
nameserver 192.168.1.1

nameserverが192.168.1.1になっています。これが原因の様です。

現在のUbuntuでは/etc/resolv.confは別の設定を元に自動的に生成されるようになっていて、直接編集してもreboot時に上書きされてしまいます。そこで、/etc/resolvconf/resolv.conf.d/originalを編集します。ここではGoogleのDNSサーバ、8.8.8.8、8.8.4.4を使用することにします。

(ググったところでは、originalではなくheadというファイルに記載する様に書かれていたのですが、なぜかheadではうまくいきませんでした。)

domain localdomain
search localdomain
# nameserver 192.168.1.1    # この行は削除
nameserver 8.8.8.8    # 追加
nameserver 8.8.4.4    # 追加

編集したら、resolvconfコマンドで反映します。

$ sudo resolvconf -u

再度/etc/resolv.confを確認して、8.8.8.8、8.8.4.4が追加されていたらOKです。きちんと通っているかpingで確認しておきます。

$ ping -c 1 google.com
PING google.com (216.58.220.238) 56(84) bytes of data.
64 bytes from nrt13s37-in-f14.1e100.net (216.58.220.238): icmp_seq=1 ttl=53 time=28.3 ms

--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 28.382/28.382/28.382/0.000 ms

無事開通しました。

ソフトウェアのアップデート

apt-get等を最新に更新しておきます。

$ sudo apt-get update
$ sudo apt-get install aptitude
$ sudo aptitude update
$ sudo aptitude safe-upgrade

タイムゾーンの設定

タイムゾーンも設定しておきます。

$ sudo dpkg-reconfigure tzdata

を実行して、Asia/Tokyoを選択します。


ひとまずこれでいろいろいじるための最低限の環境は整いました。あとは用途に応じていろいろ入れていこうと思います。

さて、何をしようかな。

スポンサーリンク
レクタングル(大)広告
レクタングル(大)広告

この記事をシェア!

このブログをフォロー!