Banana Piなるものを買ってはみたが・・・

Banana Piなるものを買ってはみたが・・・

お久しぶりです。
今日はBanana Piについて備考録を兼ねて手順を残しておこうと思う。

○きっかけ
Banana Piを買って本家(?)のhttp://www.lemaker.org/より、fedoraをDLしてみた。
この手のボードは、Raspbian を使われる方が多いようで情報もRaspbian を使って書かれたサイトを良く目にする。
ただ、RaspberryPiのほうが極端に情報が多いのも事実だし、RaspberryPi2が発売され日本も購入者が増えてきているので、BananaPiの情報は少なくなってくるだろう。
でもせっかく買ったのだから、使わないともったいない。
著者は仕事から、RedHatLinuxELやCentOSを使う事が多いので、勉強がてら同系統のfedoraを使いたかった。

だが、http://www.lemaker.org/ に置いてある fedoraは、Xwindowがインストール済みで、多くのソフトもインストール済みではある。初心者にとっては良いのかもしれないがLinuxを使い出して数年目の著者は、出来れば「最小インストール」状態のほうが何かと勉強には良いように感じる。
著者の場合は、躓きながら覚える性質なので、インストール済みだと覚えない部分が出てくるのだ。
この事はLinuxを使い始めの頃の方たちにもあるようで、XwindowsがないとIPアドレスすら変更出来ない。
GUIで出来てしまうから、CUIの方法を覚える必要がないのだ。
だが、仕事上で自分が構築していないLinuxサーバを使う機会が発生した時に、
「Xwindowがインストールされていないから、IPアドレスが変更できません」という事態は避けなければいけない。

という事で、BananaPiを最小インストール状態にしたい。
でも、http://www.lemaker.org/ に最小インストールのイメージはない。
どうしたものか・・・。まだクロスコンパイル環境なるものを作って、OSインストールからやるのは
私の現在の知識では無理だ。自宅には普通のIntelのPCしかない。

○ fedora21からBananaPiも正式サポート?
fedoraプロジェクトのページ 
http://fedoraproject.org/wiki/Architectures/ARM/F21/Installation#For_the_Banana_Pi_.28Allwinner_A20.29
を見つけた。これだったら、自分でもできるのでは?と思い、早速チャレンジ。
最初は「Manual」の方法で書いてある通り(英語に自身がないので本当に書いてある通りかは不明)やってみた。
しかし、BananaPiにSDカードを挿しても、電源ランプ(赤)が点灯するだけで、緑ランプが点滅しない。
当然ながら、画面もブラックアウトしたままで起動せず。
ついには、上記ページのスクリプトまでDLして、SDカードに書き込み後、BananaPiに入れるも起動しない

○ こんな方法で良いのか分からないが・・
http://www.lemaker.org/ に置いてある fedoraは起動して、Xwindowが出てきて使える状態になる。
だが、fedoraプロジェクトに置いてあるミニマムイメージを使って、手順どおりにやっても起動しない。

じゃあ、2コイチにしてしまえば・・・・ と思ってしまった。
U-bootとkernel部分は、http://www.lemaker.org/ に置いてあるものを使い、それ以外はfedoraプロジェクトの最小インストールのイメージを使う。
これでどうだ!!ってな感じでした。

○ 環境準備
今回は、IntelPCにCentOS7をインストール済みのものがあるので、そちらの環境を使ってみる。
SDカードに書き込みまでをCentOS7上でやってしまい、その後BananaPiに挿して起動させてみる事にした。

○ ファイルの準備
(1) Fedora For BananaPi の入手
http://www.lemaker.org/ のダウンロードページから「Fedora For BananaPi」をDLする。
最初にアクセスすると、「Fedora For BananaPro」のOSイメージが表示されるので、
「If you want to download the OS image version for Banana Pi, please click here」
でクリックして
「Fedora For BananaPi」のOSイメージをDLする。
著者がDLしたのは、「Fedora For BananaPi v1412」だ。
DLサイトがいくつかあるが、どこも海外なので速度が出ない。日本にもミラーサイトを立てて欲しいと
常々思う。

(2) fedoraプロジェクトの最小インストールイメージの入手
http://download.fedoraproject.org/pub/fedora/linux/releases/21/Images/armhfp/
から、「Fedora-Minimal-armhfp-21-5-sda.raw.xz」をDLする。
流石にfedoraプロジェクト。日本ミラーサイトに誘導されるぜ。DLも早い。

この2つをCentOS7にぶち込む。

○ 手順

SDカードは手元にあるのは16GB。でも、4GBでもいけそう。ただ色々インストールすると思うので
8GBはあったほうが良いだろう。

