Linux – matoken's blog https://matoken.org/blog Is there no plan B? Sun, 21 Dec 2025 14:48:04 +0000 ja hourly 1 https://wordpress.org/?v=6.9.4 https://matoken.org/blog/wp-content/uploads/2025/03/cropped-1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9-32x32.jpeg Linux – matoken's blog https://matoken.org/blog 32 32 鹿児島Linux勉強会2025.12に参加 https://matoken.org/blog/2025/12/21/kagolug-2025-12/ https://matoken.org/blog/2025/12/21/kagolug-2025-12/#respond Sun, 21 Dec 2025 14:48:03 +0000 https://matoken.org/blog/?p=5055

鹿児島らぐというLinux User Group で月一を目標に.「鹿児島Linux勉強会」という勉強会をしています.

最近はセルフホストしたビデオミーティングソフトウェアなどを利用してBoFやアンカンファレンスのような形式でネタのある人が発表,それにツッコミを入れていくような感じです.

12月の「鹿児島Linux勉強会 2025.12」では以下のような話題で盛り上がりました.

自分は「ActivityPub Server の snac その3」として10月,11月に発表したActivityPub Server のsnac の続きの話をしました.
このときの資料はこちら

鹿児島Linux勉強会次回は都市が変わって2026/01/18(日)の予定です.

]]>
https://matoken.org/blog/2025/12/21/kagolug-2025-12/feed/ 0
鹿児島Linux勉強会2025.02に参加 https://matoken.org/blog/2025/02/28/kagolug-2025-02/ https://matoken.org/blog/2025/02/28/kagolug-2025-02/#respond Fri, 28 Feb 2025 14:09:51 +0000 https://matoken.org/blog/?p=4422

鹿児島Linux勉強会 2025.02に参加しました.

鹿児島Linux勉強会は毎月集まってアンカンファレンス形式でネタのある人が発表してそれにツッコミを入れていくような形式で進んでいきます.
最近はさくらインターネットさんに借りているさくらのVPSでセルフホストしたビデオカンファレンスソフトウェアのGalèneEtherpadなどを利用して開催しています.

今回の主な話題です.

自分は昔あったiGoogleを思い出す個人向けセルフホストポータルのGlanceの紹介をしました.

次回の開催は2025-03-16(日)の予定です.

]]>
https://matoken.org/blog/2025/02/28/kagolug-2025-02/feed/ 0
小さなLinux互換カーネルのTilckでアプリをいくつか試す https://matoken.org/blog/2023/01/10/try-tilck-apps/ https://matoken.org/blog/2023/01/10/try-tilck-apps/#respond Tue, 10 Jan 2023 10:35:54 +0000 https://matoken.org/blog/?p=3809

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

fbDOOM

まずは楽しげなfbDOOMを導入

fbDOOM
$ ./scripts/build_toolchain -s build_fbdoom
$ ./scripts/cmake_run -DEXTRA_FBDOOM=1
$ make rem

マウスデバイスがないのでキーボードでの操作のみですがそこそこ遊べます.

tilck fbdoom

FrameBuffer

次はFrameBufferのアプリを

framebuffer
./scripts/build_toolchain -s build_tfblib
$ ./scripts/cmake_run -DEXTRA_FBDOOM=1
$ make rem

以下のコマンドが使えるようになります.

fb_drawing      fb_keyinput     fb_text         fbtest
fb_hello_world  fb_tetris

マンデルブロ集合いいですよね.fb_drawing の中に有ります.

tilck fb01

TinyCC

TinyCC も使えます.

$ ./scripts/build_toolchain -s tcc
$ ./scripts/cmake_run -DEXTRA_TCC=1
$ make rem

ただし,現時点では静的リンクが必須です.

root@tilck:/# cat lib/tcc-examples/ex1.c
#!/usr/local/bin/tcc -run
#include <tcclib.h>

int main()
{
    printf("Hello World\n");
    return 0;
}
root@tilck:/# tcc lib/tcc-examples/ex1.c -o ex1
root@tilck:/# ./ex1
Killed
root@tilck:/# tcc -static lib/tcc-examples/ex1.c -o ex1
root@tilck:/# ./ex1
Hello World
Tip

こういう操作時はqemuのGUIコンソールちょっと使いづらいので -serial stdio を付けてホストマシンで操作すると便利です.

$ qemu-system-i386 -rtc base=localtime -device sb16 -drive id=img1,format=raw,if=none,file=/home/matoken/src/tilck/build/tilck.img -device ide-hd,drive=img1,cyls=74,heads=16,secs=63 -serial stdio

他にもいくつかのアプリケーションが動きます.WIkiをチェックしてみましょう.
build_toolchain script に色々加えると楽しそうです.

環境
[    0.111] Hello from Tilck 0.1.4, commit: 5835b80f
[    0.111] Build type: Debug, compiler: gcc 8.4.0
[    0.115] timer_hz: 250; time_slice: 40 ms; in_hypervisor: yes

                    ▒▒▒▒▒▒▒▒┐ ▒▒┐ ▒▒┐       ▒▒▒▒▒▒┐ ▒▒┐  ▒▒┐
                    └──▒▒┌──┘ ▒▒│ ▒▒│      ▒▒┌────┘ ▒▒│ ▒▒┌┘
                       ▒▒│    ▒▒│ ▒▒│      ▒▒│      ▒▒▒▒▒┌┘
                       ▒▒│    ▒▒│ ▒▒│      ▒▒│      ▒▒┌─▒▒┐
                       ▒▒│    ▒▒│ ▒▒▒▒▒▒▒┐ └▒▒▒▒▒▒┐ ▒▒│  ▒▒┐
                       └─┘    └─┘ └──────┘  └─────┘ └─┘  └─┘

$ dpkg-query -W qemu-system-x86
qemu-system-x86 1:7.2+dfsg-1+b2
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux bookworm/sid
Release:        n/a
Codename:       bookworm
$ arch
x86_64
]]>
https://matoken.org/blog/2023/01/10/try-tilck-apps/feed/ 0
小さなLinux互換カーネルのTilckを少し試す https://matoken.org/blog/2023/01/10/try-tilck/ https://matoken.org/blog/2023/01/10/try-tilck/#comments Mon, 09 Jan 2023 15:21:56 +0000 https://matoken.org/blog/?p=3807

小さなLinux互換カーネルのTilckというものを知ったので少し触ってみました.

対応アーキテクチャはx86 32bitで以下のようにしてbuild, Qemu での実行が可能です.

build & run
$ git clone https://github.com/vvaltchev/tilck
$ cd tilck
$ ./scripts/build_toolchain (1)
$ make (2)
$ ls -l build/tilck.img (3)
-rw-r--r-- 1 matoken matoken 37748736  1月  8 23:25 build/tilck.img
$ sg kvm -c ./build/run_qemu (4)
  1. ツールチェインの導入
  2. build
  3. イメージの確認
  4. Qemuで起動
Tilckブートローダー,<b> で起動

tilck01

一瞬で起動

tilck02

たまにKernel Panick><

tilck03

wikiを見るといくつかのプリケーションを追加して遊んだりもできるようです.

Note
fbDOOMの例
$ ./scripts/build_toolchain -s build_fbdoom
$ ./scripts/cmake_run -DEXTRA_FBDOOM=1
$ make rem

Tilck は学習向けとなっていますが,用途によっては実用にも使えそうです.
FrameBufferも動いているので日本語表示,入力できるようにすると便利かもしれません.

環境
[    0.111] Hello from Tilck 0.1.4, commit: 5835b80f
[    0.111] Build type: Debug, compiler: gcc 8.4.0
[    0.115] timer_hz: 250; time_slice: 40 ms; in_hypervisor: yes

                    ▒▒▒▒▒▒▒▒┐ ▒▒┐ ▒▒┐       ▒▒▒▒▒▒┐ ▒▒┐  ▒▒┐
                    └──▒▒┌──┘ ▒▒│ ▒▒│      ▒▒┌────┘ ▒▒│ ▒▒┌┘
                       ▒▒│    ▒▒│ ▒▒│      ▒▒│      ▒▒▒▒▒┌┘
                       ▒▒│    ▒▒│ ▒▒│      ▒▒│      ▒▒┌─▒▒┐
                       ▒▒│    ▒▒│ ▒▒▒▒▒▒▒┐ └▒▒▒▒▒▒┐ ▒▒│  ▒▒┐
                       └─┘    └─┘ └──────┘  └─────┘ └─┘  └─┘

$ dpkg-query -W qemu-system-x86
qemu-system-x86 1:7.2+dfsg-1+b2
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux bookworm/sid
Release:        n/a
Codename:       bookworm
$ arch
x86_64
]]>
https://matoken.org/blog/2023/01/10/try-tilck/feed/ 1
command-not-found.com でコマンドのパッケージを調べる https://matoken.org/blog/2022/03/02/check-the-command-package-at-command-not-found-com/ https://matoken.org/blog/2022/03/02/check-the-command-package-at-command-not-found-com/#respond Wed, 02 Mar 2022 14:25:28 +0000 http://matoken.org/blog/?p=3459

command-not-found.com というsiteを見つけました.

このコマンドは何というパッケージに含まれているんだろうというときに各種ディストリビューションのパッケージ情報から櫛崎検索しているようで便利そうです.

Debianなんかだと, apt-file search $COMMAND とかして探しています.当たり前ですが,自分の環境の情報だけしか確認できません.

$ apt-file search -x bin/ab$
apache2-utils: /usr/bin/ab

command-not-found.com だと以下の環境のパッケージ情報が確認できるようです.

  • Debian
  • Ubuntu
  • Alpine
  • Arch Linux
  • Kile Linux
  • CentOS
  • Fedora
  • Raspbian
  • Docker

一緒にコマンドの使い方も表示されて便利です.

ディストリビューションのバージョンなどは謎ですが,Raspbianというディストリビューション名などを見るに少し古めなのかな?

command-not-found.com.jpg

]]>
https://matoken.org/blog/2022/03/02/check-the-command-package-at-command-not-found-com/feed/ 0
LinuxのRAMを制限するメモ https://matoken.org/blog/2021/07/17/linux-ram-limit/ https://matoken.org/blog/2021/07/17/linux-ram-limit/#respond Fri, 16 Jul 2021 21:25:29 +0000 http://matoken.org/blog/?p=3310

LinuxでRAMの少ない状態のテストをしたいなと思ってコマンドラインオプションにメモリ制限のオプションをつけて試してみました.

物理RAMモジュールが制限したい容量に刺し直すことができればいいのですが,都合の良いサイズのRAMモジュールがあるとは限りません.Linuxの起動オプションで制限できそうだったので試してみました.

