オープンソースカンファレンス2017 Tokyo/Spring向け配布資料 平成29年03月10日(金) 平成29年03月11日(土) Plamo Linuxメンテナグループ Plamo-6.2 for ARMインストールガイド ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ■はじめに  PlamoのARM対応,準備期間を含めて1年3ヶ月経過しました。ようやっと, 01_minimumカテゴリのパッケージぐらいまで揃ったので,そろそろ頃合いとい うことでインストーラを用意し,Plamo-6.2 for ARMとして一般公開します。 ftp://plamo.linet.gr.jp/pub/plamo-6.2_arm_sd.img [ご注意] ----------------------------------------------------------------------  Plamo-6.2 for ARMのパッケージは,armv7l(ARMv7 Little Endian)アーキテ クチャでビルドされており,対応するハードウェア環境上で動作することが期 待されるものの,GPUファームウェアやカーネルがRaspberry Pi 2 Model Bに特 化しており,Raspberry Pi 2 Model B以外ではインストーラが動作しません。  Raspberry Pi 3 Model Bなどでの動作は,今後対応する予定です。 ----------------------------------------------------------------------  既存のx86(x86_64)版のインストーラは,ISOイメージで配布しているのに対 し,arm版はRaspberry Piで動かすことを想定しているので,microSDカードに ベタ書きするイメージとなっています。  現状,用意できているカテゴリは00_base,01_minimum,09_kernel,および 一部のパッケージのみ収録した02_x11,03_xclassics,04_xapps,05_extなの で,microSDカードの容量は,とりあえず1GBあれば十分でしょう。普通にddコ マンドで書き込みます。 # dd if=plamo-6.2_arm_sd.img of=/dev/mmcblk0 bs=1M  インストーラスクリプトは,既存のPlamo-6.1 x86(x86_64)版のインストーラ のものを流用しているので,今までと変わりない使い勝手で,インストールを 行うことができます。もちろん,メッセージは日本語で表示されます。 ■Plamo Linux for ARMインストーラの内部構造  initrd.gzは,既存のインストーラと同様にbusyboxを基本として,busyboxに 含まれていないコマンドや肝となるアーカイブ系/ファイルシステム系のソフト ウェアなどと組み合わせて作成しました。その際,なるべくコンパクトかつシ ンプルにまとめたかったので,/usr以下のツリーをルートに持ってくるように 調整し,すべてのコマンドを静的リンクにしてあります。  現状,インストーラが必要としないコマンドなども結構含まれているので, 全体的にやや大きめなサイズになっているものの,もうちょっと整理すれば, まあまあすっきりするかなと思います。  インストーラは,以下のPlamoBuildスクリプトを使って作成しています。 ftp://plamo.linet.gr.jp/pub/Plamo-src/plamo/99_test/installer/PlamoBuild.installer-6.2  その際,インストーラに収録するパッケージを,/mnt/work/Plamo-6.xに置か れたツリーから取り込む仕組みになっているので,あからじめ手元にミラーを 用意してマウントしておきます。  ちなみに,上記PlamoBuildスクリプトをx86(x86_64)環境で実行すると,その 環境で動作するインストーラ(ISOイメージ)が得られます。  Plamoをフルインストールした標準ビルド環境で,ext4ファイルシステムに置 かれた空の作業ディレクトリに,PlamoBuildスクリプトをコピーして実行すれ ば,30分ぐらい(※)でインストーラが出来上がるはず。 ※) カーネルパッケージ一式をビルドするのに,1アーキあたり3時間掛かる 程度のスペックのマシンの場合の実測値(Plamo-6.xツリーを除いた資材の ダウンロード時間:約10分を含む) ■Plamo Linux for ARMインストールチュートリアル  Raspberry Pi 2上のUSB外付けHDDに,Plamo Linux for ARMをインストールす る手順を紹介します。  Raspberry Piを標準のUSB Type-Cで電源供給している場合,USB外付けHDDを 外部電源供給にしないと動作しないようなので,ご注意ください。  USB外付けHDDにインストールする代わりに,Plamo Linux for ARMのインスト ーライメージを,64GBなど大容量のmicroSDカードに書き込み,空き領域に必要 なパーティションを切って,インストールすることは可能です。ただし,使い 込んでいくうちにmicroSDカードが壊れるかも知れないので,ご注意ください。  Raspberry PiはRTC非搭載なので,インストーラを起動してrootでログインし たら,何はともあれ,date -s "2017-03-10 10:09:35"とかして,UTCで時刻合 わせをお勧めします。続けて,サウンドまわりが正しくインストールされるよ うに,modprobe snd-bcm2835を実行します。 # 時刻合わせしておいてからインストールを開始した方が,インストールした # 日時がルートファイルシステムに記録されるので,のちのち何かと便利と思 # います。  インストーラのメニューでは,以下のように設定を行います。 ・/dev/mmcblk0p1を/bootにマウントするように設定する。 ・インストール元の選択で「ハードディスクパーティションからインストール する」を選択し,パーティションは/dev/mmcblk0p1,ディレクトリはplamoを 指定する。 ・インストールするカテゴリの選択では,minimum,x11,xclassics,xapps, ext,およびkernelを選択する。 ・システムの設定で,ブートローダはインストールしない。  インストールが完了したら,PlamoインストールSDを若干編集します(さもな いと,再起動するとインストーラが立ち上がってしまう)。poweroffを実行し, PlamoインストールSDを抜き取り,操作できる環境に持って行っても良いのです が,Raspberry Pi上でPlamoインストールSDをマウントしてviなりで編集した方 が手っ取り早くて良いかも。まず,kernel7.img-をkernel7.imgにコ ピーして,config.txt,cmdline.txtを編集します。 # cp -p kernel7.img-4.1.15-plamoRPi2 kernel7.img [config.txt] ・“dtparam=audio=on”の行を追加する。 ・“ramfsfile=”“ramfsaddr=”の行を削除する。 (修正例) ---------------------------------------------------------------------- --- config.txt.orig 2015-11-28 20:31:10.000000000 +0900 +++ config.txt 2017-03-10 22:39:22.000000000 +0900 @@ -43,6 +43,7 @@ #arm_freq=800 # Uncomment some or all of these to enable the optional hardware interfaces +dtparam=audio=on #dtparam=i2c_arm=on #dtparam=i2s=on #dtparam=spi=on @@ -51,6 +52,4 @@ #dtoverlay=lirc-rpi # Additional overlays and parameters are documented /boot/overlays/README -ramfsfile=initrd.gz -ramfsaddr=0xa00000 ---------------------------------------------------------------------- [cmdline.txt] ・rootfsが/dev/sda1でない場合,“root=”のオプションを正しく指定する。 ・“initrd=”のオプションを削除する。 ・“wlan”のオプションを追加する(無線LANを使う場合)。 (修正例) ---------------------------------------------------------------------- --- cmdline.txt.orig 2017-01-13 09:00:00.000000000 +0900 +++ cmdline.txt 2017-03-10 22:39:40.000000000 +0900 @@ -1 +1 @@ -dwc_otg.lpm_enable=0 console=tty1 nofont root=/dev/sda1 rootfstype=ext4 rootwait ro vga16 unicon=eucjp vt.default_utf8=0 panic_output=7 initrd=0xa00000,0x56e717f +dwc_otg.lpm_enable=0 console=tty1 nofont root=/dev/sda2 rootfstype=ext4 rootwait ro vga16 unicon=eucjp vt.default_utf8=0 panic_output=7 wlan ----------------------------------------------------------------------  再起動してシステムが起動すれば成功となります。 ■Linuxカーネルの再構築  Plamo Linuxでは,インストールが完了したら,自分の環境に合わせて,カー ネルの再構築を行うことを推奨しています。カーネルの再構築は,x86系(lilo ブート環境,grubブート環境)と同様に,/usr/src/linux/以下のソースツリー で,make menuconfig && make && make install && make modules_installの手 順により,/bootにマウントされたmicroSDカードにカーネルイメージが書かれ て,再起動すれば新しいカーネルで上がってくるようになっています。 ---- 田向 正一 tamuki@linet.gr.jp