持ち運びが容易なテスト環境
NUCでも大きいので更に小さなサイズで何かないか。
Linuxが動けば良いのでスペックは低くて良い。(CLIでOK)
最初はVMひとつ立てればいいんじゃないかと考えていたけど、物理的な場所の移動が難しいのがちょっと問題。
ということで、最適なのって「Raspberry Pi なのでは!?」と。
そして、更に「いつだったか、BeagleBoneBlack とかっての1台買ったよな!?」になったので探した。
ただし、Raspberry Pi4B を注文した後で…
どこに仕舞ったか忘れ捜索を諦めて発注した後、割とすぐに見つかるという、あるある…
まぁ、Raspberry Pi ってのに触れるのも悪くないとキャンセルはせずにそのまま到着を待とう。
しかし、2万円もあればいろいろとフルセットで買えるんだから安くなったよなぁ~
さて、発掘したBBBをとりあえず使えるようにしてみよう。
Ubuntu 18.04 のインストール
2GBのmicroSDが挿さってたので、電源挿して起動してみる。
ケースに入っていたとはいえ、数年放置されていたわりにはあっさり何事もなく起動してきて、しかもUbuntu16.04が立ち上がってきた。
が、さすがに古い。
現状、BBBで動く最新のバージョンは18.04のようなので、そっちに書き換える。
イメージの取得
まずはOSのイメージを取得しよう。操作はWindows機からでOK。
取得先は下記から。
次に「4.3 raw microSD img」の「4.3.2 All BeagleBone Variants and PocketBeagle」に飛ぶ。
次に下記をクリックしてイメージデータをダウンロード。
(2020年3月と古いのはまぁしょうがないのかなぁ・・・)
ダウンロードが完了したら7zip等の圧縮解凍ソフトで展開する。
bone-ubuntu-18.04.4-console-armhf-2020-03-12-2gb
というフォルダができ、その中にimgという拡張子のファイルがひとつできあがる。
microSDカードに書き込む
imgファイルを何らかの手段でmicroSDに書き込むわけだけど、個人的にはESXiのカスタムイメージを作るときにもお世話になっている Rufus というツールを使った。
「デバイス」欄でちゃんとmicroSDが選択されているかを確認し、
「選択」で先ほどダウンロード、解凍したイメージを指定し、
「スタート」を押せばイメージデータの書込が始まる。
当然、microSDのデータは全て綺麗さっぱり消えるのでデバイスの選択や実行にはご注意を。
そして、こんな感じで進捗状況が確認出来る。
完了したらこんな感じ。
BBBの電源を入れる
イメージの書込が完了したらmicroSDをBBBに取り付け、電源を入れる。
その際、画像右下にあるボタンを押しながら起動する。
このボタンを押さないと、オンボードのeMMCから起動してしまうため。
そうそう、初期設定だけはモニタとキーボードを繋げておかないとやりづらいので予め繋げておこう。
初期状態ではdhcpでIPアドレスが割り振られるようになっていて、起動すると画面上にそのIPアドレスが表示されるので、少なくともモニタ接続はしておいた方が良い。
キーボードはなくても、IPアドレスさえわかればSSHで接続出来るので。
最低限の初期設定
管理者パスワードの変更
初期値は ID:ubuntu PW:temppwd となっている。
完全ローカルでのテスト用とはいっても、デフォルトのまま使うのは抵抗があるので
$ passwd ubuntu
でパスワードを変更。
タイムゾーンの設定
UTC が標準で設定されているので、それを Asia/Tokyo に変更。
$ sudo timedatectl set-timezone Asia/Tokyo
viの設定変更
この後、viで設定ファイルの編集等を行う際、矢印キーでAやB、C、Dというキーが入力されてしまうというケースがある。
これはそれぞれのユーザーディレクトリに .vimrc というファイルを下記内容で作っておけばOK。
set nocompatible
IPアドレスを固定
環境によってIPアドレスは適宜変えてしまうんだけれども、基本的には固定しておいた方が、こうしたデバイスの性質的に使いやすいでしょう。
$ sudo vi 50-netcfg.yaml
network:
version: 2
ethernets:
eth0:
dhcp4: false
addresses: [192.168.x.y/24]
gateway4: 192.168.x.1
nameservers:
addresses: [192.168.x.z]
$ sudo netplan apply
作成するファイル名の先頭の数字は優先順位になっていて、数値が大きい方が後から読み込まれて優先される。
また、ファイルの内容として addresses となっているところは当然複数指定ができる項目だけど、ひとつしか設定しない場合でも[]で囲む必要あり。
([]省略してたら netplan apply を実行したときにエラーが吐かれる)
microSDの内容をeMMCに映してeMMCから起動させる
どっちがいいのか迷ったけど、出所不明の2GBのmicroSDなんて信頼性の欠片もない。
eMMCなKingstoneのNANDの方が圧倒的に安心なので、microSDからeMMCにフラッシュすることに。
BBBはmicroSDがmmcblk0に接続され、eMMCがmmcblk1につながっている。
念の為、microSDから起動した状態で df コマンドを見る。
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 219260 0 219260 0% /dev
tmpfs 49500 4292 45208 9% /run
/dev/mmcblk0p1 1777428 1191764 477328 72% /
tmpfs 247496 0 247496 0% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 247496 0 247496 0% /sys/fs/cgroup
tmpfs 49496 0 49496 0% /run/user/1000
確かにルート(/)がマウントされているパーティションが /dev/mmcblk0p1なので
microSDが /dev/mmcblk0
さらに念の為、/dev/内を覗いてみたり、fdiskなんかもしてみる。
$ ls -al /dev/mmcblk*
brw-rw---- 1 root disk 179, 0 May 3 13:21 /dev/mmcblk0
brw-rw---- 1 root disk 179, 1 May 3 13:21 /dev/mmcblk0p1
brw-rw---- 1 root disk 179, 8 May 3 13:23 /dev/mmcblk1
brw-rw---- 1 root disk 179, 16 May 3 13:17 /dev/mmcblk1boot0
brw-rw---- 1 root disk 179, 24 May 3 13:17 /dev/mmcblk1boot1
brw-rw---- 1 root disk 179, 9 May 3 13:23 /dev/mmcblk1p1
crw------- 1 root root 242, 0 May 3 13:17 /dev/mmcblk1rpmb
$ sudo fdisk /dev/mmcblk0
Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/mmcblk0: 1.9 GiB, 2032664576 bytes, 3970048 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
Disklabel type: dos
Disk identifier: 0xa27544e0
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 * 8192 3686399 3678208 1.8G 83 Linux
Command (m for help): q
$ sudo fdisk /dev/mmcblk1
Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/mmcblk1: 3.6 GiB, 3867148288 bytes, 7553024 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
Disklabel type: dos
Disk identifier: 0xa27544e0
Device Boot Start End Sectors Size Id Type
/dev/mmcblk1p1 * 8192 3686399 3678208 1.8G 83 Linux
Command (m for help): q
microSDが /dev/emmcblk0、eMMCが /dev/emmcblk1 ということを確認。
次のコマンドで、microSDの内容をeMMCにコピーするけど、デバイス名逆にしちゃったりすると、microSDの中身綺麗さっぱり消えたりするので実行には十分な確認を。
$ sudo dd if=/dev/mmcblk0 of=/dev/mmcblk1
これでしばらく待っていると、コピーが完了します。(だいぶ長かった記憶が・・・)
eMMC側のパーティションを拡張して容量を全て使えるようにする
fdiskでパーティションを確認。
$ sudo fdisk /dev/mmcblk1
Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/mmcblk1: 3.6 GiB, 3867148288 bytes, 7553024 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
Disklabel type: dos
Disk identifier: 0xa27544e0
Device Boot Start End Sectors Size Id Type
/dev/mmcblk1p1 * 8192 3686399 3678208 1.8G 83 Linux
Command (m for help):
ディスクとしては容量3.6GiBとして認識されていても、mmcblk1p1というパーティションで1.8GBしか確保されていない状態。
いったん、このパーティションを削除して全容量確保し直す。
で、この時、パーティションの開始セクタを覚えておくorメモしておくこと。
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.
Command (m for help): p
Disk /dev/mmcblk1: 3.6 GiB, 3867148288 bytes, 7553024 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
Disklabel type: dos
Disk identifier: 0xa27544e0
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-7553023, default 2048): 8192
Last sector, +sectors or +size{K,M,G,T,P} (8192-7553023, default 7553023):
7553023
Created a new partition 1 of type 'Linux' and of size 3.6 GiB.
Partition #1 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o: y
The signature will be removed by a write command.
Command (m for help): p
Disk /dev/mmcblk1: 3.6 GiB, 3867148288 bytes, 7553024 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
Disklabel type: dos
Disk identifier: 0xa27544e0
Device Boot Start End Sectors Size Id Type
/dev/mmcblk1p1 8192 7553023 7544832 3.6G 83 Linux
Filesystem/RAID signature on partition 1 will be wiped.
Command (m for help):
問題なさそうなので w で書き込んで終了し、再起動。
$ reboot
起動してきたら下記コマンドを実行すると容量が増える。
$ sudo resize2fs /dev/mmcblk1p1
dfで確認。
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 219260 0 219260 0% /dev
tmpfs 49500 4304 45196 9% /run
/dev/mmcblk1p1 3683788 1205248 2297956 35% /
tmpfs 247496 0 247496 0% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 247496 0 247496 0% /sys/fs/cgroup
tmpfs 49496 0 49496 0% /run/user/1000
最初、未定義の部分を二つ目のパーティションとして作成して resize2fs やってたけど、どうにも上手くいかず。
全体を定義し直して上手くいった。
2021年5月現在では・・・
BeagleBoneBlack よりも RaspberryPi の方が圧倒的ですね。
なので、敢えてこれからBBBで、ということはほとんどないでしょうけど、手元にある以上、使えるシーンでは使ってみようかと、備忘録としてここに残しておきます。
この記事にコメントしてみる