Devuan jessieをasciiにdist-upgradeしてみた

screenshot

Devuan asciiもRelease Candidateが出てそろそろ正式版になりそうです.てことで手元のDevuan jessie i386環境をascii環境にdist-upgradeしてみました.

DevuanはDebianからフォークした脱Systemdなディストリビューションです.コードネームはjessieはDebianと同じですがその次のバージョンから独自になっていて,Devuan asciiはDebian stretch相当になります.

アップグレードのドキュメントは以下にありました.

うーんシンプル.念の為Debianの文章も参考にします.

これらの文章と違うところはsources.list編集時にapt edit-sourcesコマンドを使ったくらいです.今回はこんな感じに.

diff --git a/apt/sources.list b/apt/sources.list
index 142945f..afaa14d 100644
--- a/apt/sources.list
+++ b/apt/sources.list
@@ -1,16 +1,16 @@
-# deb http://jp.mirror.devuan.org/merged/ jessie main
+# deb http://jp.mirror.devuan.org/merged/ ascii main
 
-deb http://jp.mirror.devuan.org/merged/ jessie main non-free contrib
-deb-src http://jp.mirror.devuan.org/merged/ jessie main non-free contrib
+deb http://jp.mirror.devuan.org/merged/ ascii main non-free contrib
+deb-src http://jp.mirror.devuan.org/merged/ ascii main non-free contrib
 
-# jessie-security, previously known as 'volatile'
-deb http://jp.mirror.devuan.org/merged/ jessie-security main contrib non-free
-deb-src http://jp.mirror.devuan.org/merged/ jessie-security main contrib non-free
+# ascii-security, previously known as 'volatile'
+deb http://jp.mirror.devuan.org/merged/ ascii-security main contrib non-free
+deb-src http://jp.mirror.devuan.org/merged/ ascii-security main contrib non-free
 
-# jessie-updates, previously known as 'volatile'
-deb http://jp.mirror.devuan.org/merged/ jessie-updates main contrib non-free
-deb-src http://jp.mirror.devuan.org/merged/ jessie-updates main contrib non-free
+# ascii-updates, previously known as 'volatile'
+deb http://jp.mirror.devuan.org/merged/ ascii-updates main contrib non-free
+deb-src http://jp.mirror.devuan.org/merged/ ascii-updates main contrib non-free
 
-# jessie-backports, previously on backports.debian.org
-deb http://jp.mirror.devuan.org/merged/ jessie-backports main contrib non-free
-deb-src http://jp.mirror.devuan.org/merged/ jessie-backports main contrib non-free
+# ascii-backports, previously on backports.debian.org
+deb http://jp.mirror.devuan.org/merged/ ascii-backports main contrib non-free
+deb-src http://jp.mirror.devuan.org/merged/ ascii-backports main contrib non-free

特に問題なく処理は進んでいましたが,apt dist-upgradeでエラーが発生しました.bluemanで以下のようなエラーとなりました.

Setting up blueman (2.0.4-1) ...
Reloading system message bus config...Error org.freedesktop.DBus.Error.FileNotFound: Failed to open "/etc/dbus-1/system.conf": No such file or directory
invoke-rc.d: initscript dbus, action "reload" failed.
dpkg: error processing package blueman (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 blueman
E: Sub-process /usr/bin/dpkg returned an error code (1)

一旦削除して再起動後導入し直したら導入に成功しました.

$ sudo apt remove blueman
$ sudo reboot
$ sudo apt install blueman

ということでシンプルなシステムだったせいかさっくりとdist-upgradeに成功しました :)

<追記>
うまく行かなかった人も居るよう.

</追記>

Devuan ascii armhf(Raspberry Pi)で時計合わせ

Raspberry PiにはRTCが付いていません.なのでシステム停止すると時間情報が飛んでしまいます.fake-hwclockが設定されていたら前回停止時(に近い)時間がファイルに保存されていてその時間に設定されますが,停止時の時間はカウントされないので時間がずれます.ということでネットワークが有効な場合ntpを参照して時計合わせをしたいです.
最近のDebianやRaspbianはsystemdなのでtimesyncd.confでNTP serverを指定してtimedatectlコマンドで有効にする感じだと思うのですが(既定値でそうなっている),Devuanは脱systemdなディストリビューションなのでこの方法は使えません.