Linuxマシンを起動して,GRUBのメニューで編集したいエントリを矢印上下キーで選択して, e ボタンを押して編集メニューに入ります.
linux /vmlinuz〜 といった行に移動して末尾に追加の起動オプションを追記します.今回はメモリを2GBに制限したいので, mem=2048m を指定します.(実メモリ以上にも設定できるようですがそこを使おうとしたときにクラッシュしそうですね)

linux /vmlinuz-5.13.2-mptcp+le9 root=/dev/mapper/yoga—​260—​vg-root ro
linux /vmlinuz-5.13.2-mptcp+le9 root=/dev/mapper/yoga—​260—​vg-root ro mem=2048m

Ctrl + x を押してこのオプションで起動します.

起動したら確認してみます.

$ cat /proc/cmdline (1)
BOOT_IMAGE=/vmlinuz-5.13.2-mptcp+le9 root=/dev/mapper/yoga--260--vg-root ro mem=2048m
$ head -1 /proc/meminfo (2)
MemTotal:        2032968 kB
$ free (3)
               total        used        free      shared  buff/cache   available
Mem:         2032968     1575032       70032      161360      387904      139588
Swap:              0           0           0
  1. コマンドラインオプションの確認
  2. メモリの確認
  3. メモリの確認

2GBに制限できたようです :)

詳細はKernelドキュメントを

linux-5.13/Documentation/admin-guide/kernel-parameters.txt
        mem=nn[KMG]     [KNL,BOOT] Force usage of a specific amount of memory
                        Amount of memory to be used in cases as follows:

                        1 for test;
                        2 when the kernel is not able to see the whole system memory;
                        3 memory that lies after 'mem=' boundary is excluded from
                         the hypervisor, then assigned to KVM guests.

                        [X86] Work as limiting max address. Use together
                        with memmap= to avoid physical address space collisions.
                        Without memmap= PCI devices could be placed at addresses
                        belonging to unused RAM.

                        Note that this only takes effects during boot time since
                        in above case 3, memory may need be hot added after boot
                        if system memory of hypervisor is not sufficient.

今回の手順はアドホックな手順で再起動すれば元に戻ってしまいます.もし永続化したいのであれば, grub.cfg を書き換えればOKなはずです.今回のDebian Bullseye の場合は, /etc/grub.d/10_linux を編集して sudo update-grub2 の実行で /boot/grub/grub.cfg が更新されます.

環境
$ dpkg-query -W grub2* linux-image-`uname -r` procps
grub2
grub2-common    2.04-19
linux-image-5.13.2-mptcp+le9    5.13.2-mptcp+le9-3
procps  2:3.3.17-5
$ lsb_release -dr
Description:    Debian GNU/Linux 11 (bullseye)
Release:        11
$ arch
x86_64
]]>
https://matoken.org/blog/2021/07/17/linux-ram-limit/feed/ 0
Debian で Linux Kernel の initramfs の圧縮形式を変更する🐧🗜️ https://matoken.org/blog/2021/03/25/change-the-linux-kernel-initramfs-compression-format-on-debian/ https://matoken.org/blog/2021/03/25/change-the-linux-kernel-initramfs-compression-format-on-debian/#respond Thu, 25 Mar 2021 12:19:39 +0000 http://matoken.org/blog/?p=3141

先日「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
]]>
https://matoken.org/blog/2021/03/25/change-the-linux-kernel-initramfs-compression-format-on-debian/feed/ 0
Linux Kernel 5.11 をセルフビルドしたメモ https://matoken.org/blog/2021/02/23/memo-of-self-building-linux-kernel-5-11/ https://matoken.org/blog/2021/02/23/memo-of-self-building-linux-kernel-5-11/#respond Mon, 22 Feb 2021 22:14:26 +0000 http://matoken.org/blog/?p=3017

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
]]>
https://matoken.org/blog/2021/02/23/memo-of-self-building-linux-kernel-5-11/feed/ 0
Linuxマルチモニタ環境のウェブブラウザでスクリーン共有を行うとすべてのスクリーンが共有されてしまう問題がChromiumで解決 https://matoken.org/blog/2020/05/26/chromium-risolve-il-problema-che-tutti-gli-schermi-sono-condivisi-quando-si-utilizza-la-condivisione-dello-schermo-in-un-browser-web-su-ambienti-multi-monitor-linux/ https://matoken.org/blog/2020/05/26/chromium-risolve-il-problema-che-tutti-gli-schermi-sono-condivisi-quando-si-utilizza-la-condivisione-dello-schermo-in-un-browser-web-su-ambienti-multi-monitor-linux/#respond Tue, 26 May 2020 14:59:26 +0000 http://matoken.org/blog/?p=2752

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

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

]]>
https://matoken.org/blog/2020/05/26/chromium-risolve-il-problema-che-tutti-gli-schermi-sono-condivisi-quando-si-utilizza-la-condivisione-dello-schermo-in-un-browser-web-su-ambienti-multi-monitor-linux/feed/ 0
Linux ARM版Vivaldiを入れてみた https://matoken.org/blog/2017/12/07/i-put-the-linux-arm-version-vivaldi/ https://matoken.org/blog/2017/12/07/i-put-the-linux-arm-version-vivaldi/#comments Wed, 06 Dec 2017 21:32:30 +0000 http://matoken.org/blog/?p=1721 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

関連

]]>
https://matoken.org/blog/2017/12/07/i-put-the-linux-arm-version-vivaldi/feed/ 3
鹿児島Linux勉強会 2017.10に参加 https://matoken.org/blog/2017/10/20/participated-in-the-kagoshima-linux-study-meeting-2017-10/ https://matoken.org/blog/2017/10/20/participated-in-the-kagoshima-linux-study-meeting-2017-10/#respond Thu, 19 Oct 2017 16:19:14 +0000 http://matoken.org/blog/?p=1684 鹿児島らぐ鹿児島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の特集あり

]]>
https://matoken.org/blog/2017/10/20/participated-in-the-kagoshima-linux-study-meeting-2017-10/feed/ 0
AsciiDocFXをARM64環境とかで試す https://matoken.org/blog/2017/08/03/try-asciidocfx-in-the-arm64/ https://matoken.org/blog/2017/08/03/try-asciidocfx-in-the-arm64/#respond Wed, 02 Aug 2017 21:14:20 +0000 http://matoken.org/blog/?p=1637

最近軽めのライブプレビューが出来て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で重いってことで選外に.

]]>
https://matoken.org/blog/2017/08/03/try-asciidocfx-in-the-arm64/feed/ 0
パスワードジェネレーターコマンド apg のオプションメモ https://matoken.org/blog/2017/08/01/apg-command-option/ https://matoken.org/blog/2017/08/01/apg-command-option/#respond Mon, 31 Jul 2017 20:57:12 +0000 http://matoken.org/blog/?p=1628

新しいマシンの設定するときに調べ直したメモ.

よく使うオプション

  • -a パスワードアルゴリズムの指定

    • 0 発音可能

    • 1 ランダム

  • -n パスワード生成数

  • -m パスワード最低文字長

  • -x パスワード最大文字長

  • -M 文字の種類を指定

    • S 必ず記号を利用

    • s 記号を利用

    • N 必ず数字を利用

    • n 数字を利用

    • C 必ず英大文字を利用

    • c 英大文字を利用

    • L 必ず英小文字を利用

    • l 英小文字を利用

  • -E 指定した文字を利用しない(複数指定可能)

記号のみ