(1) SDカードをUSBカードリーダ経由でCentOS7に挿す
ちなみに著者のCentOS7はautomountを切っているので、手動マウントする。

# dmesg
を実行して、SDカードのデバイス情報を得る。著者の場合は、/dev/sdeだった。

とりあえず、購入初期状態はfatでフォーマットしているので、何となく削除。MBR領域も削除。
# fdisk /dev/sde
d -> 1
w

# dd if=/dev/zero of=/dev/sde bs=512 count=1

これで、キレイさっぱりのはず。

(2) まずは、OSイメージを解凍してみる
著者は、この手順を書くまでに、BananaPiで「Fedora For BananaPi v1412」を起動させて、
いくつかの情報を採取した上で、この手順は簡素に書いてある。
なので、この手順を見た人が「なんで?」と思う箇所もあると思うが、「Fedora For BananaPi v1412」
はそうだった。という事になるので、イメージがバージョンアップすると、この手順ではうまくいかない
かもしれない。

[1] Fedora_For_BananaPi_v1412.tgzを解凍する
# tar zxfv Fedora_For_BananaPi_v1412.tgz

[2] Fedora-Minimal-armhfp-21-5-sda.raw.xzを解凍する
# xz -d Fedora-Minimal-armhfp-21-5-sda.raw.xz

[3] 中身のパテーション情報を見る
# fdisk -l Fedora_For_BananaPi_v1412.img

-------------------------------------------------------------------------------------
Disk Fedora_For_BananaPi_v1412.img: 3670 MB, 3670016000 bytes, 7168000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x97ba5fb6

デバイス ブート 始点 終点 ブロック Id シス テム
Fedora_For_BananaPi_v1412.img1 2048 104447 51200 83 Linux
Fedora_For_BananaPi_v1412.img2 104448 7167999 3531776 83 Linux
-------------------------------------------------------------------------------------
・1番目のパテーション領域が、U-Bootの領域
・2番目のパテーションが / の領域 (/bootも同じ領域に保存されている)

(3) U-Boot領域をSDカードに書き込む (MBR領域も併せて)

# dd if=Fedora_For_BananaPi_v1412.img of=/dev/sde count=51200
これで、1番目のパテーション領域まで書き込まれるはず。
count= は、1番目のパテーション領域の「ブロック」の値を入れる。bs=512 も追加指定したほうが
良かったのかも?と後になって気づく。

(4) SDカードを確認。そして、/ 領域を作る(再作成)

# fdisk -l /dev/sde

---------------------------------------------------------------------------------------
Disk /dev/sde: 15.7 GB, 15719727104 bytes, 30702592 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x97ba5fb6

デバイス ブート 始点 終点 ブロック Id システム
/dev/sde1 2048 104447 51200 83 Linux
/dev/sde2 104448 7167999 3531776 83 Linux
---------------------------------------------------------------------------------------
MBRも書き込まれているので、2番目の領域も出てきたのだと理解(違うのかな・・・)
何はともあれ、2番目のパテーションを一旦削除し、再作成する。

# fdisk /dev/sde
d -> 2
n -> p -> 2-> 104448 -> +8G
w

# fdisk -l /dev/sde

---------------------------------------------------------------------------------------
Disk /dev/sde: 15.7 GB, 15719727104 bytes, 30702592 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x97ba5fb6

デバイス ブート 始点 終点 ブロック Id システム
/dev/sde1 2048 104447 51200 83 Linux
/dev/sde2 104448 16881663 8388608 83 Linux
---------------------------------------------------------------------------------------

# mkfs.ext4 /dev/sde2

(5) /boot 領域と /領域をコピーする
著者としては、/boot 領域と/領域は 分けたかったのだが、kernel部分(/boot)を変更すると
色々と手順が増えそうな気がしたので、まずは正攻法でやった。

[1] まずは、転送元ファイルをマウント準備する。

# mkdir /media
# cd /media
# mkdir boot root

# fdisk -l Fedora_For_BananaPi_v1412.img

-------------------------------------------------------------------------------------
Disk Fedora_For_BananaPi_v1412.img: 3670 MB, 3670016000 bytes, 7168000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x97ba5fb6

デバイス ブート 始点 終点 ブロック Id シス テム
Fedora_For_BananaPi_v1412.img1 2048 104447 51200 83 Linux
Fedora_For_BananaPi_v1412.img2 104448 7167999 3531776 83 Linux
-------------------------------------------------------------------------------------

[2] / 領域 (2番目のパテーション)をマウントする [bootの領域だけ欲しいので]