$ sudo vi /etc/systemd/timesyncd.conf
$ sudo timedatectl set-ntp true`

詳細はman timesyncd.conf, man timedatectl

ということでntpdateを入れてみました.

$ sudo apt install ntpdate
$ sudo ntpdate 192.168.1.102
$ grep -A1 -B2 ntp /etc/rc.local
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
  /usr/sbin/ntpdate 192.168.1.102
fi

長時間動かすならcrontabで定期的に設定したほうがいいかも?(若しくは何らかのntpd)

$ sudo -u root crontab -l|tail -2
@reboot /usr/sbin/ntpdate 192.168.1.102
3 3 * * *       /usr/sbin/ntpdate 192.168.1.102

追記)
このシステムはRaspbian stretchをDevuan asciiにdist-upgradeしたシステムなのでntpの設定がないだけかもしれません.Devuan asciiをクリーンインストールすれば必要ない設定かも(未確認)

Raspbian stretch イメージを Devuan ascii にしてみる

DevuanというDebianからのフォークディストリビューションがあります.

これは脱SystemdなLinuxディストリビューションで,Raspberry Pi等のarmhfにも対応しています.そしてDebianからDevuanに移行することが出来ます.(Debian jessie -> Devuan jessie)
DebianベースのRaspbianからも同様に移行できるというmailを見かけたので試してみます.

SD cardでやったほうが手順は少ないのですが,遅いし寿命も縮むだろうしってことでイメージサイズを拡大したRaspbianを元にchroot + QEMU User EmulatorでArm以外のhostででやってみました.

サイズを拡大したRaspbianイメージをマウント

以下の手順で用意したイメージを元にします.

raspbian-stretch-lite_latest.imgが元のイメージで,今回devuan_ascii.imgとしてコピーしたものを使います.

$ cp ./raspbian-stretch-lite_latest.img ./devuan_ascii.img
$ sudo kpartx -av ./devuan_ascii.img
add map loop0p1 (253:4): 0 85045 linear 7:0 8192
add map loop0p2 (253:5): 0 8129 linear 7:0 63
$ sudo mount /dev/mapper/loop0p2 /mnt
$ sudo mount /dev/mapper/loop0p1 /mnt/boot

QEMU User Emulatorが使えるようにqemu-user-staticをcp

これでQEMU User Emulatorが透過的に利用できます.

$ sudo cp -p /usr/bin/qemu-arm-static /mnt/usr/bin/

chroot用に/devと/procをbind mountしてchroot

$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /dev/pts /mnt/dev/pts
$ sudo mount --bind /proc /mnt/proc
$ sudo chroot /mnt /bin/bash

Raspbian stretchを最新の状態にする

# apt update
# apt upgrade -y

Devuanリポジトリの鍵をインポート

Devuanリポジトリの鍵をインポートする.そのために必要なdirmngrpkgも導入.

# apt install dirmngr
# apt-key adv --recv-keys 94532124541922FB
Executing: /tmp/apt-key-gpghome.zqL0gcSbes/gpg.1.sh --recv-keys 94532124541922FB
gpg: key 94532124541922FB: public key "Devuan Repository (Primary Devuan signing key) <repository@devuan.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1

source.listをDevuanのものに書き換え

Devuanのstableはjessieですが,元のRaspbianがstretchなのでそれに対応するAsciiを指定しています.
Devuan jessieを使いたい場合は,Raspbian jessieを元にするといいと思います.

Devuan Debian
Jessie(stable) Jessie(oldstable)
Ascii(development) Stretch(stable)
Beowulf(-) Buster(testing)
Ceres(unstable) Sid(unstable)
# vi /etc/apt/sources.list
# cat /etc/apt/sources.list|grep -v ^#
deb http://mirrordirector.raspbian.org/raspbian/ stretch rpi
deb http://auto.mirror.devuan.org/merged ascii main contrib non-free
deb http://auto.mirror.devuan.org/merged ascii-updates  main contrib non-free
deb http://auto.mirror.devuan.org/merged ascii-security main contrib non-free

Devuanのパッケージにupgrade

# apt update && apt upgrade
  :
274 upgraded, 7 newly installed, 0 to remove and 3 not upgraded.
Need to get 115 MB of archives.
After this operation, 25.0 MB disk space will be freed.
Do you want to continue? [Y/n] Y
  :
# apt dist-upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  bluez bluez-firmware cgmanager libcgmanager0 systemd-shim
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  libpam-systemd mountall pi-bluetooth plymouth raspberrypi-sys-mods systemd systemd-sysv
The following NEW packages will be installed:
  eudev libeudev1 sysvinit-core
The following packages will be upgraded:
  init libudev1 udev
3 upgraded, 3 newly installed, 7 to remove and 0 not upgraded.
Need to get 1162 kB of archives.
After this operation, 9431 kB disk space will be freed.
Do you want to continue? [Y/n] Y
  :

chrootから抜けてイメージアンマウント

#念の為kpartx -dの前にfsckしておくといいかも?

# exit
$ sudo umount /mnt/proc
$ sudo umount /mnt/dev/pts
$ sudo umount /mnt/dev
$ sudo umount /mnt/boot
$ sudo umount /mnt
$ sudo kpartx -d /dev/mapper/loop0p1
$ sudo kpartx -d /dev/mapper/loop0p2
$ sync

SD cardにイメージを書き込んでRaspberry Piで起動

普通にddとかEtcherとかでSD cardに書き込みます.

$ time sudo dcfldd if=./devuan_ascii.img of=/dev/sdd;sync;sync
128000 blocks (4000Mb) written.
128000+0 records in
128000+0 records out

real    7m13.207s
user    0m0.823s
sys     0m9.211s

後はRaspberry Piで起動すればOK.今回はRaspberry Pi 2 Bで試しました.

Systemdとか居ません.

RAMの利用状況はこんな感じ

$ free
              total        used        free      shared  buff/cache   available
Mem:         949584       21916      879120         188       48548      879976
Swap:        102396           0      102396

しかしneofetchとかではRaspbianのままですね.該当pkgのreinstallとかで更新できそうな気がしますが未検証.

IMG_20180123_001641

イメージ操作めんどくさいのでdebootstrapの方が楽かもしれない?

いやそれなら公式イメージのほうがいいか

BluemanだけでNetworkManagerを使わずBluetooth tetheringを使う

最近の自転車移動でThinkpad X200を運んでいるのですがちょっと重い. PC使うかわからないようなときも持ち運んでいるのですが重いし壊しそうだしであまり良くない. 最近値崩れしたKINGJIM PORTABOOK(XMC10)や小さくて可愛いGPD-WINとかほしいのですがお金ない.てことで昔買ってあまり使っていないFujitsu FMV-U8250 + 外部キーボードで荷物の軽量化出来ないかなと.

ちなみにGPD-WINを日本で利用する人の技適問題は以下の辺りから買うと大丈夫のよう.(他は多分NG)

ということでとりあえずFujitsu FMV-U8250にUSB-Bluetoothアダプタを接続してBluetooth外部キーボードとBluetooth tetheringな環境を整えようと思ったのですが,OSをDevuan jessieにしてBluemanで繋ごうとすると,

Connection Failed: the name org.freedesktop.NetworkManager was not provided by ant .service files

というエラーで接続できませんでした. NetworkManagerに依存しているようです.

しかしいまのネットワークマネージャーはWicdでNetworkManagerは入っていません.どうにかならないかなーとBluemanの設定を見るとそれらしいものを発見.

  • View -> Local Service
  • NetworkのPAN SupportとDUN SupportをそれぞれBluemanに

blueman01

blueman02

これでNetworkManagerのない環境でもBluetooth tetheringで繋がるようになりました :)

ちなみにX200(9セルバッテリ)の重量は1.7kg近く,FMV-U8250(大容量バッテリ)はで700g近く+キーボード420g…….体積は結構減ってるけど案外軽くなってませんね.キーボードが案外重いです.使い勝手も大分落ちるし微妙?