小さなLinux互換カーネルのTilckでアプリをいくつか試す

小さなLinux互換カーネルのTilckというものを知ったので少し触ってみました.その後Wikiを見ながらbuild_toolchain script を利用していくつかのユーザスペースアプリケーションを試してみました.

続きを読む

Debian で Linux Kernel の initramfs の圧縮形式を変更する🐧🗜️

先日「Debian sidでLinux Kernel(5.11)をbuildするメモ 」を書いたのですが,Twitterで@henrichさんからこんなメッセージが.

そういえば圧縮形式色々あったなと試してみました.

現在の圧縮形式を確認する

$ grep COMPRESS /etc/initramfs-tools/initramfs.conf
# COMPRESS: [ gzip | bzip2 | lz4 | lzma | lzop | xz | zstd ]
COMPRESS=gzip
$ file --mime-type /boot/initrd.img-`uname -r`
/boot/initrd.img-5.11.8+: application/gzip

設定は gzip で,実際のファイルもgzipになっています.
圧縮形式は gzip 以外に bzip2, lz4, lzma, lzop, xz, zstd が選べるようです.

圧縮形式の比較

$ ls -1sS --block-size=1 ./initrd.img-5.11.8+.*
183033856 ./initrd.img-5.11.8+.raw
 81076224 ./initrd.img-5.11.8+.lz4
 78315520 ./initrd.img-5.11.8+.lzop
 54329344 ./initrd.img-5.11.8+.gzip
 51761152 ./initrd.img-5.11.8+.zstd
 50081792 ./initrd.img-5.11.8+.bz2
 36548608 ./initrd.img-5.11.8+.xz
 36540416 ./initrd.img-5.11.8+.lzma

容量がどのくらいになるのか各アーカイバで圧縮してみました.

$ \time -f %e cat ./initrd.img-5.11.8+.raw > /dev/null
0.03
$ \time -f %e lz4cat ./initrd.img-5.11.8+.lz4 > /dev/null
0.38
$ \time -f %e lzop -d -c ./initrd.img-5.11.8+.lzop > /dev/null
0.42
$ \time -f %e zstdcat ./initrd.img-5.11.8+.zstd > /dev/null
0.44
$ \time -f %e zcat ./initrd.img-5.11.8+.gzip > /dev/null
1.38
$ \time -f %e lzma -d -c ./initrd.img-5.11.8+.lzma > /dev/null
3.22
$ \time -f %e xzcat ./initrd.img-5.11.8+.xz > /dev/null
3.37
$ \time -f %e bzcat ./initrd.img-5.11.8+.bz2 > /dev/null
9.39

展開時間も確認してみました.

圧縮形式 圧縮データ量(byte) 展開時間(秒)

raw

183033856

0.03

lz4

81076224

0.38

lzop

78315520

0.43

gzip

54329344

1.38

zstd

51761152

0.44

bzip2

50081792

9.39

xz

36548608

3.37

lzma

36540416

3.22

圧縮データの圧縮率などは既定値のままで,展開時間は \time -f %e zcat ./initrd.img-5.11.8+.gzip > /dev/null 若しくは \time -f %e lzma -d -c ./initrd.img-5.11.8+.lzma > /dev/null のようにして測りました.

サイズでは raw > lz4 ≒ lzop > gzip ≒ zstd ≒ bz2 > xz ≒ lzma な感じで,
展開速度は bz2 > xz ≒ lzma > gzip > zstd ≒ lzop ≒ lz4 > raw な感じです.

Caution
時間についてはデスクトップ環境で色々動いている状態で1回しか測っていないので目安程度にしてください.
Caution
ここでは既定値で圧縮しましたが,zstd, lz4, xzについてはinitramfs作成時に圧縮オプションなどが既定値と違うようなので目安程度にしてください.

容量的にはxz, lzmaが良さそうですが展開時間がとても増えそうです.zstdはgzipより速くて小さくなって良さそうです.
ということでzstdにしてみます.

initramfsを zstd で作り直す

