Raspberry Pi 3のルートドライブをSSD(USB)に

ご注意

この記事は,2016年9月4日に書いたもので,内容は陳腐化しています

Slackware ARM 14.xに限った話です.

また,Raspberry Pi 3 Model B, 同 Model B+で可能なSDカードなしのブートについては,一切触れていません.

Raspberry Pi 3(RPi3)が,各種サーバーに使えないか,という試みですが,結論的には,「使えないことはないけどUSB2接続のSSD(HDD)がボトルネックになり,それをがまんできるかどうか」と言えます

SlackwareARMをSDカードにインストール

前提条件である,SlackwareARM 14.2をRPi3のSDカードにインストールして動かす方法は,ちゃんと手引きしてくれるサイトがあるので,順を追って実行すれば,問題なくできます.

USBドライブで動かすまでの手順

次の段階として,USBドライブをルートドライブにしたいという,本題に入ります.手順はいくつかありますが,おおざっぱに言うと,

  1. ルートドライブにしたいUSBドライブを用意して,パーティションを切る
  2. SDカードのext4パーティションをUSBドライブにコピーする
  3. コピーしたUSBドライブの/etc/fstabを修正する
  4. SDカードの/boot/cmdline.txtを修正する

でおしまいです.おまけとして,32GBのSDカードを起動だけのために使うのがもったいなければ,/boot部分(vfat)だけを小さいSDカードにコピーして,起動用に使っても良いと思います.

SSDのパーティション

私の場合は,とりあえず,手持ちの1TB SSDをUSB3のケースに入れたものを用意しました.パーティションを切ってこんなふうになっています.

fdisk -l /dev/sda
Disk /dev/sda: 953.9 GiB, 1024209543168 bytes, 2000409264 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: 0x324275f7

Device     Boot   Start        End    Sectors  Size Id Type
/dev/sda1          2048    4018175    4016128  1.9G 83 Linux
/dev/sda2       4018176    8034303    4016128  1.9G 82 Linux swap
/dev/sda3       8034304 2000409263 1992374960  950G 83 Linux

いろいろ,流儀はあるでしょうが,システムが壊れかかっているような時に/boot用のsda1とswap用のsda2を合わせると,そこにちょっとしたディストリビューションをインストールできますので,それで,システムの回復を図るために,2GBくらいずつ切ってきました.今となっては,そんな方法を取らなくてもUSBメモリーから起動するなどして,レスキューはできるので,bootとswapが使い回せるくらいの意味しかありません

今回は,sda2をswapにして,sda3をrootドライブ(ext4)にします.mkswap, mkfsで準備します.

SDカードからSSDへのコピー

コピーの仕方も山ほどあります.大別するとRPi3でコピーする方法と,他のLinuxマシンでコピーする方法に分けられます.前者だと,/tmpや/devについて,もう一手間必要となるので,今回は,他のLinuxマシンを使用しました

sdカードと,USBドライブの両方をマウントして,cpなり,cpio等でコピーします.筆者はこういう場合もrsyncでコピーします.

rsync -artlvd /path/to/sd/ /path/to/usb_drive/

rsyncを使い慣れた方には言うまでもありませんが,それぞれのpathの最後の”/”は必要です(後のほうのは必要ないかも^^; ).

設定変更

fstab

コピーした先の/etc/fstabの最初の3行を,

/dev/sda2        swap             swap        defaults         0   0
/dev/sda3        /                ext4        defaults         1   1
/dev/mmcblk0p1   /boot            vfat        fmask=177,dmask=077 1   0

としました(それぞれの行が複数行として表示される場合がありますが,それぞれ一行ずつです).

cmdline.txt

次は,ブートのおまじないの変更です.sdカードのブートパーティション(vfat)にあるcmdline.txtを,次のようにします(ここも,複数行として表示される場合がありますが,改行なしの1行です).

dwc_otg.lpm_enable=0 console=tty1 nofont root=/dev/sda3 rootfstype=ext4 rootwait ro