$ apg -Ms -a1
#/^>,\../
\^./\{~<
%(_/_%_]]`
=..,;[$('
"$$$"<!]~
-%\?`_++<<
$ apg -MS -a1
,/.>[@;%@`
@,$(_/*_.
``'"}=*%#
[#|,'@?"-
,?];"]]&?@
[)'$@>'{/}

数字のみ

$ apg -Mn -a1
14683511
97138910
5192942105
3010244799
381484337
493808346
$ apg -MN -a1
5426157541
03163967
98161665
369810970
38523677
249810992

英大文字のみ

$ apg -Mc -a1
GBUDJODXIH
RMEUJNHKQM
OJHCTVJR
HPWKCOLD
ZAPCGYWCNA
WIOKVXDTZW
$ apg -MC -a1
KOQOVOSAJB
IWWQSBTL
IPUFNTGP
GMKFKXIJKT
OWVNYNFL
QLVOAUEMSU

英子文字のみ

$ apg -Ml -a1
uviqxdrc
tukfvlona
mzmwjjhe
jtssfdla
qmzjxlet
rzzxjvnyr
$ apg -ML -a1
wivxbkdpe
xnvdepbhro
wclwdrofjk
dorabarzdc
zedblcjp
ibwmgwwrv

記号数字英大文字小文字を必ず含む

$ apg -MSNCL
8dromKaix"
in2OfKain;
{on1Woan
Peow9Ot_
|owpIpVap9
7OnryubAp`

パスワード長最低11文字

$ apg -MSNCL -m11
DiOfnu1Miv>
@okshEcWew0
cosh1olbIm^
forkow0Oll^
'Obpiugtut1
ItEdd`dros0

パスワード文字長11〜16文字

apg -MSNCL -m11 -x16
bywax|biggIp3
yik7henvecJavUj"
8lawhasBokPyft^
yijTysFeg5oj%
8quactArnyobpec?
abGaj9etsyic)

覚え方も併記

$ apg -MSNCL -m11 -l
rawd9<FriWa romeo-alfa-whiskey-delta-NINE-LESS_THAN-Foxtrot-romeo-india-Whiskey-alfa
`shnoandOg1 GRAVE-sierra-hotel-november-oscar-alfa-november-delta-Oscar-golf-ONE
Rudwem9Gon! Romeo-uniform-delta-whiskey-echo-mike-NINE-Golf-oscar-november-EXCLAMATION_POINT
8OjsewJerj, EIGHT-Oscar-juliett-sierra-echo-whiskey-Juliett-echo-romeo-juliett-COMMA
mayng1WiUb^ mike-alfa-yankee-november-golf-ONE-Whiskey-india-Uniform-bravo-CIRCUMFLEX
Dams9Odcan- Delta-alfa-mike-sierra-NINE-Oscar-delta-charlie-alfa-november-HYPHEN

パスワードの生成数を20に

$ apg -MSNCL -m11 -l -n20
3OcMu7twad` THREE-Oscar-charlie-Mike-uniform-SEVEN-tango-whiskey-alfa-delta-GRAVE
Fed8Twygub; Foxtrot-echo-delta-EIGHT-Tango-whiskey-yankee-golf-uniform-bravo-SEMICOLON
Re^SwibTim9 Romeo-echo-CIRCUMFLEX-Sierra-whiskey-india-bravo-Tango-india-mike-NINE
~trirv2Dosh TILDE-tango-romeo-india-romeo-victor-TWO-Delta-oscar-sierra-hotel
Rot%slocOv1 Romeo-oscar-tango-PERCENT_SIGN-sierra-lima-oscar-charlie-Oscar-victor-ONE
5Knu.BijKue FIVE-Kilo-november-uniform-PERIOD-Bravo-india-juliett-Kilo-uniform-echo
!olf6Fobviv EXCLAMATION_POINT-oscar-lima-foxtrot-SIX-Foxtrot-oscar-bravo-victor-india-victor
_HemJefGej4 UNDERSCORE-Hotel-echo-mike-Juliett-echo-foxtrot-Golf-echo-juliett-FOUR
8drydOdlec| EIGHT-delta-romeo-yankee-delta-Oscar-delta-lima-echo-charlie-VERTICAL_BAR
mud2FridOn= mike-uniform-delta-TWO-Foxtrot-romeo-india-delta-Oscar-november-EQUAL_SIGN
ic:GrubFek6 india-charlie-COLON-Golf-romeo-uniform-bravo-Foxtrot-echo-kilo-SIX
playb(Blos4 papa-lima-alfa-yankee-bravo-LEFT_PARENTHESIS-Bravo-lima-oscar-sierra-FOUR
KajCedd<od8 Kilo-alfa-juliett-Charlie-echo-delta-delta-LESS_THAN-oscar-delta-EIGHT
Num>ObAind4 November-uniform-mike-GREATER_THAN-Oscar-bravo-Alfa-india-november-delta-FOUR
0Quoorc=gro ZERO-Quebec-uniform-oscar-oscar-romeo-charlie-EQUAL_SIGN-golf-romeo-oscar
Ocweecs_El4 Oscar-charlie-whiskey-echo-echo-charlie-sierra-UNDERSCORE-Echo-lima-FOUR
Jirk,Kneip7 Juliett-india-romeo-kilo-COMMA-Kilo-november-echo-india-papa-SEVEN
Marb?Bluch1 Mike-alfa-romeo-bravo-QUESTION_MARK-Bravo-lima-uniform-charlie-hotel-ONE
gabGon:Jep9 golf-alfa-bravo-Golf-oscar-november-COLON-Juliett-echo-papa-NINE
#utvabVert2 CROSSHATCH-uniform-tango-victor-alfa-bravo-Victor-echo-romeo-tango-TWO

指定した文字を含めない

$ apg -MSNCL -m11 -E1l!
Mobad3ubUj,
Ji3vin@Oraj
rap&OnIarb4
banip4UvAd(
Deugh[ixEn8
mojAw{osev5

aliasに設定

aliasに設定しておくと便利.

以下はbashに設定した例
$ echo 'alias apg="apg -MSNCL -m11"' | tee -a ~/.bashrc
alias apg="apg -MSNCL -m11"
設定反映(もしくはログインし直し)
$ source ~/.bashrc
$ alias | grep apg
alias apg='apg -MSNCL -m11'
動作確認
$ apg
EcsAr)Gruk9
Toym7Blyft%
phiet'ijEg4
wimDu[Neeb4
niUds/Odav2
notCeit!oc6
オプションを追加することも出来る
$ apg -l
6Drowm`twup SIX-Delta-romeo-oscar-whiskey-mike-GRAVE-tango-whiskey-uniform-papa
twar1mu^Mel tango-whiskey-alfa-romeo-ONE-mike-uniform-CIRCUMFLEX-Mike-echo-lima
Upumwik?Oc4 Uniform-papa-uniform-mike-whiskey-india-kilo-QUESTION_MARK-Oscar-charlie-FOUR
cyx4Odcaff) charlie-yankee-x_ray-FOUR-Oscar-delta-charlie-alfa-foxtrot-foxtrot-RIGHT_PARENTHESIS
6drebIt/quo SIX-delta-romeo-echo-bravo-India-tango-SLASH-quebec-uniform-oscar
5Ofdiatilg' FIVE-Oscar-foxtrot-delta-india-alfa-tango-india-lima-golf-APOSTROPHE
一時的にaliasを無効に
$ \apg
stintun0Oc? (stint-un-ZERO-Oc-QUESTION_MARK)
FlewUcyibr&Op0 (Flew-Uc-yibr-AMPERSAND-Op-ZERO)
Ont3okDeadGeg~ (Ont-THREE-ok-Dead-Geg-TILDE)
reginkAl#twew5 (reg-ink-Al-CROSSHATCH-twew-FIVE)
"4KnapavAvTil (QUOTATION_MARK-FOUR-Knap-av-Av-Til)
Frol9Swec\ (Frol-NINE-Swec-BACKSLASH)

環境

$ apg -v
APG (Automated Password Generator)
version 2.2.3 (PRNG: X9.17/SHA-1)
Copyright (c) 1999, 2000, 2001, 2002, 2003 Adel I. Mirzazhanov
$ apt show apg
Package: apg
Version: 2.2.3.dfsg.1-4
Priority: optional
Section: admin
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Marc Haber <mh+debian-packages@zugschlus.de>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 137 kB
Depends: libc6 (>= 2.14)
Homepage: http://www.adel.nursat.kz/apg/
Task: ubuntu-desktop, ubuntu-usb, edubuntu-desktop, edubuntu-usb, ubuntu-gnome-desktop, ubuntu-touch, ubuntukylin-desktop, ubun
tu-budgie-desktop
Supported: 9m
Download-Size: 50.2 kB
APT-Manual-Installed: no
APT-Sources: http://jp.archive.ubuntu.com/ubuntu artful/main amd64 Packages
Description: 自動パスワード生成器 - スタンドアロン版
 APG (Automated Password Generator) is the tool set for random password generation. It generates some random words of required
type and prints them to standard output. This binary package contains only the standalone version of apg. Advantages:
  * Built-in ANSI X9.17 RNG (Random Number Generator)(CAST/SHA1)
  * Built-in password quality checking system (now it has support for Bloom
    filter for faster access)
  * Two Password Generation Algorithms:
     1. Pronounceable Password Generation Algorithm (according to NIST
        FIPS 181)
     2. Random Character Password Generation Algorithm with 35
        configurable modes of operation
  * Configurable password length parameters
  * Configurable amount of generated passwords
  * Ability to initialize RNG with user string
  * Support for /dev/random
  * Ability to crypt() generated passwords and print them as additional output.
  * Special parameters to use APG in script
  * Ability to log password generation requests for network version
  * Ability to control APG service access using tcpd
  * Ability to use password generation service from any type of box (Mac,
    WinXX, etc.) that connected to network
  * Ability to enforce remote users to use only allowed type of password
    generation
  The client/server version of apg has been deliberately omitted.
 .
 Please note that there are security flaws in pronounceable password
 generation schemes (see Ganesan / Davis "A New Attack on Random
 Pronounceable Password Generators", in "Proceedings of the 17th National
 Computer Security Conference (NCSC), Oct. 11-14, 1994 (Volume 1)",
 http://csrc.nist.gov/publications/history/nissc/ 1994-17th-NCSC-
 proceedings-vol-1.pdf, pages 203-216)
 .
 apg has not seen upstream attention since 2003, upstream is not answering
 e-mail, and the upstream web page does not look like it is in good working
 order. The Debian maintainer plans to discontinue apg maintenance as soon
 as an actually maintained software with a compariable feature set becomes
 available.

$ neofetch
            .-/+oossssoo+/-.              mk@x200
        `:+ssssssssssssssssss+:`          -------
      -+ssssssssssssssssssyyssss+-        Model: 74574PJ ThinkPad X200
    .ossssssssssssssssssdMMMNysssso.      OS: Ubuntu Artful Aardvark (development branch) x86_64
   /ssssssssssshdmmNNmmyNMMMMhssssss/     Kernel: 4.11.0-10-generic
  +ssssssssshmydMMMMMMMNddddyssssssss+    Uptime: 2 days, 18 hours, 10 minutes
 /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/   Packages: 4274
.ssssssssdMMMNhsssssssssshNMMMdssssssss.  Shell: bash 4.4.12
+sssshhhyNMMNyssssssssssssyNMMMysssssss+  Resolution: 1280x800
ossyNMMMNyMMhsssssssssssssshmmmhssssssso  WM: awesome
ossyNMMMNyMMhsssssssssssssshmmmhssssssso  Theme: Ambiance [GTK3]
+sssshhhyNMMNyssssssssssssyNMMMysssssss+  Icons: Ubuntu-mono-dark [GTK3]
.ssssssssdMMMNhsssssssssshNMMMdssssssss.  Terminal: tilix
 /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/   CPU: Intel 2 Duo P8400 (2) @ 2.267GHz
  +sssssssssdmydMMMMMMMMddddyssssssss+    GPU: Intel® GM45 Express Chipset
   /ssssssssssshdmNNNNmyNMMMMhssssss/     GPU: Intel® GM45 Express Chipset
    .ossssssssssssssssssdMMMNysssso.      Memory: 7083MiB / 7878MiB
      -+sssssssssssssssssyyyssss+-
        `:+ssssssssssssssssss+:`
            .-/+oossssoo+/-.

]]>
https://matoken.org/blog/2017/08/01/apg-command-option/feed/ 0
ext4の暗号化fsを試してみる https://matoken.org/blog/2017/04/02/try-ext4-encryption-file-system/ https://matoken.org/blog/2017/04/02/try-ext4-encryption-file-system/#respond Sat, 01 Apr 2017 23:20:44 +0000 http://matoken.org/blog/?p=1579 Linux 4.1でext4の暗号化ファイルシステムが取り込まれているのに気づいたので少し試してみました.
cCryptFSやEncFSなどと同じようにファイル単位での暗号化です.前もって暗号化フラグを設定してあれば一般ユーザが勝手に暗号領域を作ることも可能でした.eCryptFSやEncFSのような使い方も可能そうです.恐らく速度はこちらのほうが速いでしょう(未確認).ただ,パスフレーズがわかってしまうと別のユーザからもマウント可能だしパーミッションがあれば読み書きも出来るので通常のファイルシステムと同様パーミッションの設定は必須ですね.
パーティション内全てを暗号化することは出来ないようなのでLUKS(dm-crypt)とは単純に空きかえることはできなさそうです.

そんなこんなでもともとAndroid向けということもあってPC/Serverではあまり使いみちが思いつかない感じです.(何かいい使い方ありそうだけど…….)