$ sudo git -C /etc diff HEAD /etc/initramfs-tools/initramfs.conf
diff --git a/initramfs-tools/initramfs.conf b/initramfs-tools/initramfs.conf
index 01bdd85..a0c051b 100644
--- a/initramfs-tools/initramfs.conf
+++ b/initramfs-tools/initramfs.conf
@@ -41,7 +41,7 @@ KEYMAP=n
 # COMPRESS: [ gzip | bzip2 | lz4 | lzma | lzop | xz | zstd ]
 #

-COMPRESS=gzip
+COMPRESS=zstd

 #
 # DEVICE: ...

/etc/initramfs-tools/initramfs.conf を編集して, COMPRESSzstd に変更します.

$ update-initramfs -h

Usage: update-initramfs {-c|-d|-u} [-k version] [-v] [-b directory]

Options:
 -k version     Specify kernel version or 'all'
 -c             Create a new initramfs
 -u             Update an existing initramfs
 -d             Remove an existing initramfs
 -b directory   Set alternate boot directory
 -v             Be verbose

See update-initramfs(8) for further details.

$ sudo update-initramfs -k `uname -r` -u -v

update-initramfs で更新を行います.

$ ls -s --block-size=1 /boot/initrd.img-5.11.8+
54542336 /boot/initrd.img-5.11.8+
$ ls -s --block-size=1 /boot/initrd.img-5.11.8+
41611264 /boot/initrd.img-5.11.8+
$ file --mime-type /boot/initrd.img-5.11.8+
/boot/initrd.img-5.11.8+: application/zstd
$ zstd -lv /boot/initrd.img-5.11.8+
*** zstd command line interface 64-bits v1.4.8, by Yann Collet ***
/boot/initrd.img-5.11.8+
# Zstandard Frames: 1
Window Size: 8.00 MB (8388608 B)
Compressed Size: 39.53 MB (41446437 B)
Decompressed Size: 174.55 MB (183032320 B)
Ratio: 4.4161
Check: XXH64

出来上がったファイルを確認すると zstd になっていました.
再起動しても問題ありませんでした :)
上で確認した容量より大分小さ唸っているのは圧縮レベルの差でしょうか?

initramfs圧縮レベルの確認

$ grep zstd /usr/sbin/mkinitramfs
zstd)   compress="zstd -q -19 -T0" ;;

update-initramfs から呼ばれる mkinitramfs を確認するとzstdの圧縮レベルオプションは -19 で最高圧縮率でした.(既定値は -3 )

$ \time -f%e zstdcat -T1 /boot/initrd.img-5.11.8+ > /dev/null
0.50

その分展開時間も少し伸びていそうです.

case "${compress}" in
gzip)   # If we're doing a reproducible build, use gzip -n
        if [ -n "${SOURCE_DATE_EPOCH}" ]; then
                compress="gzip -n"
        # Otherwise, substitute pigz if it's available
        elif command -v pigz >/dev/null; then
                compress=pigz
        fi
        ;;
lz4)    compress="lz4 -9 -l" ;;
zstd)   compress="zstd -q -19 -T0" ;;
xz)     compress="xz --check=crc32"
        # If we're not doing a reproducible build, enable multithreading
        test -z "${SOURCE_DATE_EPOCH}" && compress="$compress --threads=0"
        ;;
bzip2|lzma|lzop)
        # no parameters needed
        ;;
*)      echo "W: Unknown compression command ${compress}" >&2 ;;
esac

周りを見てみると, lz4-9 で最高( -12 )ではないけど既定値( 1 )より圧縮率を高くしてあります.xzには整合性チェックがオプションがあるけど容量にはあまり関係ないかな?
その他は既定値のようです.