変更したところは,root=/dev/sda3のところのみです.これで,sdカードとUSBドライブをRPi3に接続して起動すれば,USBドライブがルートになって起動します.

起動したあと

このあと,mariaDB(MySQLの互換サーバー),Apache, PHP, WordPressについて,それぞれデータを稼働中のSlackware64 (x86_64)のマシンから,まるまるコピーしただけで,どれも問題なく(あっけないくらい^^; )起動しました(ただし,コピーの際には,それぞれのデーモンを止めた方が無難と思います).また, Netatalk 3.1.9については,ソースからbuildしてインストールしてこちらも問題なく動きました.

印象

唯一の問題は,クライアントからのリクエストに対するレスポンスの悪さ(データの送信の遅さ)です.SDカードをルートにするよりは断然速いものの,USB2.0のスピードがボトルネックになります.もし,RPi3のUSBが3.0だったとしたら,十分使用に耐えるサーバーに仕上がったと思います.それだけに,とても残念です.

加筆・修正多数

2022年6月23日(木)に追記.
2017/08/29修正
2018/4/24の見解としては,Raspberry Pi 3 Model B+にすれば,十分とまではいかないまでも,かなりサーバーとして使えると思います.
外部電源式がいいです.もし,外部電源が使えないケースの場合は,外部電源式のUSB-HUBを介して接続します.
2018/4/24注: その後,gdiskを使って,gptにしてパーディションを切り直しました.
2023/03/13注: その後,SWAPは実機も仮想マシンもZRAMにしているのでこの “流儀” はもはや廃れ,/bootとルートの2パーティションにしています(RPi以外ではext4の1パーティションのみ).
sda1は,スペアーというか無駄です^^;
もう一台SSDをルートにするために,RPi3でコピーを試みましたが,エラーが出てしまいコピーができませんでした.他のしっかり稼働しているLinuxマシンでコピーすることをお勧めします.
別のLinuxマシンにマウントしたままであれば,/path/to/usb_drive/etc/fstab
その後発覚しましたが,OpenLDAPについては,バイナリーコピーではNGでした.元のサーバー上でldifを使ってテキストでexportして,Slackware ARMで,ldapaddを使って読み込ませる必要があります.
SATAインターフェースがあればなおさら良い.

Raspberry Pi 3ならKDEはなんとかなる(2)

若干の補足です.

SlackwareARMのデフォルトでは,KDEのデスクトップ効果がいろいろONになっていますが,その中のいくつかをOFFにしたほうが軽くなります.

20160904-translucency

TranslucencyをOFFにしたらずいぶん軽くなりました.

しかし,日本語入力はかなり厳しいです.とりあえず,Slackwareに標準添付されているSCIM + Anthyで日本語入力を試みましたが,レスポンスが悪くてまとまった文章を打つのは無理だと思います.使えるのは単文や,手直しくらいでしょう.

Mozcにしたら,さらに重くなるのか,使えるのか解りません.いずれ時間があったら試してみます.

Raspberry Pi 3ならKDEはなんとかなる

Raspberry Pi 3 (以下RPi3)を買いました.

KDEを走らせてWSにするつもりはないのですが,実力を測るためにSlackware ARM 14.2をインストールして,KDEを動かしてみました.

比較対象は,Raspberry Pi Model B(以下RPi)です.RPiでKDEは実用上無理なことはすでに試したとおりです

驚きました.RPi3はRPiの10倍速いという謳い文句ですが,まんざら誇張ではないと思います.

決して,Core i7のデスクトップマシンと比べて遜色ない,とかいう速度ではありませんが,十分耐えられるスピードだと思います.

IMG_4393

もっと安い組み合わせはありましたが,ケース入りのものにしました.

IMG_4397

CPUが4つあれば,満足^^;

RPi3-KDE-GIMP

GIMPも動く.

いよいよ,次は,USBドライブ(SSD)をルートドライブにして,起動させたいと思います.これがうまく行けば,RPi3によるweb, file サーバーの構築はできたも同然かもしれません.