必要条件確認

  • Linux 4.1以上
$ uname -r
4.9.0-2-amd64
  • CONFIG_EXT4_ENCRYPTIONが有効
$ grep CONFIG_EXT4_ENCRYPTION /boot/config-`uname -r`
CONFIG_EXT4_ENCRYPTION=y
  • e2fsprogs 1.43以上
$ dpkg-query -W e2fsprogs
e2fsprogs       1.43.4-2
  • ブロックサイズが4k
$ sudo dumpe2fs /dev/loop0 | grep -i 'block size'
dumpe2fs 1.43.4 (31-Jan-2017)
Block size:               4096

必要なパッケージの導入

$ sudo apt install e2fsprogs keyutils util-linux coreutils mount

ファイルシステムの用意

今回は既存のファイルシステム内にディスクイメージを作成してそれを利用

  • 1GBのディスクイメージの作成
$ dd if=/dev/zero of=ext4-crypt.img seek=1073741824 bs=1 count=1
1+0 レコード入力
1+0 レコード出力
1 byte copied, 0.000118528 s, 8.4 kB/s
  • パーティションの作成
    primaryを1つ作成
$ /sbin/fdisk ext4-crypt.img

Welcome to fdisk (util-linux 2.29.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xa25a3988.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-2097151, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-2097151, default 2097151): 

Created a new partition 1 of type 'Linux' and of size 1023 MiB.

Command (m for help): w
The partition table has been altered.
Syncing disks.
  • ext4でフォーマット
$ /sbin/mkfs.ext4 ./ext4-crypt.img 
mke2fs 1.43.4 (31-Jan-2017)
Found a dos partition table in ./ext4-crypt.img
Proceed anyway? (y,N) y
Discarding device blocks: done                            
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: dc44fd43-7d7a-4dfc-87f1-dc52410e2dd1
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
  • マウント
$ sudo mount -o loop ./ext4-crypt.img /mnt
$ grep /mnt /etc/mtab 
/dev/loop0 /mnt ext4 rw,relatime,data=ordered 0 0
  • オーナー,グループの変更
$ sudo chown `id -u`.`id -g` /mnt
$ ls -la /mnt
合計 36
drwxr-xr-x 3 mk   mk    4096  4月  2 04:58 .
drwxr-xr-x 1 root root   248  3月 28 02:19 ..
drwx------ 2 root root 16384  4月  2 04:58 lost+found

ext4暗号化ファイルシステムの利用

  • ext4の暗号化フラグを設定
$ sudo tune2fs -O encrypt /dev/loop0
$ sudo dumpe2fs /dev/loop0 | grep -io encrypt
dumpe2fs 1.43.4 (31-Jan-2017)
encrypt
  • 鍵の生成とキーリングへの追加
$ /usr/sbin/e4crypt add_key
Enter passphrase (echo disabled): 
Added key with descriptor [07a3ce5a6ebf0396]
$ keyctl show
Session Keyring
1048296028 --alswrv   1000  1000  keyring: _ses
 615559430 --alsw-v   1000  1000   \_ logon: ext4:07a3ce5a6ebf0396

※パスフレーズの入力は1回だけで確認されないので初回は特に注意.利用しはじめる前にキーリングをクリアして登録し直してパスフレーズが正しいか確認しておく.

  • 暗号化ポリシーの設定

このとき対象ディレクトリが空ではない場合エラーとなる( Error [Directory not empty] setting policy. )ので注意.

マウントポイントにはlost+foundが存在するので必ずサブディレクトリ以下である必要がある.

$ mkdir /mnt/encryption
$ /usr/sbin/e4crypt set_policy 07a3ce5a6ebf0396 /mnt/encryption
Key with descriptor [07a3ce5a6ebf0396] applied to /mnt/encryption.

※鍵の生成とキーリングへの追加と暗号化ポリシーの設定は次のようにすることで一度に設定可能

$ /usr/sbin/e4crypt add_key /mnt/encryption
  • 暗号化ファイルシステム領域にファイルを作成
$ echo 'hello' > /mnt/encryption/test.txt
$ ls -la /mnt/encryption
合計 12
drwxr-xr-x 2 mk mk 4096  4月  2 05:07 .
drwxr-xr-x 4 mk mk 4096  4月  2 05:06 ..
-rw-r--r-- 1 mk mk    6  4月  2 05:07 test.txt
  • キーリングのクリア
$ sudo keyctl clear @s
$ sudo keyctl show
Session Keyring
1048296028 --alswrv   1000  1000  keyring: _ses

キーリングをクリアしただけではアクセスできる

$ ls -lA /mnt/encryption
合計 12
-rw-r--r-- 1 mk mk    6  4月  2 05:07 test.txt
  • アンマウントとマウントし直し

キーリングをクリアした状態でアンマウントすると暗号化された状態に戻る

$ sudo umount /mnt
$ sudo mount -o loop ./ext4-crypt.img /mnt
$ ls -la /mnt/encryption
合計 12
drwxr-xr-x 2 mk mk 4096  4月  2 05:42 .
drwxr-xr-x 4 mk mk 4096  4月  2 05:06 ..
-rw-r--r-- 1 mk mk    6  4月  2 05:42 uzUlJZQfaxMx,7cC63,53A
$ cat /mnt/encryption/uzUlJZQfaxMx,7cC63,53A 
cat: /mnt/encryption/uzUlJZQfaxMx,7cC63,53A: 要求されたキーが利用できません

ユーザ,グループ,パーミッションなどは見える.内容にはアクセスできない.

  • 再度暗号化領域を利用出来るようにする

鍵の生成とキーリングへの追加と暗号化ポリシーの設定をし直すとアクセスできるようになる

$ /usr/sbin/e4crypt add_key /mnt/encryption
Enter passphrase (echo disabled): 
Added key with descriptor [07a3ce5a6ebf0396]
$ ls -la /mnt/encryption
合計 12
drwxr-xr-x 2 mk mk 4096  4月  2 05:42 .
drwxr-xr-x 4 mk mk 4096  4月  2 05:06 ..
-rw-r--r-- 1 mk mk    6  4月  2 05:42 test.txt

ファイル名長の確認

EncFSなどはファイル名のメタデータがファイル名内にあるので利用できるファイル名長が短くなってしまう.ext4ではどうか試す.

  • 通常のext4領域では256文字
$ touch /mnt/1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456
touch: '/mnt/1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456' に touch できません: ファイル名が長すぎます
$ touch /mnt/123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345
  • 暗号化領域も同様だった
$ touch /mnt/encryption/123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345
$ ls -lA /mnt/encryption/
合計 4
-rw-r--r-- 1 mk mk 0  4月  2 07:14 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345
-rw-r--r-- 1 mk mk 6  4月  2 05:42 test.txt
  • 非暗号化状態ではこんな状態
-rw-r--r-- 1 mk mk    0  4月  2 07:14 _OsoePJvc3qPQCPHbUMtjSynszcHig3BL
-rw-r--r-- 1 mk mk    6  4月  2 05:42 uzUlJZQfaxMx,7cC63,53A

復号状態のファイル名は別の場所に記録されているよう.

複数の暗号化領域を作ってみる

  • 新しい暗号化領域のためのディレクトリを作成
$ mkdir /mnt/encryption2
$ ls -la /mnt/encryption2
合計 8
drwxr-xr-x 2 mk mk 4096  4月  2 06:49 .
drwxr-xr-x 5 mk mk 4096  4月  2 06:49 ..
  • 暗号化設定
$ sudo e4crypt add_key /mnt/encryption2
Enter passphrase (echo disabled):
Key with descriptor [9640dd016062b432] already exists
Key with descriptor [9640dd016062b432] applied to /mnt/encryption2.
$ keyctl show
Session Keyring   
1048296028 --alswrv   1000  1000  keyring: _ses
  94779002 --alsw-v      0     0   \_ logon: ext4:69ca01e214957173
 219437542 --alsw-v      0     0   \_ logon: ext4:07a3ce5a6ebf0396
1025344233 --alsw-v      0     0   \_ logon: ext4:9640dd016062b432
$ touch /mnt/encryption2/hoge
  • 一回暗号化を解除してマウントし直す
$ keyctl clear @s
$ keyctl show
Session Keyring   
1048296028 --alswrv   1000  1000  keyring: _ses
$ sudo umount /mnt
$ sudo mount -o loop ./ext4-crypt.img /mnt
  • 片方だけ鍵を登録して暗号化領域を利用
$ sudo e4crypt add_key /mnt/encryption2
Enter passphrase (echo disabled):
Added key with descriptor [9640dd016062b432]
Key with descriptor [9640dd016062b432] applied to /mnt/encryption2.
$ ls -la /mnt/encryption*
/mnt/encryption:  
合計 12
drwxr-xr-x 2 mk mk 4096  4月  2 06:11 .
drwxr-xr-x 5 mk mk 4096  4月  2 06:49 ..
-rw-r--r-- 1 mk mk    0  4月  2 06:11 _OsoePJvc3qPQCPHbUMtjSynszcHig3BL
-rw-r--r-- 1 mk mk    6  4月  2 05:42 uzUlJZQfaxMx,7cC63,53A

/mnt/encryption2: 
合計 8
drwxr-xr-x 2 mk mk 4096  4月  2 06:51 .
drwxr-xr-x 5 mk mk 4096  4月  2 06:49 ..
-rw-r--r-- 1 mk mk    0  4月  2 06:51 hoge

暗号化領域に鍵が登録されてない状態でファイルを作ってみる

暗号化領域に鍵が登録されてない状態でファイルを作るとどうなるかを確認.

$ ls -lA /mnt/encryption
合計 4
-rw-r--r-- 1 mk mk 0  4月  2 07:14 _OsoePJvc3qPQCPHbUMtjSynszcHig3BL
-rw-r--r-- 1 mk mk 6  4月  2 05:42 uzUlJZQfaxMx,7cC63,53A
mk@x220:~ (1180)$ touch /mnt/encryption/test
touch: '/mnt/encryption/test' のタイムスタンプを設定中です: そのようなファイルやディレクトリはありません
mk@x220:~ (1181)$ ls -lA /mnt/encryption
合計 4
-rw-r--r-- 1 mk mk 0  4月  2 07:14 _OsoePJvc3qPQCPHbUMtjSynszcHig3BL
-rw-r--r-- 1 mk mk 6  4月  2 05:42 uzUlJZQfaxMx,7cC63,53A

エラーとなって作れない.

別のユーザで利用

  • 別のユーザで中が見えるか確認