$ count=1;while [[ $count -lt 19 ]];do zstdcat /boot/initrd.img-5.11.8+ | zstd -T0 -$count -c - > /tmp/zstd-$count.zstd;count=$(( $count+1 ));done
$ ls -1sS --block-size=1 /tmp/zstd-*
56188928 /tmp/zstd-1.zstd
53272576 /tmp/zstd-2.zstd
51761152 /tmp/zstd-3.zstd
51466240 /tmp/zstd-4.zstd
50061312 /tmp/zstd-5.zstd
49614848 /tmp/zstd-6.zstd
47431680 /tmp/zstd-7.zstd
46690304 /tmp/zstd-8.zstd
46424064 /tmp/zstd-9.zstd
45973504 /tmp/zstd-10.zstd
45850624 /tmp/zstd-11.zstd
45686784 /tmp/zstd-12.zstd
45539328 /tmp/zstd-13.zstd
45371392 /tmp/zstd-14.zstd
45309952 /tmp/zstd-15.zstd
44093440 /tmp/zstd-16.zstd
42987520 /tmp/zstd-17.zstd
41705472 /tmp/zstd-18.zstd
41447424 /tmp/zstd-19.zstd
$ ls -1S /tmp/zstd-* | xargs -I{} -n1 sh -c "echo -n \"{} \"; \time -f%e zstdcat -T0 {} > /dev/null"
/tmp/zstd-1.zstd 0.37
/tmp/zstd-2.zstd 0.36
/tmp/zstd-3.zstd 0.40
/tmp/zstd-4.zstd 0.47
/tmp/zstd-5.zstd 0.44
/tmp/zstd-6.zstd 0.42
/tmp/zstd-7.zstd 0.40
/tmp/zstd-8.zstd 0.37
/tmp/zstd-9.zstd 0.35
/tmp/zstd-10.zstd 0.40
/tmp/zstd-11.zstd 0.41
/tmp/zstd-12.zstd 0.38
/tmp/zstd-13.zstd 0.39
/tmp/zstd-14.zstd 0.39
/tmp/zstd-15.zstd 0.43
/tmp/zstd-16.zstd 0.37
/tmp/zstd-17.zstd 0.42
/tmp/zstd-18.zstd 0.53
/tmp/zstd-19.zstd 0.68

圧縮レベルごとの容量と展開時間はこんな感じになりました.色々動いている環境なのでおかしそうなところがありますが大体の目安として.

Kernel build時の動作

Kernel 5.11.9 が来ていたのでビルドしてみました.