実は,RPiにSlackware ARM 14.2をインストールしたとき,まだRaspberry Pi 3用のKernelは用意されておらず,14.1用のものを使ったのでした.しかし,Kernelが古いことによる問題はありませんでした.

Raspberry PiにKDEは無理だった^^; (2)

若干の写真など.Raspberry Pi Model Bです.

スティル写真だと,まともにKDEが起動している感じですが,起動からここまで10分ほどかかってます.IMG_4358

デスクトップが表示されて,Konsoleを立ち上げてtopを実行してみると,バックグラウンド処理が多くて,過重負荷状態^^;;IMG_4359

Konquerorで,当サイトを表示.1920×1200が表示されるのは賞賛に値します.ここまで起動から約20分^^;IMG_4361

いっぽうのRaspbian.GUIのデスクトップが表示された時点で余計なバックグラウンド処理がないのがいいです.IMG_4363

しかし,Webブラウザーの起動の遅さは,KDEのKonquerorと大差ないです.日本語フォントをインストールしてないので,読めません^^;;IMG_4364

これは,QEMUで動いているSlackwareARM 14.2.解像度は1024×768のみ.slackwareARMsystemsettings

Raspberry PiにKDEは無理だった^^;

最近,少々取り組んでいるのは,Raspberry Piで家庭用サーバーが構築できないか,ということです.

Raspberry Piに限らず,CPUにARMを使うマシンで,サーバーを構築できれば,家庭用サーバーとしては,能力的にも消費電力的にもちょうどいいのかなと思った次第です.

もちろん,x86系の省エネCPUを使うという手がないではありませんが,単に今動かしているサーバーをスペックダウンさせるだけ,ということになって,全然面白みがありません.

手持ちのRaspberry Pi Model B (1x CPU, 512MB RAM)で,Raspbianを動かすのは成功してます.まあ,Lチカみたいなもんですね.

ですが,Debianはほとんど利用経験がないので,自分のホームグラウンドに引きずり込むということで,SlackwareARMのインストールを試みてみました.

サーバーにGUIは関係ない,と長年考えていたのですが,KDEがちゃんと動くと,それはそれで,サーバーの管理も楽ですし,兼用Workstationとしても,メール,Webの閲覧,記事の更新くらいは遜色なくできて,非常に便利です

ということで,せっかくSlackwareARMに,KDEのフルセットがついていますから,KDEをインストールして試してみました.

最初は,QEMUのARMエミュレーターで試しました.結論的には全く使い物になりません.主記憶を256MB以下にすると,KDEのデスクトップが表示されません.2〜3日放っておけば表示されるのかもしれませんが^^;

512MB, 1024MBにすると,まあなんとか動きますが,それでもデスクトップが落ち着くまでに耐えられないほど時間がかかり,落ち着いてからStartボタンを押して,それからメニューが表示されるまでに数分という,なんのためにStartボタンを押したか,きれいサッパリ忘れるのに十分な時間を要します.

ネット検索の結果,Raspberry Pi Model Bだと,QEMUよりは速いという情報を得たので^^; 実機で試しましたが,こちらも,とてもじゃないけど使えません.そもそも,重量級のKDEは,ARMで動かそうなんてことは全く考えて作られてはないのでしょうね.

選択肢としては,xfceを使うことになると思いますが,KDEを使わないのでは,Slackwareにする意味があまりないようにも思います.まあ,そもそもGUIはあきらめたほうがいいということなのかもしれません.

とりあえず,xfceは動くようにするものの,他のマシンからsshで接続してCUIで設定するということにしてみます.

次は,ルートドライブをUSB接続のSSDにして,ブートさせて,webサーバーなどとして使い物になるか試してみます.

追記

Raspberry Pi 3にSlackwareARM 14.2をインストールしたところ,KDEはまあなんとか使えます.

写真や音楽の管理,Google Drive, iCloudとの連携は,スマートにはできませんが.