RasPi 4へのupgrade手順

Raspberry Pi 3 Model B+(以下RPi3+)で動いていたSlackware ARM 14.2を,Raspberry Pi 4 Model B(以下RPi4)へ移転する手順のメモです.

→ 免責等について

まずは,RPi3+で使用していたSDカードをRPi4へ挿し,USB3ハブとそれにつながるルートディスク,バックアップディスクマウスとキーボードもそのまま移し,LANポートにUTPケーブルを挿し,ディスプレー(microHDMI)と電源をつないで起動を試みましたが,起動しません.

ざっと調べるとRPi3(+)用のKernelではNGなようです.

そこで,Slackware ARM on a Raspberry Pi (SARPi)プロジェクトから,RPi4用のKernel, Kernel modules, Boot firwareをダウンロードします.

これらを展開して,/bootの中身をブート用のSDヘ,モジュールを/lib/modulesへコピーすれば良いだけの話です^^;

モジュールはKernelのサフィックスが違うので,上書きされることはないですが,SDの上書きを活きたシステムでするのは,2度とブートできなくなる可能性があって危険です

そこで,いったんシステムを止め,SDカードをWindows機で複製した上で,/bootの中身を上書きしました.

結果これで動きました(さらに若干のおまじないは必要てすが).

USBドライブ(SSD)との接続は,これまでのUSB2からUSB3になりましたが,いまのところ体感速度的には大きな差は感じられません.

KVM経由.
これも,たぶん大丈夫ですが,念を入れた方が安全でしょう.

PHP 7

Slackwareは,3年前にリリースされた14.2が最新版で,セキュリティーパッチがときどきリリースされています.しかし,PHPは,outdatedとなってしまった,5.6.xにとどまったまま,7.xに移行する気配はなく,このWordPress他いくつかのサービスを,サポートの切れたPHPで動かし,セキュリティ上の危機にさらすことになってしまいました.

そこで,久しぶりに自力でパッケージのbuildをしてみました.PHPのbuildは,x86やadm64ではずっとやってきていたのですが,最近はそういうめんどうな^^; ことは避けていました.

最初,adm64時代PHP 5.6.xのbuildに自分で使っていたconfigure optionsを使いましたが,うまくいきませんでした.mysqlのサポートが変わったのが原因のようですが,いくつかオプションを追加しても解決しませんでした.

そこで,ネット検索しました.ネット検索すると,一番ヒットする情報は,PHP 5時代の役に立たないどころか有害となる情報です.

しかし,CentOS用のoptionを見つけ出し,そこからSlackwareには含まれていないrecordを外したらうまくいきました.

以下が,Slackware ARM 14.2で,PHP 7.3.10-devのbuildがうまくいき,WordPressの動作に成功したconfigure optionsです

CFLAGS="-O2" ./configure \
    --enable-mbstring \
    --enable-zip \
    --enable-bcmath \
    --enable-pcntl \
    --enable-ftp \
    --enable-exif \
    --enable-calendar \
    --enable-sysvmsg \
    --enable-sysvsem \
    --enable-sysvshm \
    --enable-wddx \
    --with-curl \
    --with-iconv \
    --with-gmp \
    --with-pspell \
    --with-gd \
    --with-jpeg-dir=/usr/lib \
    --with-png-dir=/usr/lib \
    --with-zlib-dir=/usr \
    --with-xpm-dir=/usr \
    --with-freetype-dir=/usr \
    --enable-gd-jis-conv \
    --with-openssl \
    --with-ldap \
    --with-pdo-mysql=/usr \
    --with-gettext=/usr \
    --with-zlib=/usr \
    --with-bz2=/usr \
    --with-mysqli=/usr/bin/mysql_config \
    --with-apxs2=/usr/bin/apxs \
    --build=arm-slackware-linux

そろそろSlackwareの使用も潮時かなぁと思っていましたが,これで,またしばらく続けて使うことにします.

参考にしたサイト

その後(2019/09/01)

その後もごにょごょいじって,git repositoryのはやめて,PHP 7.3.9を使用しています.PHPを利用しているパッケージは,

  • WordPress
  • PukiWiki
  • phpMyAdmin
  • phpLdapAdmin

です.WordPress以外は非公開で,自分専用です.phpMyAdminとphpLdapAdminは,新しいージョンがPHP7と不具合があったので,updateを止めていましたが,今回それらも最新安定版にできました.

configure時にunrecognized optionsとなったものは外してあります

3日分のメール消失

このBLOGを読んでくださる方にはたぶん関係なく,ほぼ,自分宛の記録です.

昨日(2019年6月4日)の夜,受信したメールを整理していたら,かなりのディレクトリー内に保存したメールが読めなくなりました.

今朝,imapデーモンの入り口になっているinetdを再起動して,imapのクライアントである,ThunderbirdとApple Mailで再度確認したところ,読めないディレクトリーはむしろ増えているようです.

何らかの原因で,imapのデータが壊れたようです.何年かに1度あります^^;

最新の保存である4日朝9時のものに復元してみました.しかし,状況は改善しなかったので,その前の1日のものに復元しました.なぜ,2日,3日にバックアップをとらなかったか悔やまれますが,職場で,同様にトラブったとき,最新のバックアップが1か月も前だったことがあったので,それよりははるかにましです^^;

今のところ,問題はないようですが,1日6時(JST)以後に,imapのメールボックスに保存(整理)したメールは完全に消失しました.

たぶん,無線クラブのメンバーの方とのやりとりと,2, 3の通販ショップからの受付・出荷メールが消失分に該当すると思います.

ほぼ回復

最近のやりとりはほとんど,GMailなので,上記の復元の後,GMailのゴミ箱からこの3日間分のメール(処理済みなのでGMail上では捨ててました)を探し出して,たぶん,ほとんど回復できたのではないかと思います.

Slackware ARM: ntpパッケージupdate時の注意

自分宛の注意事項です.

Raspberry Piは,バッテリーで駆動される時計を持っていませんから,起動時は1970年1月1日になってしまいます.

Slackware ARMは他のdistroと違って,起動スクリプトにこれをなんとかする仕組みがないので,ntpdが同期して最初に内蔵時計を更新するまで,1970年1月1日のままで,いろいろ不都合が起きます.

そこで,rc.ntpdのstart()内に,ntpdateを使ってとりあえずどこかの時間サーバーから時刻をもらってくるコマンドを書き加えています.

しかし,ntpのパッケージをupdateすると,オリジナルのntpdateコマンドの入ってないスクリプトに上書きされて,この機能が失われてしまいます.

ということで,リブートしたとき1970年1月1日になるようだったら,rc.ntpd-has-ntpdateとして保存しているスクリプトをrc.ntpdに上書きコピーすること(念のため当該スクリプトが更新されていないかも確認する).