$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/incr/patch-5.11.8-9.xz
$ cd linux-5.11
$ xzcat ../patch-5.11.8-9.xz | patch -p1
$ grep ^COMPRESS= /etc/initramfs-tools/initramfs.conf
COMPRESS=zstd
$ time make -j`nproc` bindeb-pkg
$ ls -1sS ../*5.11.9*
737300 ../linux-image-5.11.9+-dbg_5.11.9+-5_amd64.deb
 59584 ../linux-image-5.11.9+_5.11.9+-5_amd64.deb
  8040 ../linux-headers-5.11.9+_5.11.9+-5_amd64.deb
  1124 ../linux-libc-dev_5.11.9+-5_amd64.deb
     8 ../linux-5.11.9+_5.11.9+-5_amd64.buildinfo
     4 ../linux-5.11.9+_5.11.9+-5_amd64.changes
$ sudo apt install ../linux-image-5.11.9+_5.11.9+-5_amd64.deb ../linux-headers-5.11.9+_5.11.9+-5_amd64.deb ../linux
-libc-dev_5.11.9+-5_amd64.deb
$ file /boot/initrd.img-5.11.9+
/boot/initrd.img-5.11.9+: Zstandard compressed data (v0.8+), Dictionary ID: None
$ ls --block-size=1 -s /boot/initrd.img-5.11.9+
41602048 /boot/initrd.img-5.11.9+
$ sudo shutdown -r now 'kernel upgrade'

問題なく zstd になりました.

参考URL

Debianのinitramfsの圧縮形式をzstdにしようというバグレポート.bullseyeはフリーズされているので入らない.

環境

$ dpkg-query -W initramfs-tools-core zstd
initramfs-tools-core    0.140
zstd    1.4.8+dfsg-2.1
$ lsb_release -dr
Description:    Debian GNU/Linux bullseye/sid
Release:        unstable
$ uname -srm
Linux 5.11.9+ x86_64

Linux Kernel 5.11 をセルフビルドしたメモ

Linux Kernel 5.11 がリリースされました.

F2FSの圧縮周りもアップデートがあるようなので試してみたくなりました.ということでセルフビルドしたらこれまで出なかったエラーが出たのでメモしておきます.

Warning
Debian sid amd64の 5.10.0-3-amd64 環境でビルドしました.Linux 5.9はビルドしたことがあるけれど,Linux 5.10はビルドしたことのない環境です.

Linux 5.11 build時にエラー( BTF: .tmp_vmlinux.btf: pahole (pahole) is not available )

以下のようなエラーが発生しました.

$ make -j`nproc` bindeb-pkg
〜省略〜
BTF: .tmp_vmlinux.btf: pahole (pahole) is not available
Failed to generate BTF for vmlinux
Try to disable CONFIG_DEBUG_INFO_BTF
〜省略〜
$ grep CONFIG_DEBUG_INFO_BTF ./.config
CONFIG_DEBUG_INFO_BTF=y

CONFIG_DEBUG_INFO_BTF を無効にすることも可能ですが, dwarves パッケージでDWARF utilitiesを導入するとこで解決しました.

$ sudo apt install dwarves

その他,DKMSでのVirtualBox moduleのビルドも失敗しました.これはVirtualBoxの対応待ちかなと思います.

ということで,以下のような感じで大丈夫そうです.

Linux 5.11のビルド

必要なパッケージの導入
$ sudo apt install build-essential linux-source bc kmod cpio flex libncurses5-dev libelf-dev libssl-dev dwarves
ソースの入手,確認と展開
$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.11.tar.xz \
https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.11.tar.sign (1)
$ unxz ./linux-5.11.tar.xz (2)
$ gpg --verify ./linux-5.11.tar.sign (3)
gpg: assuming signed data in './linux-5.11.tar'
gpg: Signature made Mon 15 Feb 2021 06:11:32 PM JST
gpg:                using RSA key 647F28654894E3BD457199BE38DBBDC86092693E
gpg: Good signature from "Greg Kroah-Hartman <gregkh@linuxfoundation.org>" [unknown]
gpg:                 aka "Greg Kroah-Hartman (Linux kernel stable release signing key) <greg@kroah.com>" [undefined]
gpg:                 aka "Greg Kroah-Hartman <gregkh@kernel.org>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 647F 2865 4894 E3BD 4571  99BE 38DB BDC8 6092 693E
$ tar tvf ./linux-5.11.tar | lv (4)
$ tar xf ./linux-5.11.tar (5)
$ cd linux-5.11
  1. sourceと署名を入手
  2. 解凍
  3. 署名確認(署名はこちらで確認)
  4. アーカイブ確認
  5. アーカイブ展開
configファイルの用意とビルド
$ cp /boot/config-`uname -r` ./.config (1)
$ yes "" | make oldconfig (2)
$ tar xf ../linux_5.10.9-1.debian.tar.xz debian/certs/ (3)
$ time make -j`nproc` bindeb-pkg (4)
  :
dpkg-deb: building package 'linux-libc-dev' in '../linux-libc-dev_5.11.0-1_amd64.deb'.
dpkg-deb: building package 'linux-image-5.11.0' in '../linux-image-5.11.0_5.11.0-1_amd64.deb'.
dpkg-deb: building package 'linux-image-5.11.0-dbg' in '../linux-image-5.11.0-dbg_5.11.0-1_amd64.deb'.
 dpkg-genbuildinfo --build=binary
 dpkg-genchanges --build=binary >../linux-5.11.0_5.11.0-1_amd64.changes
dpkg-genchanges: info: binary-only upload (no source code included)
 dpkg-source --after-build .
dpkg-buildpackage: info: binary-only upload (no source included)
$ ls -1s ../linux*.deb (5)
  7932 ../linux-headers-5.11.0_5.11.0-1_amd64.deb
728724 ../linux-image-5.11.0-dbg_5.11.0-1_amd64.deb
 52136 ../linux-image-5.11.0_5.11.0-1_amd64.deb
  1124 ../linux-libc-dev_5.11.0-1_amd64.deb
$ sudo apt install ../linux-image-5.11.0_5.11.0-1_amd64.deb ../linux-libc-dev_5.11.0-1_amd64.deb ../linux-headers-5.11.0_5.11.0-1_amd64.deb (6)
  1. 現在のkernel configをコピーする
  2. 新しい設定を既定値で設定
  3. Debianのkernel sourceから証明書をコピー(若しくは CONFIG_SYSTEM_TRUSTED_KEYS="" する)
  4. cpu数を指定してビルド開始
  5. 出来上がったパッケージの確認
  6. 出来上がったパッケージを導入
Machine Owner Key(MOK)で署名する(セキュアブートを有効にしている場合にのみ必要な処理)
$ sudo sbsign --key ~/MOK.priv --cert ~/MOK.pem /boot/vmlinuz-5.11.0 --output vmlinuz-5.11.0 (1)
$ sudo mv ./vmlinuz-5.11.0 /boot/vmlinuz-5.11.0
$ find /lib/modules/5.11.0/updates/dkms/ -type f | xargs -n1 sudo ./scripts/sign-file sha256 ~/MOK.priv ~/MOK.der (2)
  1. kernelに署名
  2. DKMSで作成したmoduleに署名

このあたりの処理は自動化できると思うんだけど未確認.
MOKの作成や,セキュアブートについては以下のページが参考になる.

環境

$ dpkg-query -W build-essential linux-source bc kmod cpio flex libncurses5-dev libelf-dev libssl-dev dwarves sbsign
tool
bc      1.07.1-2+b2
build-essential 12.9
cpio    2.13+dfsg-4
dwarves 1.20-1
flex    2.6.4-8
kmod    28-1
libelf-dev:amd64        0.183-1
libncurses5-dev:amd64   6.2+20201114-2
libssl-dev:amd64        1.1.1j-1
linux-source    5.10.13-1
sbsigntool      0.9.2-2
$ lsb_release -dr
Description:    Debian GNU/Linux bullseye/sid
Release:        unstable
$ uname -mr
5.10.0-3-amd64 x86_64
再起動後
$ uname -mr
5.11.0 x86_64

Linuxマルチモニタ環境のウェブブラウザでスクリーン共有を行うとすべてのスクリーンが共有されてしまう問題がChromiumで解決

例えばモニタの設定がこうなっている状態で

Linux multimonitor 20200526 22:05:26 3278321

ウェブブラウザでJitsi MeetやZoomなどでスクリーン共有しようとすると複数のスクリーンがすべて一緒になって1つの画面として共有されてしまいます.

Chromium 81.0.4044.92 built on Debian bullseye/sid, running on Debian bullseye/sid

Linux multimonitor 20200526 22:05:20 3267188

Mozilla Firefox 76.0.1(Debian sid amd64 package版)

Linux multimonitor 20200526 22:05:47 3311507

例えばLibreOffice でプレゼンテーションモードでセカンダリモニタにスライドをフルスクリーン表示させてそれを共有したいといったことがスクリーン共有で出来ませんでした.フルスクリーン表示の後そのウィンドウを共有することは出来ますが,途中で別のウィンドウを見せたい場合ウィンドウ共有をやり直さなければいけないのでとても面倒です.

これについて調べてみるとChromium では最近修正されたようです :)

以下からChromium のsnapshots binary を入手して試してみました.

試したバージョンは Chromium 85.0.4157.0 でした.

$ wget 'https://download-chromium.appspot.com/dl/Linux_x64?type=snapshots' -O ./chrome-linux.zip
$ unzip -l ./chrome-linux.zip | lv
$ unzip ./chrome-linux.zip
$ $ ./chrome-linux/chrome --version
Chromium 85.0.4157.0
$ ./chrome-linux/chrome --temp-profile --user-data-dir=`mktemp -d`

この環境で Jitsi Meet に接続して画面共有を試してみると Screen 1, Screen 2 とスクリーンごとに共有できるようになっていました :)

Linux muitimonitor 20200526 22:05:57 3299122

Stable に降りてくるのは暫く先でしょうが便利になりそうです.

ちなみにFirefox も少し調べてみましたが,以下のあたりでしょうか?未だ直ってなさそう?古いbugなので他にも上がってそちらで議論されていそうです.

環境
$ dpkg-query -W chromium firefox
chromium        81.0.4044.92-1
firefox 76.0.1-2
$ lsb_release -dr
Description:    Debian GNU/Linux bullseye/sid
Release:        unstable
$ uname -m
x86_64

Linux ARM版Vivaldiを入れてみた

20171207_01:12:04-24154

Operaの共同創設者でCEOだったJon Stephenson von Tetzchnerによって設立されたVivaldi Technologiesによって開発されているウェブブラウザがあります.
これまでx86/x64プラットホームのWindows/macOS/Linux版が提供されていましたが,2017/12/05にLinux ARM版(armhf)がリリースされました.

Raspberry PiのRaspbianがメインのようですが,他のARM環境でも試したら普通に動きました :)

といってもやはりRAM512MBのようなマシンでは辛いですね.RAM2GBのマシンだと今のところいい感じそうです.Midoriやqutebrowserでうまく表示できないMastodonやgmail/Google+なども問題なく表示できますし,Chromeの拡張機能も使えます.

Linux ARM版Vivaldiの入手と確認

deb pkgダウンロード

$ wget https://downloads.vivaldi.com/stable/vivaldi-stable_1.13.1008.34-1_armhf.deb

hash

hashとか見当たらないけど手元ではこんな感じだった

$ md5sum vivaldi-stable_1.13.1008.34-1_armhf.deb 
7515f51385a9a264ad5bb7612438aeda  vivaldi-stable_1.13.1008.34-1_armhf.deb
$ sha1sum vivaldi-stable_1.13.1008.34-1_armhf.deb 
6b103d205f6aa7a5f3b394ba8d32dc9ca87bf0cd  vivaldi-stable_1.13.1008.34-1_armhf.deb
$ sha256sum vivaldi-stable_1.13.1008.34-1_armhf.deb 
e7af5d021bf0c2968fcf0271e8f741552e34bcf2d032318eb8ea95356067297d  vivaldi-stable_1.13.1008.34-1_armhf.deb
$ sha512sum vivaldi-stable_1.13.1008.34-1_armhf.deb 
f47f2d26e8045af9ba680129feca765cf3f9dc7ea76930071e9688ef50aa78a482b40ba5747fb4470d30520177bda371ec79e5a210a93dcf2e49251425001c6d  vivaldi-stable_1.13.1008.34-1_armhf.deb

パッケージ情報確認

$ dpkg-deb -I ./vivaldi-stable_1.13.1008.34-1_armhf.deb
 新形式 debian パッケージ、バージョン 2.0。
 サイズ 45154158 バイト: コントロールアーカイブ = 9840 バイト。
    1269 バイト、   16 行      control              
   15872 バイト、  442 行   *  postinst             #!/bin/sh
   12544 バイト、  324 行   *  postrm               #!/bin/sh
    1220 バイト、   42 行   *  prerm                #!/bin/sh
 Package: vivaldi-stable
 Version: 1.13.1008.34-1
 Architecture: armhf
 Maintainer: Vivaldi Package Composer <packager@vivaldi.com>
 Installed-Size: 131921
 Pre-Depends: dpkg (>= 1.14.0)
 Depends: gconf-service, libasound2 (>= 1.0.16), libatk1.0-0 (>= 1.12.4), libc6 (>= 2.16), libcairo2 (>= 1.6.0), libcups2 (>= 1.4.0), libdbus-1-3 (>= 1.2.14), libexpat1 (>= 2.0.1), libfontconfig1 (>= 2.8.0), libgcc1 (>= 1:4.4.0), libgconf-2-4 (>= 3.2.5), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.28.0), libgtk-3-0 (>= 3.9.10), libnspr4 (>= 2:4.9-2~), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libx11-6 (>= 2:1.4.99.1), libx11-xcb1, libxcb1 (>= 1.6), libxcomposite1 (>= 1:0.3-1), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxi6 (>= 2:1.2.99.4), libxrandr2 (>= 2:1.2.99.3), libxrender1, libxss1, libxtst6, ca-certificates, fonts-liberation, libnss3 (>= 3.26), xdg-utils (>= 1.0.2), wget
 Recommends: adobe-flashplugin, chromium-codecs-ffmpeg-extra
 Conflicts: vivaldi-beta, vivaldi-preview
 Replaces: vivaldi-beta, vivaldi-preview
 Provides: www-browser
 Section: web
 Priority: optional
 Homepage: https://vivaldi.com
 Description: A new browser for our friends
  Vivaldi browser is made with power users in mind by people who love the Web.

導入

とりあえずDebian jessie armhf/Ubuntu 16.04 LTS aarch64で動いている.

Debian/Ubuntu等

$ sudo dpkg -i ./vivaldi-stable_1.13.1008.34-1_armhf.deb

以下のように依存パッケージが足りない場合は,

dpkg: 依存関係の問題により vivaldi-stable:armhf の設定ができません:
 vivaldi-stable:armhf は以下に依存 (depends) します: libnss3 (>= 3.26)...しかし:
  パッケージ libnss3:armhf はまだインストールされていません。

dpkg: パッケージ vivaldi-stable:armhf の処理中にエラーが発生しました (--install):
 依存関係の問題 - 設定を見送ります

こんな感じで足りないpkgが入るはず.その後見送られていたvivaldi-stableの設定の続きも実行される.

$ sudo apt install -f

64bit ARM環境

バージョン情報_009

aarch64でも試した.
既にadd archtecture armhfして色々入れていた環境に入れてクリーンな環境で検証していないけど多分こんな感じ.

$ sudo dpkg --add-architecture armhf
$ sudo apt update
$ sudo dpkg -i ./vivaldi-stable_1.13.1008.34-1_armhf.deb
$ sudo apt install -f

—-追記—-
クリーンなDragonBoard 410cにDebian stretch aarch64(lonaro)を入れた環境でも確認したがこの手順でokだった :)
—-追記終わり—-

.debが使えない環境

deb以外の環境ではこんな感じで適当な場所に展開して動かせた.

$ mkdir -p ~/opt/vivaldi
$ ar p vivaldi-stable_1.13.1008.34-1_armhf.deb data.tar.xz | tar xJ -C ~/opt/vivaldi
$ rm vivaldi-stable_1.13.1008.34-1_armhf.deb
$ ~/opt/vivaldi/opt/vivaldi/vivaldi

Slackwareだと以下のsctiptが使えそう(未確認)

問題

sandbox

もし,こんなエラーが出たら

$ ~/opt/vivaldi/opt/vivaldi/vivaldi
[13021:13021:1205/215600.516642:FATAL:setuid_sandbox_host.cc(157)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /home/matoken/opt/vivaldi/opt/vivaldi/vivaldi-sandbox is owned by root and has mode 4755.
Aborted[This script will find the latest Vivaldi binary package, download it and repackage it into Slackware format.](https://gist.github.com/ruario/dcbba70da900dac68fcc883542ff7ace "This script will find the latest Vivaldi binary package, download it and repackage it into Slackware format.")

こんな感じでオーナーとパーミッションを設定したらok.

$ chmod 4755 ~/opt/vivaldi/opt/vivaldi/vivaldi-sandbox
$ sudo chown root.root ~/opt/vivaldi/opt/vivaldi/vivaldi-sandbox

若しくは --no-sandbox option

$ ~/opt/vivaldi/opt/vivaldi/vivaldi --no-sandbox

日本語豆腐問題

20171206_06:12:20-506920171206_07:12:16-6600

とりあえず適当な日本語フォント(今回はVLゴシック)を入れて,Vivaldiを再起動で直った.(Dejavuが入っていたので指定してみたけど直らなかった)

$ sudo apt install fonts-vlgothic

関連

鹿児島Linux勉強会 2017.10に参加

鹿児島らぐ鹿児島Linux勉強会 2017.10に参加してきました.

日時

2017-10-14(土) 14:00-17:00(準備撤収時間を含む)

会場

モノづくりスペース TUKUDDO
http://tukuddo.com/

例によって自転車でポタポタと桜島フェリー経由で移動.

火山灰や雨が心配でしたが,往路はどちらも問題なく快適でした.
フェリーでメールチェックをするとパケットが250MBを切ったとのメールが.確認すると残り54MB!想定外の減り方です.
確認するとIFTTTの写真連携がmobileで有効になっていたのが原因でした…….

フェリーで渡った後はイルカ眺めてはなまるうどんでかけうんどん食べて中町自転車等駐輪場に駐輪.ジュンク堂書店に寄って,ACアダプタを忘れたのでダイソーアオヤマで
200円のAC-USB変換を購入(会場の電源タップについていたのでいらなかった)
ダイソーアオヤマでは先月売っていた500円のLipoモバイルバッテリーは売り切れていて,300円の1860入りモバイルバッテリーは在庫豊富でした.
丸善とアニメイトも行きたかったけど時間がなくて断念.会場のTUKUDDOへ.

TUKUDDOでは電源アダプタとプロジェクタの用意.ここはプロジェクタにChromeCastが繋がっているので発表者が変わるたびにケーブルを繋ぎ直したりしなくていいので便利
です :)

参加者は途中参加者を含めて6人.内新規の方が1名いらっしゃいました.

発表内容は,

その他相談として,

などがありました.

自分の発表もう少し伸ばした方が良かったかもと思いつつ脱線しながら時間潰せました.
次回の日程の希望日は特に出ず,早く決めて欲しいという意見が.
とりあえずASNARO-2(イプシロン)打ち上げが延期になったので11/11(Sat)かなーとか言いつつ解散でした.

自分は自転車を回収して県立図書館で本を2冊借りて(キャリアつけ忘れたので少なめに)ニシムタに寄って垂水フェリー経由で帰宅しました.
垂水から雨と風が強くてちょっと難儀しました.雨風は自転車には辛いですね.

次回の情報などはSiteやMLで確認してください.

Vulsの特集あり

AsciiDocFXをARM64環境とかで試す

最近軽めのライブプレビューが出来てARM環境でも動くAsciiDoc環境がないかなーと探しています.今回はAsciiDocFX.

Java製のマルチプラットホームエディタ.ライブプレビュー機能もあり.

Asciidoc FX is a book / document editor to build PDF, Epub, Mobi and HTML books, documents and slides. AsciidocFX is also a winner of https://www.oracle.com/corporate/pressrelease/dukes-award-102815.html[Duke’s Choice Award 2015].

導入

アーカイブをダウンロードして展開するだけ.アーカイブはOS別にJRE同梱版とJREなし版がある.
Linux版JRE同梱版は中を見るとamd64だった.他のarchtectureではNo_JREを選ぶしかなさそう.

導入例
$ wget https://github.com/asciidocfx/AsciidocFX/releases/download/v1.5.5/AsciidocFX_Linux_No_JRE.tar.gz
$ tar xvf AsciidocFX_Linux_No_JRE.tar.gz
$ AsciidocFX/bin/AsciidocFX

OpenJDKで動かす場合は openjfx pkgも必要.

$ sudo apt install openjdk-8-jre openjfx

ARM64 + OracleJava環境では動作させることができていない.

警告

動作はしたが, overlay-scrollbar が見つからないという警告メッセージが出る.

$ ./AsciidocFX
Gtk-Message: Failed to load module "overlay-scrollbar"

overlay-scrollbar-gtk2 pkgを導入することで解決.

$ sudo apt install overlay-scrollbar-gtk2

使い勝手

  • ライブプレビューがあるのはやはり便利

    • よくずれるけども……

  • 動作はCore2Duoマシンでも起動には時間がかかるが起動すれば問題なく利用できる

    • ARM64(1.2GHz 64-Bit Quad-Core ARM Cortex A54)+OpenJDK環境ではキー入力からのタイムラグが気になって辛い

  • 書き出しフォーマットがHTML, PDF, Ebook(mobi/Epub), Docbookと豊富

    • しかしGUIでしか利用できないようでMarpと同じようなもどかしさがある

  • 基本的に3ペインで,左端はファイラー,アウトライン,最近使ったファイルが利用できるが閉じることも出来る(左端のアクティブなタブをクリック)

  • 右端ペインはプレビュー,設定が可能でこれも閉じること出来る(右端のアクティブなタブをクリック)

  • マウスの中ボタンや,shift+Insでの貼付けができない

  • 通常のコピー,ペーストもできなくなることがある

  • 利用中にフォントが滲むような表示になる

    • エディタ画面やプレビュー画面は更新で直るが他の部分は起動し直さないと直らない

てことでマウス中ボタン貼り付けや手持ちのARMで重いってことで選外に.