$ id
uid=1001(gm) gid=1001(gm) groups=1001(gm),20(dialout),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),107(netdev)
$ ls -la /mnt/encryption
合計 12
drwxr-xr-x 2 mk mk 4096  4月  2 06:11 .
drwxr-xr-x 7 mk mk 4096  4月  2 07:48 ..
-rw-r--r-- 1 mk mk    0  4月  2 07:14 _OsoePJvc3qPQCPHbUMtjSynszcHig3BL
-rw-r--r-- 1 mk mk    6  4月  2 05:42 uzUlJZQfaxMx,7cC63,53A
$ ls -la /mnt/encryption
合計 12
drwxrwxrwx 2 mk mk 4096  4月  2 06:11 .
drwxr-xr-x 7 mk mk 4096  4月  2 07:48 ..
-rw-r--r-- 1 mk mk    0  4月  2 07:14 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345
-rw-r--r-- 1 mk mk    6  4月  2 05:42 test.txt
  • 権限があればファイル作成もできる
$ touch /mnt/encryption/other_user
$ ls -lA /mnt/encryption
合計 4
-rw-r--r-- 1 mk mk 0  4月  2 07:14 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345
-rw-r--r-- 1 gm gm 0  4月  2 07:55 other_user
-rw-r--r-- 1 mk mk 6  4月  2 05:42 test.txt
  • 暗号化解除は出来ないと思ったが,
$ /usr/sbin/e4crypt add_key /mnt/encryption
/mnt/encryption: Permission denied
  • パーミッションをゆるくしてやると出来てしまう.
$ ls -la /mnt/encryption
合計 12
drwxrwxrwx 2 mk mk 4096  4月  2 07:55 .
drwxr-xr-x 7 mk mk 4096  4月  2 07:48 ..
-rw-r--r-- 1 gm gm    0  4月  2 07:55 97NmIBETx,1q9US96etRsA
-rw-r--r-- 1 mk mk    0  4月  2 07:14 _OsoePJvc3qPQCPHbUMtjSynszcHig3BL
-rw-r--r-- 1 mk mk    6  4月  2 05:42 uzUlJZQfaxMx,7cC63,53A
$ /usr/sbin/e4crypt add_key /mnt/encryption
Enter passphrase (echo disabled): 
Added key with descriptor [07a3ce5a6ebf0396]
Error [Permission denied] setting policy.
The key descriptor [07a3ce5a6ebf0396] may not match the existing encryption context for directory [/mnt/encryption].
$ ls -lA /mnt/encryption
合計 4
-rw-r--r-- 1 mk mk 0  4月  2 07:14 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345
-rw-r--r-- 1 gm gm 0  4月  2 07:55 other_user
-rw-r--r-- 1 mk mk 6  4月  2 05:42 test.txt

]]>
https://matoken.org/blog/2017/04/02/try-ext4-encryption-file-system/feed/ 0
Mumble server設定メモ https://matoken.org/blog/2017/01/26/mumble-server-setting-note/ https://matoken.org/blog/2017/01/26/mumble-server-setting-note/#respond Wed, 25 Jan 2017 17:42:07 +0000 http://matoken.org/blog/?p=1507 鹿児島Linux勉強会 2017.01の遠隔で利用した設定メモです.

  • サーバのOSはDebian jessie amd64
  • 自動起動せず利用時に手動で起動する
  • fwも都度手動
  • サブチャンネルはなし
  • ssl証明書は既存のstartsslを利用

pkgの導入

$ sudo apt install mumble-server

自動起動を無効にする

$ sudo dpkg-reconfigure mumble-server

で設定画面に入り,

Mumble-server (murmurd) can start automatically when the server is booted.

Autostart mumble-server on server boot?

を選択する.
(/etc/default/mumble-serverMURMUR_DAEMON_START=0でも)

設定ファイルを編集

diff --git a/mumble-server.ini b/mumble-server.ini
index b445d4e..46f1dfd 100644
--- a/mumble-server.ini
+++ b/mumble-server.ini
@@ -12,7 +12,7 @@
 #        NOT regex = \w* BUT regex = \\w*

 # Path to database. If blank, will search for
-# murmur.sqlite in default locations or create it if not found.
+A
 database=/var/lib/mumble-server/mumble-server.sqlite

 # If you wish to use something other than SQLite, you'll need to set the name
@@ -86,7 +86,7 @@ pidfile=/var/run/mumble-server/mumble-server.pid
 # configure it here ehan ehrough D-Bus or Ice.
 #
 # Welcome message sent to clients when they connect.
-welcometext="<br />Welcome to this server running <b>Murmur</b>.<br />Enjoy your stay!<br />"
+welcometext="<br />Welcome to KagoLUG server running <b>Murmur</b>.<br />Enjoy your stay!<br />"

 # Port to bind TCP and UDP sockets to.
 port=64738
@@ -144,26 +144,28 @@ users=100
 # addresses.
 # Only uncomment the 'registerName' parameter if you wish to give your "Root" channel a custom name.
 #
-#registerName=Mumble Server
+registerName=KagoLUG Mumble Server
 #registerPassword=secret
 #registerUrl=http://mumble.sourceforge.net/
-#registerHostname=
+registerHostname=kagolug.org

 # If this option is enabled, the server will announce its presence via the 
 # bonjour service discovery protocol. To change the name announced by bonjour
 # adjust the registerName variable.
 # See http://developer.apple.com/networking/bonjour/index.html for more information
 # about bonjour.
-#bonjour=True
+bonjour=False

 # If you have a proper SSL certificate, you can provide the filenames here.
 # Otherwise, Murmur will create it's own certificate automatically.
-#sslCert=
-#sslKey=
+#sslCert=/etc/letsencrypt/live/kagolug.org/cert.pem
+sslCert=/etc/letsencrypt/live/kagolug.org/fullchain.pem
+sslKey=/etc/letsencrypt/live/kagolug.org/privkey.pem
+#sslCA=/etc/letsencrypt/live/kagolug.org/fullchain.pem

 # If Murmur is started as root, which user should it switch to?
 # This option is ignored if Murmur isn't started with root privileges.
-uname=mumble-server
+uname=root

 # If this options is enabled, only clients which have a certificate are allowed
 # to connect.

ssl証明書をクリア

$ sudo murmurd -wipessl
$ sudo killall murmurd

利用時

デーモンの起動とポート開放を行う

$ sudo service mumble-server start
$ sudo iptables -A INPUT -p udp -m udp --dport 64738 -j ACCEPT
$ sudo iptables -A INPUT -p tcp -m tcp --dport 64738 -j ACCEPT

利用者にはサーバとポートを伝える
– server : kagolug.org
– port : 64738

mumble://kagolug.org?title=KagoLUG%20Mumble%20Server&version=1.2.0

利用環境

  • PC : ThinkPad X200(Ubuntu 16.10 amd64)
  • マイク : elecom製の数百円のもの
  • スピーカー : Elecom LBT-SPTR01ECBK

はじめLBT-SPTR01ECBKでマイクとスピーカー両方の役割をと思っていたが,うまく音を拾えない&HSP/HFPでは音が悪く聞き取りづらかったので役割を分けた.
マイクはPC直付だったので音を拾いづらい&キー入力の音などを拾っていたはず.

利用完了時

デーモンの終了

$ sudo service mumble-server start

iptablesのmumbleルールを閉じる

$ sudo iptables -L --line-numbers | grep 64738
23   ACCEPT     udp  --  anywhere             anywhere             udp dpt:64738
24   ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:64738
$ sudo iptables -D INPUT 23
$ sudo iptables -D INPUT 24
$ sudo iptables -L --line-numbers | grep 64738

課題

ssl証明書ファイルを読み込むためにdaemonをrootで動かしているのをmumble-serverユーザに戻したい.

-uname=mumble-server
+uname=root
$ sudo ls -l /etc/letsencrypt/live/kagolug.org/fullchain.pem /etc/letsencrypt/live/kagolug.org/privkey.pem
lrwxrwxrwx 1 root ssl-cert 40 Dec 26 10:30 /etc/letsencrypt/live/kagolug.org/fullchain.pem -> ../../archive/kagolug.org/fullchain9.pem
lrwxrwxrwx 1 root ssl-cert 38 Dec 26 10:30 /etc/letsencrypt/live/kagolug.org/privkey.pem -> ../../archive/kagolug.org/privkey9.pem

ssl-certグループにmumble-serverを登録で行けそう?

マイク

