かなり、ハマッてしまったのでポイントを後ほど、メモしておくことにします。
何にはまったかっていうと、Fedora21 ~ 22 の各種ARM 用のイメージファイルを BerryBoot の img にする手順がうまくいかなくて、以下のようになって、Kernel panic でBoot しないわけで。くじけそうになった最後にやっとできました。
オフィシャルの手順は、以下のように紹介されています。
Adding your own custom operating systems to the menu
$ sudo kpartx -av image_you_want_to_convert.img
add map loop0p1 (252:5): 0 117187 linear /dev/loop0 1
add map loop0p2 (252:6): 0 3493888 linear /dev/loop0 118784
$ sudo mount /dev/mapper/loop0p2 /mnt
$ sudo sed -i ‘s/^\/dev\/mmcblk/#/g’ /mnt/etc/fstab
$ sudo mksquashfs /mnt converted_image_for_berryboot.img -comp lzo -e lib/modules
$ sudo umount /mnt
$ sudo kpartx -d image_you_want_to_convert.img
実際にやってみると、まぁ、いろいろあるのはいつものこと。
ポイントは、ルートファイルシステム直下のシンボリックリンクを実態にして、逆側から張りなおすこと!そうしないと、以下のようになって、RAM ディスクの kernel から、動かす img の ファイルシステムがマウントできません。後ほど、手順をつけておきます。次やるとき、絶対忘れる自信があるので。
とりあえず出来たので画像メモを貼り付け。
で、各種初期設定をすればOK
もうね、疲れました。が、ARM の IoT デバイスのノウハウが貯まったということで、少し前進。各ディストリビューションも ARM 用のオフィシャルイメージの準備もしてきているわけですし。野良イメージは怖いので、とりあえずはオフィシャルのを使えるようになったということで、満足。
さて、QKして気力、体力も復活したので、忘れないうちにメモしておきます。
オフィシャルの ARM イメージは上のリンクから辿って、以下のようなファイルが落とせます。ファイルサイズの大きい順では、
Size byte M,GB FineName
———- —- —————————————–
1194022996 1.1G Fedora-Workstation-armhfp-22-3-sda.raw.xz
1129186356 1.1G Fedora-KDE-armhfp-22-3-sda.raw.xz
837507064 799M Fedora-Xfce-armhfp-22-3-sda.raw.xz
761534064 726M Fedora-LXDE-armhfp-22-3-sda.raw.xz
552451864 527M Fedora-SoaS-armhfp-22-3-sda.raw.xz
427291172 407M Fedora-Server-armhfp-22-3-sda.raw.xz
301285980 287M Fedora-Minimal-armhfp-22-3-sda.raw.xz
となります。
今までは、GUI環境などはまったく無視してきたので、どの環境がよいのかはわかりませんが、下2つはサーバ用途ですので、今回はFedora の代表的な顔である、Workstation を入れてみたいと思います。まぁ、最後は結局全部入れることになるわけですが。
さて、今回の手順は、BerryBoot の インストールできる状態のイメージの作成ということですが、今回は、さらに iscsi boot する環境でそれをテストしてみたいと思います。とは、言っても通常のSDカードやUSBデバイス(USBメモリやUSB HDD)に入れるのとそれほど変わりはありません。
前提条件をまとめますと以下のようになります。
今回の環境
・BerryBoot で、ISCSI Bootの SCSI デバイスにルートを入れる
・BerryBoot 用のimg があれば、インストールはBerryBoot のインスーラーがいれてくれる
・ARM 物理環境は、RasPi2 + 2GB SDCard (実際は250Mもあれば足ります)+ LAN (WiFi でもいけるようです)
・iSCSI のターゲットは、FreeNAS (この説明は除外)で、仮想環境で提供。本体はosx
・img 作成には、ubuntu 12 を使用
作業の流れは、以下のようになります。
1) FedoraのARMオフィシャルサイトより、イメージを取得
2) 圧縮されているので展開し、img の状態に。
3) img の中にあるルートパーティションをマウント
4) ルート直下のシンボリックリンクを修正
5) fstab をコメントアウト
6) lzo 圧縮した BerryBoot 用の img を作成
7) 後処理
手順 1
ubuntu上で、作業します。
オフィシャルサイトより、イメージをゲット。全部 root でやってますので、sudo は付けていません。
CHECKSUM
# sha256sum Fedora-Workstation-armhfp-22-3-sda.raw.xz
※sum を確認
手順 2
ファイルは何なのか確認。
# file Fedora-Workstation-armhfp-22-3-sda.raw.xz
Fedora-Workstation-armhfp-22-3-sda.raw.xz: XZ compressed data
XZ 圧縮なので、xzcat で展開して、img とします。
# xzcat -v Fedora-Workstation-armhfp-22-3-sda.raw.xz > Fedora-Workstation-armhfp-22-3-sda.img
速ければ、1分ちょいくらいです。
手順 3
img ファイルの中のルートファイルシステムをマウントします。kpartx だと簡単ですが、無い環境用に、手動でやる方法も書いておきます。kpartx -a で、イメージファイルの中のパーティションをブロックデバイスに割付ます。
# kpartx -av Fedora-Workstation-armhfp-22-3-sda.img
add map loop0p1 (252:0): 0 999424 linear /dev/loop0 2048
add map loop0p2 (252:1): 0 1000482 linear /dev/loop0 1001472
add map loop0p3 (252:2): 0 9765625 linear /dev/loop0 2001954★ここをマウント
# mkdir /mnt/fedora22
# mount /dev/mapper/loop0p3 /mnt/fedora22/
確認します。
# ll /mnt/fedora22/
合計 92
dr-xr-xr-x. 18 root root 4096 5月 22 04:00 ./
drwxr-xr-x 3 root root 4096 7月 19 09:39 ../
lrwxrwxrwx. 1 root root 7 8月 16 2014 bin -> usr/bin/
drwxrwxr-x. 2 root root 4096 5月 22 03:58 boot/
drwxr-xr-x. 4 root root 4096 5月 22 04:14 dev/
drwxr-xr-x. 126 root root 12288 5月 22 04:28 etc/
drwxr-xr-x. 2 root root 4096 8月 16 2014 home/
lrwxrwxrwx. 1 root root 7 8月 16 2014 lib -> usr/lib/
drwx——. 2 root root 16384 5月 22 03:58 lost+found/
drwxr-xr-x. 2 root root 4096 8月 16 2014 media/
drwxr-xr-x. 2 root root 4096 8月 16 2014 mnt/
drwxr-xr-x. 2 root root 4096 8月 16 2014 opt/
drwxrwxr-x. 2 root root 4096 5月 22 03:58 proc/
dr-xr-x—. 2 root root 4096 5月 22 04:28 root/
drwxr-xr-x. 32 root root 4096 5月 22 04:12 run/
lrwxrwxrwx. 1 root root 8 8月 16 2014 sbin -> usr/sbin/
drwxr-xr-x. 2 root root 4096 8月 16 2014 srv/
drwxrwxr-x. 2 root root 4096 5月 22 03:58 sys/
drwxrwxrwt. 7 root root 4096 5月 22 04:28 tmp/
drwxr-xr-x. 11 root root 4096 5月 22 04:00 usr/
drwxr-xr-x. 21 root root 4096 5月 22 04:12 var/
kpartx が無い場合は、以下で。
▼パーティションのサイズを調べて、個別にマウントさせるparted Fedora-Xfce-armhfp-22-3-sda.img
GNU Parted 2.3 /nfs/Fedora-Xfce-armhfp-22-3-sda.img を使用 GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。 (parted) u★ 単位は? [compact]? b★ (parted) print★ モデル: (file) ディスク /nfs/Fedora-Xfce-armhfp-22-3-sda.img: 4743757824B セクタサイズ (論理/物理): 512B/512B パーティションテーブル: msdos 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 1048576B 512753663B 511705088B primary ext3 2 512753664B 1025000447B 512246784B primary linux-swap(v1) 3 1025000448B 4525000191B 3499999744B primary ext4 ^^^^^^^^^^ (parted) q★ root@ubu:/nfs# # mount -o loop,offset=1025000448 Fedora-Xfce-armhfp-22-3-sda.img /mnt/fedora22 ^^^^^^^^^^※ B は取ってね # df -h Filesystem Size Used Avail Use% Mounted on :: /dev/loop1 3.2G 2.3G 843M 74% /mnt/fedora22
手順 4
ルート直下のシンボリックリンクを修正します。理屈はよくわかっていませんが、逆から張りなおすことでとりあえずブートしています。lib と bin と sbin を消して、実体を移動させ、逆からシンボリックを張っています。