# mount -t ext4 -o loop,offset=53477376 Fedora_For_BananaPi_v1412.img /media/boot
offset= の値は以下の通り。
上記のfdisk -l の情報で、
>Sector size (logical/physical): 512 bytes / 512 bytes
とあるので、1Secotor は512byte

> デバイス ブート 始点 終点 ブロック Id シス テム
>Fedora_For_BananaPi_v1412.img2 104448 7167999 3531776 83 Linux
2番目のパテーションの始点が104448

offset = 始点のセクタ * 1 Secotorのbyte = 104448 * 512 = 53477376 となり、
2番目のパテーションの始点は、53477376 byte目となるので、offset=53477376 となる。

# fdisk -l Fedora-Minimal-armhfp-21-5-sda.raw

-------------------------------------------------------------------------------------
Disk Fedora-Minimal-armhfp-21-5-sda.raw: 2139 MB, 2139095040 bytes, 4177920 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0xa99d2bd5

デバイス ブート 始点 終点 ブロック Id システム
Fedora-Minimal-armhfp-21-5-sda.raw1 2048 1001471 499712 83 Linux
Fedora-Minimal-armhfp-21-5-sda.raw2 1001472 1251327 124928 83 Linux
Fedora-Minimal-armhfp-21-5-sda.raw3 1251328 3985407 1367040 83 Linux
-------------------------------------------------------------------------------------
・1番目のパテーション領域が、/bootの領域
・2番目のパテーションが swap の領域
・3番目のパテーションが / の領域

[3] / 領域 (3番目のパテーション)をマウントする [/の領域だけ欲しいので]

# mount -t ext4 -o loop,offset=640679936 Fedora-Minimal-armhfp-21-5-sda.raw /media/root
offset= 1251328 * 512 (算出法は上記参照)

[4] SDカードの / 領域をマウントする

# mkdir /mnt/root
# mount /dev/sde2 /mnt/root


[5] / 領域をコピーする

# cd /mnt/root
# dump -0f - /media/root | restore xf -

       (コピー中のメッセージ)

最後に以下のメッセージが出るので「y」を入力
set owner/mode for '.'? [yn] y

# dump -0f - /media/boot/boot | restore xf -

       (コピー中のメッセージ)

最後に以下のメッセージが出るので「y」を入力

set owner/mode for '.'? [yn] y

[6] fstab をコメントアウト
[2]で確認したパテーション情報で、/boot とswap があるので、コメントアウトする。
swapに関しては、必要かな?と思ったら、後で追加すれば良いかな・・・と思うので。

# cd /mnt/root/etc
# vi fstab

---2行目と3行目をコメントアウトし保存------------------------------------------------
UUID=e098e36f-f409-44cb-9d8e-9d5c0e2ed9c9 / ext4 defaults,noatime
#UUID=983f0f90-9d01-4e45-93d7-4d6a7f2564bb /boot ext3 defaults,noatime
#UUID=7814f1f0-cdbf-4942-83d6-2490dc35b368 swap swap defaults,noatime
-------------------------------------------------------------------------------------
ちなみに、UUID= の値はとりあえず無視して良い。
BananaPi起動時に勝手に再認識してくれるようです。

fstabの上記2行をコメントアウトしないと、BananaPiで起動した時に、/boot かswapかの領域が自動認識に失敗してシングルモードで立ち上がる。
この時点で、/etc/shadowはパスワードが設定されていないので、シングルモードでログイン出来ない。著者は一旦BananaPiの電源を落とし、CentOS7でSDカードを再マウント後に/etc/shadowのrootの行にパスワードを入れて、BananaPiで再度立ち上げた。
よって、fstabの2行をコメントアウトしておけば、BananaPiで起動時にシングルモードへは移行されず、OS起動が継続される。

(6) SDカードをアンマウントする

# cd /
# umount /mnt/root

ここまできたら、USBカードリーダを抜いて、SDカードを抜いて、BananaPiに挿して起動。
おお~。起動するぜ。
そして、起動途中で対話モードになり、
・Language/TimeZone/RootPasswordの変更/Userの作成
が出来る。
とりあえず、RootPasswordだけ変更して、「C」でcontinue する。
→ 他の項目は、ログインしてから変更できるから・・・・
→ RootPasswordを変えないと、どうなるのか試していない。
ノーパスワードでログインできるのか、それともログインできず、一からやり直しになるのか

起動が続き、ログインプロンプトが出る。

ID=root Password=上記で入れたパスワード入力で
ログイン可能!!

前へ

Spam判定材料ソースの一部変更

次へ

賀正