会議向けの全方位のマイクが欲しい

]]>
https://matoken.org/blog/2017/01/26/mumble-server-setting-note/feed/ 0
鹿児島Linux勉強会 2017.01に参加 https://matoken.org/blog/2017/01/26/participated-in-the-kagoshima-linux-study-meeting-2017-01/ https://matoken.org/blog/2017/01/26/participated-in-the-kagoshima-linux-study-meeting-2017-01/#respond Wed, 25 Jan 2017 17:37:04 +0000 http://matoken.org/blog/?p=1505
  • 鹿児島Linux勉強会 2017.01 – connpass

    • 開催日時 : 2017/01/04(水)
      13:00 〜 17:00
    • 会場 : サンエールかごしま 中研修室1
    • 参加者 : 現地3人 + 遠隔1人 = 計4人
  • TitanPad: 鹿児島Linux勉強会 2017.01 (勉強会ノート)

  • 今回は遠隔参加を試してみました.BigBluebuttonなどの会議システムは映像も双方向に送れていい感じなのですが,野良勉強会では回線が無かったり今使っているPCではリアルタイムエンコードが難しいという問題があります.そこで音声のみのMumbleを利用しました.

    サーバはさくらのVPSに設定,会場ではBluetoothマイク兼スピーカーで……と思ったのですが,このマイクではうまく音を拾わない&ヘッドホンのプロファイルでは音質も悪いのでA2DPにしてスピーカーのみの利用として,マイクはPC直付にしました.
    このマイクは一応前指向性ですが数百円の安物なので音質は悪かったと思います.
    でも双方向でのやり取りが出来るのは良かったです.会議室利用の際は良さそうです.

    今回は資料が事前に共有できていたので良かったですが,資料が事前に共有できない場合はやはりどうにか映像を共有する方法を考えないといけないでしょうね.
    そうするとやはりBBBやYoutubeLive等が必要に…….(帯域をなるべく絞って映像のみRaspberry PiでYoutubeLive配信というのが現実的かな?)

    私の発表した内容は以下の3本でした.

    Raspberry PiのUSB OTGを試す // Speaker Deck

    USBを保護するUSBGuard // Speaker Deck

    ゲーミングプラットホームのLutris紹介 // Speaker Deck

    データはこちら.
    matoken / 鹿児島Linux勉強会2017.01 / ソース / — Bitbucket

    Raspberry PiのUSB OTGはさわりだけでちょっとあれでした.次回までにもうちょっと…….

    次回は2月上旬の土日にと思っています.今年は月一ペース開催を目標にと思っています.
    最近は開催場所どうしよう……となって日が過ぎていくパターンなのでとりあえず日程アナウンスはして会場見つからなかったらマクドナルドとかで開催という感じで考えています.

    ]]>
    https://matoken.org/blog/2017/01/26/participated-in-the-kagoshima-linux-study-meeting-2017-01/feed/ 0
    コマンドスニペットを手軽に調べられるコマンドのborg https://matoken.org/blog/2016/12/11/command-border-for-command-snippet-can-be-easily-examined/ https://matoken.org/blog/2016/12/11/command-border-for-command-snippet-can-be-easily-examined/#respond Sun, 11 Dec 2016 14:56:28 +0000 http://matoken.org/blog/?p=1497

    borgはOK borgというsiteのスニペットをコマンドライン上から検索したり編集できるコマンドのようです.borgはgo製でApache License Version 2.0のソフトウェアです.

    導入

    導入方法は如何から対応バイナリを入手して適当な場所に置き,実行権をつけるだけです.arm linuxとか*BSDとか結構いろいろそろっています.

    今回はこんな感じで導入しました.

    $ wget https://github.com/ok-borg/borg/releases/download/v0.0.1/borg_linux_amd64 -O ~/usr/local/bin/borg && chmod +x ~/usr/local/bin/borg

    利用方法

    基本的にコマンドの後ろに調べたいキーワードをつけるだけです.規定値では5つの例が表示されます. bashでloopどう書くんだっけ?

    $ borg "bash loop"
    (1) Bash Shell Do While Loop Infinite loop?
             [11] while [ `prog -some flags` = "Another instance of this program is running, please exit it first" ]
                  -
                  bay=$(prog -some flags)
                  while [ $bay = "Another instance of this program is running, please exit it first" ]
                  do
                  echo "Awaiting Access to program"
                  bay=$(prog -some flags)
                  done
                  .....
             [12] while true
                  do
             ...  
    
    (2) Bash foreach loop
             [21] xargs cat <filenames.txt
                  -
                  for fn in `cat filenames.txt`; do
                      echo "the next file is $fn"
                      cat $fn
                  done
             [22] for fn in `cat filenames.txt`; do cat "$fn"; done
             [23] while read filename
                  do
                      echo "Printing: $filename"
                      cat "$filename"
             ...
    
    (3) Bash loop ping successful
             [31] ((count = 100))                            # Maximum number to try.
                  while [[ $count -ne 0 ]] ; do
                      ping -c 1 8.8.8.8                      # Try once.
                      rc=$?
                      if [[ $rc -eq 0 ]] ; then
                          ((count = 1))                      # If okay, flag to exit loop.
                      fi
                      ((count = count - 1))                  # So we don't go forever.
                  done
                  if [[ $rc -eq 0 ]] ; then                  # Make final determination.
             ...
    
    (4) Limit for bash loop
            [41] for(( i=1; i <= 1000; i++ )); do
                     name=$(date --date="$i day ago" +%Y%m%d%H%M%S)
                     mkdir -p "$name" &&
                     touch "$name/${name}_file" ||
                     break
                 done
    
    (5) Bash 'for' loop syntax?
             [51] for (($i=0...
                  -
                  for ((i=0;i<10;i++))
             [52] for i in `seq 0 9`
                  do
                      echo "the i is $i"
                  done
             [53] for i in {0..9}
                    do
                      echo $i
                    done
             ...

    画像をタイルに結合って?

    $ borg "image tile"
    (1) ImageMagick crop huge image
             [11] $ time convert -crop 512x512 +repage huge.tif x/image_out_%d.tif
                  real    0m5.623s
                  user    0m2.060s
                  sys     0m2.148s
                  $ time vips dzsave huge.tif x --depth 1 --tile-size 512 --overlap 0 --suffix .tif
                  real    0m1.643s
                  user    0m1.668s
                  sys     0m1.000s
             [12]  convert -monitor -limit area 2mb myLargeImg.tif myLargeImg.mpc
                  -
                   #!/bin/bash
             ...
    
    (2) Set clipboard to image - pbcopy
            [21] cat image.png | impbcopy -
            [22] # Copy image to clipboard
                 uuencode SomeFile.jpg - | pbcopy
                 -
                 # Paste from clipboard to image file
                 pbpaste | uudecode -o AnotherFile.jpg
    
    
    (3) Using Amazon MapReduce/Hadoop for Image Processing
             [31] and should be able to be done using Bash
             [32] #!/usr/bin/env bash
                  # NLineInputFormat gives a single line: key is offset, value is Isotropic Url
                  read offset isofile
                  # Retrieve file from Isotropic server to local disk
                  echo "reporter:status:Retrieving $isofile" >&2
                  target=`echo $isofile | awk '{split($0,a,"/");print a[5] a[6]}'`
                  filename=$target.tar.bz2
                  #$HADOOP_INSTALL/bin/hadoop fs -get $isofile ./$filename
                  curl  $isofile -o $filename
             ...
    
    (4) Convert multipage PDF to a single image
            [41] convert in.pdf -append out%d.png
                 -
                 convert *.png output.pdf
                 -
                 convert foo?.png output.pdf
            [42] convert in.pdf +append out%d.png
    
    (5) bash cgi won't return image
            [51] echo -ne "Content-type: image/png\n\n"
                 -
                 echo -e "Content-type: image/png\n"
                 -
                   -n     do not output the trailing newline

    とかとか.

    オプションはこんな感じとりあえず省略されないように-fをつけてページャに渡すと良さそう.

    $ borg --help
    Usage of borg:
    -f  (= false)
        Print full results, ie. no more '...'
    -h (= "borg.crufter.com")
        Server to connect to
    -l  (= 5)
        Result list limit. Defaults to 5
    -p  (= false)
        Private search. Your search won't leave a trace. Pinky promise. Don't use this all the time if you want to see the search result relevancy improved

    検索だけでなくスニペットの追加や編集もできるようです.

    サーバも選べるので自分用のメモを蓄積することもできますね. ちょっと惜しいのはサーバと通信して結果を表示するのでオフラインでは使えないというところ. オフラインで使いたい場合はローカルにサーバを立てるか別の方法を使うしかなさそうです.

    ]]>
    https://matoken.org/blog/2016/12/11/command-border-for-command-snippet-can-be-easily-examined/feed/ 0
    端末をWeb共有できるttyd https://matoken.org/blog/2016/12/09/ttyd-which-can-share-the-terminal-on-the-web/ https://matoken.org/blog/2016/12/09/ttyd-which-can-share-the-terminal-on-the-web/#comments Fri, 09 Dec 2016 10:07:01 +0000 http://matoken.org/blog/?p=1485

    端末をWebブラウザで共有できるソフトウェエアです. 以前似たものでGoTTYを試してみましたが,ttydはGoTTYインスパイアらしいです. ttydはc製でMITライセンスです.

    導入

    今回はDebian stretch amd64(testing)に導入しました. README.mdではUbuntu 16.04での手順が書かれていますがそのまま使えました.

    $ sudo apt install cmake g++ pkg-config git vim-common libwebsockets-dev libjson-c-dev libssl-dev
    $ git clone https://github.com/tsl0922/ttyd.git
    $ cd ttyd
    $ mkdir build
    $ cd build
    $ cmake ..
    $ make

    動かしてみる

    $ ./ttyd -p 8080 bash

    としてウェブブラウザで http://localhost:8080/ に繋ぐと利用できます. tmuxのセッションを共有して複数のブラウザで1つの端末の操作とかdocker利用とかGoTTYと同じように利用できます.

    $ ./ttyd -p 8080 tmux new -A -s ttyd
    [2016/12/09 18:54:25:5954] NOTICE: Initial logging level 7
    [2016/12/09 18:54:25:5954] NOTICE: Libwebsockets version: 2.0.3 unknown-build-hash
    [2016/12/09 18:54:25:5954] NOTICE: IPV6 not compiled in
    [2016/12/09 18:54:25:5954] NOTICE: libev support compiled in but disabled
    [2016/12/09 18:54:25:5954] NOTICE: libuv support compiled in but disabled
    [2016/12/09 18:54:25:5955] NOTICE:  Threads: 1 each 1024 fds
    [2016/12/09 18:54:25:5955] NOTICE:  mem: platform fd map:  8192 bytes
    [2016/12/09 18:54:25:5955] NOTICE:  Compiled with OpenSSL support
    [2016/12/09 18:54:25:5955] NOTICE:  SSL disabled: no LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT
    [2016/12/09 18:54:25:5955] NOTICE: Creating Vhost 'default' port 8080, 2 protocols
    [2016/12/09 18:54:25:5955] NOTICE:  Listening on port 8080
    [2016/12/09 18:54:25:5955] NOTICE:  mem: per-conn:          920 bytes + protocol rx buf
    [2016/12/09 18:54:25:5956] NOTICE:  canonical_hostname = x220
    [2016/12/09 18:54:25:5956] NOTICE: TTY configuration:
    [2016/12/09 18:54:25:5956] NOTICE:   start command: tmux new -A -s ttyd
    [2016/12/09 18:54:25:5956] NOTICE:   reconnect timeout: 10s
    [2016/12/09 18:54:25:5956] NOTICE:   close signal: SIGHUP (1)
    [2016/12/09 18:54:25:6057] NOTICE: lws_protocol_init
    [2016/12/09 18:54:25:9806] NOTICE: HTTP connect from localhost (127.0.0.1), path: /
    [2016/12/09 18:54:25:0015] NOTICE: HTTP connect from localhost (127.0.0.1), path: /auth_token.js
    [2016/12/09 18:54:26:3474] NOTICE: client connected from localhost (127.0.0.1), total: 1
    [2016/12/09 18:54:26:3548] NOTICE: started process, pid: 30365
    [2016/12/09 18:54:34:2928] NOTICE: HTTP connect from localhost (127.0.0.1), path: /
    [2016/12/09 18:54:34:3132] NOTICE: error on reading from skt : 104
    [2016/12/09 18:54:34:3132] NOTICE: sending SIGHUP to process 30365
    [2016/12/09 18:54:34:3138] NOTICE: process exited with code 256, pid: 30365
    [2016/12/09 18:54:34:3138] NOTICE: client disconnected from localhost (127.0.0.1), total: 0
    [2016/12/09 18:54:34:5554] NOTICE: HTTP connect from localhost (127.0.0.1), path: /auth_token.js
    [2016/12/09 18:54:34:5732] NOTICE: client connected from localhost (127.0.0.1), total: 1
    [2016/12/09 18:54:34:5811] NOTICE: started process, pid: 30505
    [2016/12/09 18:54:40:0073] NOTICE: wsi 0x556bcbc34500: TIMEDOUT WAITING on 3 (did hdr 0, ah 0x556bcbbc0c50, wl 0, pfd events 0)
    [2016/12/09 18:54:40:0074] NOTICE: lws_header_table_detach: wsi 0x556bcbc34500: ah held 6s, ah.rxpos 0, ah.rxlen 0, mode/state 0 4,wsi->more_rx_waiting 0

    20161209_18:12:56-1180

    GoTTYについてはこちらを.


    勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る from Kenichiro MATOHARA

    ]]>
    https://matoken.org/blog/2016/12/09/ttyd-which-can-share-the-terminal-on-the-web/feed/ 1
    wgetライクにbittorrentを取得するtget https://matoken.org/blog/2016/12/08/wget-like-bittorrent-client-tget/ https://matoken.org/blog/2016/12/08/wget-like-bittorrent-client-tget/#respond Thu, 08 Dec 2016 08:27:02 +0000 http://matoken.org/blog/?p=1481 wgetコマンドのような使い勝手のBittorrentクライアントのtgetを試してみました. node製MITライセンスのアプリケーションです.

    導入はnpmで.tgetではなくt-getなので注意.

    $ npm install -g t-get

    torrentファイル,マグネットリンクの他torrent URLでもダウンロードできるようです. 実行すると以下のようなプログレスが表示されてダウンロードが始まります.行幅はハードコードされているようです.

    $ tget https://downloads.raspberrypi.org/raspbian_latest.torrent
     downloading 1 files (1.4GB) [============================= ] 97% 64.0s 588.8KB/s 99 peers

    ダウンロード完了時は以下のような感じ.ダウンロード完了後直ちに終了します.

    $ tget https://downloads.raspberrypi.org/raspbian_latest.torrent
    ------------------
    2016-11-25-raspbian-jessie.zip 1.4GB
    ------------------
     downloaded 1 files (1.4GB)

    ファイルの保存先はカレントディレクトリで,カレントディレクトリに書き込めない場合はエラーにならずファイルが消えてしまうようです.

    便利だけどアップロード関係なく終了してしまうのでBittorrentへの貢献度は低そうです. ちなみに最近はリモートのTransmissionをfile serverで動作させて,Transmission-remote-gtkで操作しています.

    ]]>
    https://matoken.org/blog/2016/12/08/wget-like-bittorrent-client-tget/feed/ 0
    Screenfetch的な情報表示コマンドのNeofetch https://matoken.org/blog/2016/12/07/screenfetch-like-information-display-command-neofetch/ https://matoken.org/blog/2016/12/07/screenfetch-like-information-display-command-neofetch/#respond Tue, 06 Dec 2016 21:27:09 +0000 http://matoken.org/blog/?p=1476 Screenfetch的な情報表示コマンドのNeofetch

    よくデスクトップのキャプチャを取得するときに表示されているScreenfetchコマンドというものがあります.システムの情報とアスキーアートを素敵に表示してくれます. これににたものでNetfetchというものを見かけたので試してみました.こちらは画像も扱えるようです.

    導入

    以下のページに各種環境への導入方法が書かれています.

    Debian sid/stretchにはパッケージがあるようなことが書かれていますが,

    Neofetch is in Debian Unstable/Stretch's official repositories.

    今はsidのみのようです.

    ということでひとまずstretchではこんな感じで導入しました.

    $ #-- /etc/apt/sources.list.d/neofetch を作る
    $ sudo apt edit-sources neofetch
    $ cat /etc/apt/sources.list.d/neofetch.list
    deb http://dl.bintray.com/dawidd6/neofetch jessie main
    $ #-- 鍵のインポート
    $ wget "https://bintray.com/user/downloadSubjectPublicKey?username=bintray" -O Release-neofetch.key
    $ gpg Release-neofetch.key
    pub   rsa4096 2015-02-17 [SC]
          8756C4F765C9AC3CB6B85D62379CE192D401AB61
    uid           Bintray (by JFrog) <bintray@bintray.com>
    sub   rsa4096 2015-02-17 [E]
    $ sudo apt-key add Release-neofetch.key
    $ rm Release-neofetch.key
    $ #-- pkg情報更新&pkg導入
    $ sudo apt update
    $ sudo apt install neofetch

    早速実行

    $ neofetch --help
    
        NEOFETCH
    
        USAGE: neofetch --option "value" --option "value"
    
        NOTE: There's also a config option for each flag below.
    
        Info:
        --disable infoname          Allows you to disable an info line from appearing
                                    in the output.
                                    NOTE: You can supply multiple args. eg.
                                    'neofetch --disable cpu gpu disk shell'
                                    NOTE: The arguments must all be lowercase.
        --os_arch on/off            Hide/Show OS architecture.
        --speed_type type           Change the type of cpu speed to display.
                                    Possible values: current, min, max, bios,
                                    scaling_current, scaling_min, scaling_max
                                    NOTE: This only support Linux with cpufreq.
        --cpu_shorthand type        Shorten the output of CPU
                                    Possible values: name, speed, tiny, on, off
        --cpu_cores type            Whether or not to display the number of CPU cores
                                    Takes: logical, physical, off
                                    NOTE: 'physical' doesn't work on BSD.
        --cpu_speed on/off          Hide/Show cpu speed.
        --cpu_temp on/off           Hide/Show cpu temperature.
                                    NOTE: This only works on Linux and BSD.
                                    NOTE: For FreeBSD-based systems, you need to enable coretemp
                                          kernel module.
        --distro_shorthand on/off   Shorten the output of distro (tiny, on, off)
                                    NOTE: This option won't work in Windows (Cygwin)
        --kernel_shorthand on/off   Shorten the output of kernel
                                    NOTE: This option won't work in BSDs (except PacBSD and PC-BSD)
        --uptime_shorthand on/off   Shorten the output of uptime (tiny, on, off)
        --refresh_rate on/off       Whether to display the refresh rate of each monitor
                                    Unsupported on Windows
        --gpu_brand on/off          Enable/Disable GPU brand in output. (AMD/NVIDIA/Intel)
        --gtk_shorthand on/off      Shorten output of gtk theme/icons
        --gtk2 on/off               Enable/Disable gtk2 theme/icons output
        --gtk3 on/off               Enable/Disable gtk3 theme/icons output
        --shell_path on/off         Enable/Disable showing $SHELL path
        --shell_version on/off      Enable/Disable showing $SHELL version
        --ip_host url               Url to query for public IP
        --song_shorthand on/off     Print the Artist/Title on seperate lines
        --birthday_shorthand on/off Shorten the output of birthday
        --birthday_time on/off      Enable/Disable showing the time in birthday output
        --birthday_format format    Format the birthday output. (Uses 'date' cmd format)
    
        Text Formatting:
        --colors x x x x x x        Changes the text colors in this order:
                                    title, @, underline, subtitle, colon, info
        --underline on/off          Enable/Disable the underline.
        --underline_char char       Character to use when underlining title
        --bold on/off               Enable/Disable bold text
    
        Color Blocks:
        --color_blocks on/off       Enable/Disable the color blocks
        --block_width num           Width of color blocks in spaces
        --block_height num          Height of color blocks in lines
        --block_range start end     Range of colors to print as blocks
    
        Bars:
        --bar_char 'elapsed char' 'total char'
                                    Characters to use when drawing bars.
        --bar_border on/off         Whether or not to surround the bar with '[]'
        --bar_length num            Length in spaces to make the bars.
        --bar_colors num num        Colors to make the bar.
                                    Set in this order: elapsed, total
        --cpu_display mode          Bar mode.
                                    Takes: bar, infobar, barinfo, off
        --memory_display mode       Bar mode.
                                    Takes: bar, infobar, barinfo, off
        --battery_display mode      Bar mode.
                                    Takes: bar, infobar, barinfo, off
        --disk_display mode         Bar mode.
                                    Takes: bar, infobar, barinfo, off
    
        Image:
        --image type                Image source. Where and what image we display.
                                    Possible values: wall, ascii,
                                    /path/to/img, /path/to/dir/, off
        --size 00px | --size 00%    How to size the image.
                                    Possible values: auto, 00px, 00%, none
        --crop_mode mode            Which crop mode to use
                                    Takes the values: normal, fit, fill
        --crop_offset value         Change the crop offset for normal mode.
                                    Possible values: northwest, north, northeast,
                                    west, center, east, southwest, south, southeast
    
        --xoffset px                How close the image will be to the left edge of the
                                    window. This only works with w3m.
        --yoffset px                How close the image will be to the top edge of the
                                    window. This only works with w3m.
        --bg_color color            Background color to display behind transparent image.
                                    This only works with w3m.
        --gap num                   Gap between image and text.
                                    NOTE: --gap can take a negative value which will
                                    move the text closer to the left side.
        --clean                     Delete cached files and thumbnails.
    
        Ascii:
        --ascii value               Where to get the ascii from, Possible values:
                                    distro, /path/to/ascii
        --ascii_colors x x x x x x  Colors to print the ascii art
        --ascii_distro distro       Which Distro's ascii art to print
                                    NOTE: Arch and Ubuntu have 'old' logo varients.
                                    NOTE: Use 'arch_old' or 'ubuntu_old' to use the old logos.
                                    NOTE: Ubuntu has flavor varients.
                                    NOTE: Change this to 'Lubuntu', 'Xubuntu', 'Ubuntu-GNOME'
                                    or 'Ubuntu-Budgie' to use the flavors.
        --ascii_logo_size           Size of ascii logo.
                                    Supported distros: Arch, Gentoo, Crux, OpenBSD.
        --ascii_bold on/off         Whether or not to bold the ascii logo.
        --logo | -L                 Hide the info text and only show the ascii logo.
    
        Screenshot:
        --scrot | -s /path/to/img   Take a screenshot, if path is left empty the screen-
                                    shot function will use $scrot_dir and $scrot_name.
        --upload | -su /pth/t/img   Same as --scrot but uploads the scrot to a website.
        --image_host                Website to upload scrots to. Takes: imgur, teknik
        --scrot_cmd cmd             Screenshot program to launch
    
        Other:
        --config /path/to/config    Specify a path to a custom config file
        --config none               Launch the script without a config file
        --help                      Print this text and exit
        --version                   Show neofetch version
        -v                          Display error messages.
        -vv                         Display a verbose log for error reporting.

    オプション結構多いです. とりあえず素で実行.

    20161207_05:12:12-5188

    情報もScreenfetchより増えています.

    20161207_05:12:20-9093

    次は画像を指定してみます.画像サイズが大きかったので25%に縮小もしています. 楽しい :)

    20161207_05:12:35-3963

    20161207_06:12:30-16979

    画像の表示については環境によってうまく行く行かないがあるようです.うまく表示されない場合は以下のWikiを参照すると良さそうです.

    ]]>
    https://matoken.org/blog/2016/12/07/screenfetch-like-information-display-command-neofetch/feed/ 0
    コマンドラインで動作する絵文字検索ソフトウェアのemoj https://matoken.org/blog/2016/12/06/emoj-pictogram-search-software-that-runs-on-the-command-line/ https://matoken.org/blog/2016/12/06/emoj-pictogram-search-software-that-runs-on-the-command-line/#respond Mon, 05 Dec 2016 21:44:13 +0000 http://matoken.org/blog/?p=1474 PCで絵文字を入力するとき日本語入力システムがあればそれで入力できますが,英語圏では恐らく無理.てことでいくつかツールがあるのですが,コマンドラインで動作するemojを見つけたので試してみました.

    導入はnpmか,

    npm install emoj

    snapで.

    $ sudo snap install emoj

    後はemojコマンドに引数を与えるか,emojコマンドを引数無しで実行してライブモードで利用します. 引数やライブモードで入力する文字列は表示したい絵文字に関連する単語を入力します.ライブモードはEnterでクリアされ,Ctrl + cでexitできます.表示された絵文字をコピー&ペーストして利用するようです.1つ目に出てくる絵文字をクリップボードにクリップする--copy/-cというオプションもあるようですが手元ではうまく動いていません.

    $ emoj neko
    🐱  👥  ↪  😻  ↔  🐈
    $ emoj cat
    🐱  🐈  😺  😻  😸  😼  😽
    $ emoj
    
    › sushi
    🍣  🍱  🍙  🍤  😋  🍚  😍
    

    asciicast

    絵文字のフォントがない場合はNoto Fontsを利用するのが手っ取り早いと思います.

    日本語入力システムを使う人やGUIを利用する人は日本語入力システムやemojione-pickerを使ったほうが便利かもしれません.

    ]]>
    https://matoken.org/blog/2016/12/06/emoj-pictogram-search-software-that-runs-on-the-command-line/feed/ 0
    BluemanだけでNetworkManagerを使わずBluetooth tetheringを使う https://matoken.org/blog/2016/12/04/with-blueman-alone-use-bluetooth-tethering-without-using-networkmanager/ https://matoken.org/blog/2016/12/04/with-blueman-alone-use-bluetooth-tethering-without-using-networkmanager/#respond Sun, 04 Dec 2016 14:33:26 +0000 http://matoken.org/blog/?p=1471 最近の自転車移動で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…….体積は結構減ってるけど案外軽くなってませんね.キーボードが案外重いです.使い勝手も大分落ちるし微妙?

    ]]>
    https://matoken.org/blog/2016/12/04/with-blueman-alone-use-bluetooth-tethering-without-using-networkmanager/feed/ 0
    マルチプラットホーム&スライドに特化したMarkdown WriterのMarpを試す https://matoken.org/blog/2016/12/03/markdown-writer-marp-specialized-for-multi-platform-slide-2/ https://matoken.org/blog/2016/12/03/markdown-writer-marp-specialized-for-multi-platform-slide-2/#respond Fri, 02 Dec 2016 17:55:22 +0000 http://matoken.org/blog/?p=1466

    最近勉強会の発表資料はスライドにせずにMarkdownやAsciidocで書いてhtmlやpdfに書き出してました.これをSlideshareとかに置いているのですが,スライド形式に比べてアクセスが1桁少ないです. Markdownでスライドにする方法はいろいろあるのですが,1ページの分量がまちまちになってはみ出したりと言ったことをよくやってしまいあまりつかっていませんでした.

    そんなところにプレゼンテーション向けのMarkdown Writerがあったので試してみました.

    マルチプラットホームでElectron製です.PDFファイルへの書き出しも可能です.

    雰囲気は以下の画像でだいたいわかるんじゃないかと思います.

    https://yhatt.github.io/marp/images/marp-cast.gif

    https://yhatt.github.io/marp/images/marp-cast.gif

    左ペインでMarkdownを書いて右ページにプレビューが表示されます. プレビューは3種類選べますが,"1:1 slide/Slide List"のどちらかだとスライド形式でプレビューが表示されるのでレイアウトを確認しながら書くことができます.

    試しにちょっと書いてみました. するとMarpのプレビュー,Evinceでは問題なかったのですが,SlideshareにPDFをアップロードすると背景画像やフッターが上下反転しています……. 試しにSpekerdeckにもアップロードしてみましたがこちらは問題なし. 恐らくSlideshareの問題ではないかと思います.

    Electron製ということで降るmのマシンでは重いかなと思っていたのですが,Core2Duoのマシンでも試してみましたが一気にスクロールとかしなければ重く感じるところはなく実用範囲内に感じました.

    ]]>
    https://matoken.org/blog/2016/12/03/markdown-writer-marp-specialized-for-multi-platform-slide-2/feed/ 0
    マルチプラットホーム&スライドに特化したMarkdown WriterのMarpを試す https://matoken.org/blog/2016/12/03/markdown-writer-marp-specialized-for-multi-platform-slide/ https://matoken.org/blog/2016/12/03/markdown-writer-marp-specialized-for-multi-platform-slide/#respond Fri, 02 Dec 2016 17:55:22 +0000 http://matoken.org/blog/?p=1466

    最近勉強会の発表資料はスライドにせずにMarkdownやAsciidocで書いてhtmlやpdfに書き出してました.これをSlideshareとかに置いているのですが,スライド形式に比べてアクセスが1桁少ないです. Markdownでスライドにする方法はいろいろあるのですが,1ページの分量がまちまちになってはみ出したりと言ったことをよくやってしまいあまりつかっていませんでした.

    そんなところにプレゼンテーション向けのMarkdown Writerがあったので試してみました.

    マルチプラットホームでElectron製です.PDFファイルへの書き出しも可能です.

    雰囲気は以下の画像でだいたいわかるんじゃないかと思います.

    https://yhatt.github.io/marp/images/marp-cast.gif

    https://yhatt.github.io/marp/images/marp-cast.gif

    左ペインでMarkdownを書いて右ページにプレビューが表示されます. プレビューは3種類選べますが,"1:1 slide/Slide List"のどちらかだとスライド形式でプレビューが表示されるのでレイアウトを確認しながら書くことができます.

    試しにちょっと書いてみました. するとMarpのプレビュー,Evinceでは問題なかったのですが,SlideshareにPDFをアップロードすると背景画像やフッターが上下反転しています……. 試しにSpekerdeckにもアップロードしてみましたがこちらは問題なし. 恐らくSlideshareの問題ではないかと思います.

    Electron製ということで降るmのマシンでは重いかなと思っていたのですが,Core2Duoのマシンでも試してみましたが一気にスクロールとかしなければ重く感じるところはなく実用範囲内に感じました.

    ]]>
    https://matoken.org/blog/2016/12/03/markdown-writer-marp-specialized-for-multi-platform-slide/feed/ 0
    Mumbleでリモート会議 https://matoken.org/blog/2016/12/03/remote-conference-with-mumble/ https://matoken.org/blog/2016/12/03/remote-conference-with-mumble/#respond Fri, 02 Dec 2016 16:53:14 +0000 http://matoken.org/blog/?p=1461

    先週ですが,FSIJ 月例会に参加していました. といっても東京に出て行ったわけではなくネットワーク開催だったので家からの参加です.

    ということでMumbleというソフトウェアで音声チャット + Etherpad(ウェブブラウザベース)でテキスト交換という環境でした. Mumbleを前もって試していればよかったのだけど直前に入れてなかなか参加できず途中からの参加になりましたorz~

    MumbleはDebian stretch amd64環境ではパッケージが存在する( mumble )のでこれを導入するだけでした.マルチプラットホームで各種環境向けにも存在して,Androidなどでも利用できるようです. – Mumble, the open source VoIP solutionPlumble – Mumble VOIP (Free) – Google Play の Android アプリPlumble – Mumble VOIP – Google Play の Android アプリ

    今回使用機器は以下のような感じ.でしたが,スピーカーは試行錯誤している時に繋いだもので後で試すと本体のスピーカーで大丈夫でした.

    • PC : Thinkpad X220(Debian stretch amd64)
    • マイク : 3.5mmジャックに直接挿せるもの(型番不明)
    • スピーカー : ELECOM LBT-SPTR01AV(Bluetooth)

    このときMumble利用時に嵌ったところをメモしておきます. – ヘッドホンとマイクが1つの端子の端末でマイクを繋ぐとヘッドホンもそちらを向いてしまって音が出なかった – Bluetothヘッドセットを繋ぐとそちらから音が出るようになったがマイクがうまく働かない – PulseAudio Volume Control (pavucontrol)で見るとマイクがミュートになっていたので解除してMumbleに割り当て – 伝送方式を"push to talk"にしたがpushがわからなかった -> ショートカットで適当なキーに割り当て(Mumble非アクティブ時も有効)

    • その他
      • Awesome WM環境ではMumbleが最小化してしまうと窓を復帰させる方法が今のところわからない.タスクトレイのアイコンをクリックしても出てこない.(Xfce4はアイコンクリックで出てくるよう)
      • 一回設定できればフォーカスがなくてもショートカットが効いて話せるのでとりあえず使えるけどチャットと誰が話しているかのアイコンの確認(唇アイコンが赤くなる)が出来ない(オーバーレイの設定でどうにかなりそう?)
      • アイコンを右クリックしてそのまま離すと丁度終了になってしまう…….
      • Mumbleの音声品質は16kbps/40kbps/72kbpsから選択可能(規定値は40k)
      • push to talkを使うとその時しか音声が飛ばないので周りの環境に左右されにくくて良い(キー入力の音や環境音が入りにくい)

    最近はUstream.tv/Youtube Liveなどの動画配信やBBB(BigBlueButton)などの動画を使ったオンライン会議システムなどで中継ということが多いですが,手弁当の勉強会なんかだと回線などの問題でうまく行かなかったりすることが多いですが割り切って音声のみの中継にしてしまうのもありだなと感じました.

    最近リモート参加した勉強会

    ]]>
    https://matoken.org/blog/2016/12/03/remote-conference-with-mumble/feed/ 0