$ cat /proc/cpuinfo | sed -e 's/Serial.*/Serial\t\t: 00000000deadbeef/' > /tmp/cpuinfo_fake $ sudo chmod 444 /tmp/cpuinfo $ sudo chown root.root /tmp/cpuinfo $ sudo mount -o bind /tmp/cpuinfo_fake /proc/cpuinfo $ tail /proc/cpuinfo Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc07 CPU revision : 5 Hardware : BCM2835 Revision : a01041 Serial : 00000000deadbeef
カテゴリー: Linux
Podcastが無くなって困る
現在Podcastをpodget
で取得して,
2 * * * * podget -s
その中の新しいものだけをownCloudにコピーしてAndroidやPCで視聴しています.
10 * * * * cd ~mk/POD ; find . -mmin -2880 -type f | egrep -v 'm3u$|LOG\/' | rsync --delete --progress --files-from=- ~mk/POD/ /var/www/owncloud/data/matoken/files/podcast/; find /var/www/owncloud/data/matoken/files/podcast/ -ctime +7 -type f -print0 | xargs -0 rm ; find /var/www/owncloud/data/matoken/files/podcast/news/ -mmin +1`
今日聞こうとしたらownCloud内のPodcastが0個になっていました.心当たりはUbuntu 14.04 LTSからUbuntu 16.04 LTSへのdist-upgrade.ownCloudは上げる前と後に動作確認してたんで他の部分が怪しいとログを見るとpodget
がエラーを吐いています.こんな感じ.
$ podget -s /home/mk/.podget/podgetrc cannot be verified to be compatible with this version of podget. It is missing the version line that is included in configuration files created by newer versions of podget. Please create a new configuration file by running 'podget --create-config <FILENAME>', and then converting your old configuration to the new format. Then move the new file in place of the old and podget will work as it used to.
設定ファイルが使えなくなってるみたいですね.枯れてるのかと思ってたら結構変化があったようです.
ちなみに更新前のバージョンがpodget 0.6.9-1
で現在はpodget 0.7.9-1
でした.
てことで,設定ファイルの雛形を別の場所に書き出して,
$ podget --create-config /tmp/podgetrc podget Configuration filename specified by -c or --create-config violates the following rules... Suggestion(s): 1. Filenames should not include any directory configuration. Remove the directory configuration. If you need to specify a directory other than the default, use the -d or --dir_config command line options. Closing session.
…….--dir_config
付けて再度.
$ podget --dir_config /tmp --create-config podgetrc podget Installing default user configuration file in /tmp/podgetrc Installing default server list configuration. Closing session.
https://gist.github.com/1b5fba2e949409a87e1955e0c779b057
diffを取ってみると設定項目自体はそう変わってない感じですが,設定値が大文字小文字が変わったりしています.
比較しながら書き換えて叩くと動き始めたようです.
$ podget podget Session directory not found, creating Session file not found. Creating podget.18364 . ------------------------------------------------- Category: tech Name: 電脳空間カウボーイズ Downloading feed index from http://feeds.feedburner.com/weblogs/csc 2017-04-06 06:13:13 URL:http://feeds.feedburner.com/weblogs/csc [46549] -> "-" [1] Downloading csc_2017_design2.mp3 from http://onosendai.jp/csc 2017-04-06 06:20:43 URL:http://onosendai.jp/csc/csc_2017_design2.mp3 [51781411/51781411] -> "/home/mk/POD/tech/電脳空間カウボーイズ/csc_2017_design2.mp3" [1] PLAYLIST: Adding tech/電脳空間カウボーイズ/csc_2017_design2.mp3 to /home/mk/POD/New-2017-04-06.m3u Downloading csc_2017_design1.mp3 from http://onosendai.jp/csc 2017-04-06 06:25:04 URL:http://onosendai.jp/csc/csc_2017_design1.mp3 [37304885/37304885] -> "/home/mk/POD/tech/電脳空間カウボーイズ/csc_2017_design1.mp3" [1] PLAYLIST: Adding tech/電脳空間カウボーイズ/csc_2017_design1.mp3 to /home/mk/POD/New-2017-04-06.m3u :
しかし,ダウンロード済みのファイルも取得しているような?
新規のみの設定にしているつもりなんですが,初回は舐めちゃうのかな?2度目のときに確認してみます.
# Force # 0 == Only download new material. # 1 == Force download all items even those you've downloaded before. FORCE=0
とりあえず終わるまではsoundcloud辺りで聞いてます.
その後2回目はちゃんと期待通りの動作するのを確認したのでcrontabに登録し直しました.
etckeeperのmanに載っているREADMEを読もうと思ったら無い
Debian sid amd64のetckeeper
のmanに載っているREADMEを読もうと思ったらそんなファイルは無い.
$ man etckeeper | grep -B1 README SEE ALSO /usr/share/doc/etckeeper/README.md.gz $ lv /usr/share/doc/etckeeper/README.md.gz /usr/share/doc/etckeeper/README.md.gz: No such file or directory $ ls -lA /usr/share/doc/etckeeper/ 合計 40 -rw-r--r-- 1 root root 4679 7月 18 2016 README.mdwn.gz -rw-r--r-- 1 root root 11645 8月 2 2016 changelog.Debian.gz -rw-r--r-- 1 root root 1785 7月 18 2016 copyright -rw-r--r-- 1 root root 948 7月 18 2016 index.mdwn -rw-r--r-- 1 root root 483 7月 18 2016 install.mdwn -rw-r--r-- 1 root root 55 7月 18 2016 news.mdwn -rw-r--r-- 1 root root 309 7月 18 2016 todo.mdwn $ dpkg -L etckeeper | grep README /etc/etckeeper/commit.d/README /etc/etckeeper/init.d/README /etc/etckeeper/post-install.d/README /etc/etckeeper/pre-commit.d/README /etc/etckeeper/pre-install.d/README /etc/etckeeper/unclean.d/README /etc/etckeeper/uninit.d/README /etc/etckeeper/update-ignore.d/README /usr/share/doc/etckeeper/README.mdwn.gz $ dpkg-query -W etckeeper etckeeper 1.18.5-1
/usr/share/doc/etckeeper/README.mdwn.gz
が内容からしてそれぽい.
バグぽいので報告しようかと思って既存のバグを眺めると既に報告されて上流で修正済みのようでした.
バックライト制御コマンドのybacklight
awesome wmでバックライトの制御にxbacklight
コマンドを使っていたのですが,手元のDebian sid amd64環境ではNo outputs have backlight property
というエラーで現在利用できなくなっています.
$ xbacklight -get No outputs have backlight property $ xbacklight = 100 No outputs have backlight property $ xbacklight + 10 No outputs have backlight property $ xbacklight - 10 No outputs have backlight property
workaroundとしてこんな感じで手で叩いていてちょっとあれです.持ち出さないPCなのであまり操作しないのでどうにかなってるけど不便です.
$ sudo sh -c "echo 1000 > /sys/class/backlight/intel_backlight/brightness"
しかし,gdm3のログイン画面ではFn+Home/Fm+End
でバックライトの変更が出来ることに気づきました.
なんか進展あったのかな?とバグレポを眺めているとそれらしいものは見つからないけれど,
- #833508 – xbacklight reports “No outputs have backlight property” – Debian Bug report logs
- 96572 – xbacklight doesn’t work with modesetting on intel
ybacklight
というものが紹介されているのに気づきました.
利用方法はxbacklight
と同じです.
$ ybacklight -h Usage: /home/mk/bin/ybacklight [options] Options: -d <driver> or -driver <driver>: Use driver <driver> (NB: -display is also supported for compatibility) -help: Print this help -set <percentage> or = <percentage>: Set backlight to <percentage> -inc <percentage> or + <percentage>: Increase backlight by <percentage> -dec <percentage> or - <percentage>: Decrease backlight by <percentage> -get: Get backlight percentage -time <ignored> or -steps <ignored>: Unsupported, ignored -v: Verbose output
読むのはいけますが,変更は出来ません.
$ ybacklight -get 30 $ ybacklight +10 Permissions conflict. Can't write to: ( /sys/class/backlight/intel_backlight/brightness )
/sys/class/backlight/intel_backlight/brightness
に書き込み権をつけると行けます.
$ ls -l /sys/class/backlight/intel_backlight/brightness -rw-r--r-- 1 root root 4096 4月 5 06:48 /sys/class/backlight/intel_backlight/brightness $ sudo chmod o+w /sys/class/backlight/intel_backlight/brightness $ ls -l /sys/class/backlight/intel_backlight/brightness -rw-r--rw- 1 root root 4096 4月 5 06:48 /sys/class/backlight/intel_backlight/brightness $ ybacklight +10 40 $ ybacklight -10 30
ちょっと微妙.
gdm3でユーザーリストの非表示が無効になっていたのを調べる
Debian sid amd64のgdm3の画面でユーザーリストを表示しないようにしていたのですが,表示されるようになっていました.
これまでは,
/etc/gdm3/greeter.dconf
ファイルの以下の設定を有効にしていました.
disable-user-list=true
$ apt-get changelog gdm3
( /usr/share/doc/gdm3/changelog.Debian.gz)を見るとこんな記述が,
* greeter.dconf-defaults: this is a new file to remove the old greeter.gsettings * Convert greeter.gsettings to greeter.dconf-defaults at postinst time and use ucf to update the file. * Make a direct symlink to the new greeter.dconf-defaults file in the dconf defaults directory.
gdm3 (3.12.1-1)からgreeter.dconf-defaults
に変わったようです.
$ ls /etc/gdm3/ Init PostLogin PostSession PreSession Xsession daemon.conf daemon.conf.dpkg-dist greeter.dconf greeter.dconf-defaults greeter.dconf-defaults.ucf-old
内容はほとんど同じなようです.
$ diff /etc/gdm3/greeter.dconf /etc/gdm3/greeter.dconf-defaults 26,27d25 < #logo='/usr/share/icons/gnome/48x48/places/debian-swirl.png' < #fallback-logo='/usr/share/icons/gnome/48x48/places/debian-swirl.png' 31d28 < 33c30 < disable-user-list=true --- > # disable-user-list=true 37,38c34,35 < #banner-message-enable=true < #banner-message-text='Welcome!!!!!!!!!!!!!!!!!!!!!!' --- > # banner-message-enable=true > # banner-message-text='Welcome'
ということで/etc/gdm3/greeter.dconf-defaults
のdisable-user-list=true
を有効にしたらOKでした.
diff --git a/gdm3/greeter.dconf-defaults b/gdm3/greeter.dconf-defaults index c5b0786..b0ee10c 100644 --- a/gdm3/greeter.dconf-defaults +++ b/gdm3/greeter.dconf-defaults @@ -27,7 +27,7 @@ logo='/usr/share/icons/hicolor/48x48/emblems/emblem-debian-white.png' fallback-logo='/usr/share/icons/hicolor/48x48/emblems/emblem-debian-white.png' # - Disable user list -# disable-user-list=true +disable-user-list=true # - Disable restart buttons # disable-restart-buttons=true # - Show a login welcome message
#ちなみにこのとき$ sudo service gdm3 restart
としたらなんかおかしくなってしまいました…….OSごと再起動したら治りました.
gdm3でdisable-user-list=trueが効かない
greeter.dconfからgreeter.dconf-defaultsに変わってる?defaults側でdisable-user-list=trueにしてgdm3上げ直したら酷いことに
遠隔から修正したorz pic.twitter.com/TIPmlC6cWY— 鹿児島Linux勉強会04/08 (@matoken) 2017年4月4日
次から気づきやすいように
$ sudo dpkg-reconfigure apt-listchanges
で「APTで表示すべき変更内容の種類を選択してください。」を「両方 – ニュースと changelog の両方」にしておきました.testing/unstable辺りはちゃんと読まないとですね…….
※apt-listchangesが入っていない場合は$ sudo apt install apt-listchanges
ext4の暗号化fsを試してみる
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
DebianのisoイメージをUSBメモリに書き込み
gistに貼ってたものだけどせっかくなのでこちらにも.
ファイルダウンロード
今回はDebian stretch Debian Installer rc2のi386版のnetinst.
- debian-stretch-DI-rc2-i386-netinst.iso : イメージ本体
- SHA512SUMS : isoファイルのチェックサムファイル
- SHA512SUMS.sign : SHA512SUMSの署名ファイル
$ wget http://cdimage.debian.org/cdimage/stretch_di_rc2/i386/iso-cd/debian-stretch-DI-rc2-i386-netinst.iso http://cdimage.debian.org/cdimage/stretch_di_rc2/i386/iso-cd/SHA512SUMS.sign http://cdimage.debian.org/cdimage/stretch_di_rc2/i386/iso-cd/SHA512SUMS
※i386/amd64をよく使う場合は
multi-arch
を使うと1つのUSBメモリでi386/amd64が利用できて便利
チェックサムファイルの署名確認
チェックサムファイルのSHA512SUMSが正常なものか確認
$ gpg --verify SHA512SUMS.sign gpg: 署名されたデータが'SHA512SUMS'にあると想定します gpg: 2017年02月02日 07時45分30秒 JSTに施された署名 gpg: RSA鍵DA87E80D6294BE9Bを使用 gpg: "Debian CD signing key <debian-cd@lists.debian.org>"からの正しい署名 [不明の] gpg: *警告*: この鍵は信用できる署名で証明されていません! gpg: この署名が所有者のものかどうかの検証手段がありません。 主鍵フィンガープリント: DF9B 9C49 EAA9 2984 3258 9D76 DA87 E80D 6294 BE9B
※公開鍵が見つかりません(public key not found)
というエラーの場合はgpg --keyserver keyring.debian.org --recv-keys DA87E80D6294BE9B
で鍵をインポートして再度確認.鍵のIDやフィンガープリントは以下のページでも確認できる
ハッシュ確認
isoファイルが正しくダウンロードされているか確認
以下の例はdebian-stretch-DI-rc2-i386-netinst.iso
しかダウンロードしていないのでそれ以外のエラーや警告は無視する
$ sha512sum -c SHA512SUMS sha512sum: debian-mac-stretch-DI-rc2-i386-netinst.iso: そのようなファイルやディレクトリはありません debian-mac-stretch-DI-rc2-i386-netinst.iso: FAILED open or read debian-stretch-DI-rc2-i386-netinst.iso: 完了 sha512sum: debian-stretch-DI-rc2-i386-xfce-CD-1.iso: そのようなファイルやディレクトリはありません debian-stretch-DI-rc2-i386-xfce-CD-1.iso: FAILED open or read sha512sum: 警告: 一覧にある 2 個のファイルが読み込めませんでした
usbメモリへの書き込み
USBメモリの確認
書き込み先のデバイスが正しいか確認する
USBメモリ接続直後にdmesgを確認したりfdiskコマンドやマウントして中を確認したり……
$ dmesg : [414356.444121] usb 1-1.2: New USB device found, idVendor=13fe, idProduct=1a00 [414356.444128] usb 1-1.2: New USB device strings: Mfr=0, Product=11, SerialNumber=0 [414356.444131] usb 1-1.2: Product: USB 2.0 HUB [414362.925178] usb-storage 1-1.2.1:1.0: USB Mass Storage device detected [414362.925967] scsi host6: usb-storage 1-1.2.1:1.0 [414364.184209] sd 6:0:0:1: [sdb] 980480 512-byte logical blocks: (502 MB/479 MiB) [414364.187102] sd 6:0:0:1: [sdb] Write Protect is off [414364.187106] sd 6:0:0:1: [sdb] Mode Sense: 23 00 00 00 [414364.190339] sd 6:0:0:1: [sdb] No Caching mode page found [414364.190345] sd 6:0:0:1: [sdb] Assuming drive cache: write through [414364.201730] sdb: sdb1 [414364.201734] sdb: p1 size 982496 extends beyond EOD, enabling native capacity [414364.214471] sdb: sdb1 [414364.214475] sdb: p1 size 982496 extends beyond EOD, truncated [414364.228961] sd 6:0:0:1: [sdb] Attached SCSI removable disk $ sudo fdisk -l /dev/sdb Disk /dev/sdb: 478.8 MiB, 502005760 bytes, 980480 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x00000000 Device Boot Start End Sectors Size Id Type /dev/sdb1 * 32 982527 982496 479.8M 6 FAT16
USBメモリのアンマウント
USBメモリをマウントしている場合はアンマウントしておく
$ sudo umount /dev/sdb1
$ mount | grep /dev/sdb
パーテイション情報の削除
念の為パーテイション情報を削除しておく
$ sudo wipefs /dev/sdb offset type ---------------------------------------------------------------- 0x1fe dos [partition table] $ sudo wipefs -a /dev/sdb ; sync /dev/sdb: 2 bytes were erased at offset 0x000001fe (dos): 55 aa /dev/sdb: calling ioctl to re-read partition table: 成功です
書き込み
進捗状態を確認したい場合はpvコマンドを間に挟んだり,ddrescue / ddrescueなどが利用できる
$ sudo dd if=./debian-stretch-DI-rc2-i386-netinst.iso of=/dev/sdb bs=4M ; sync 95+1 レコード入力 95+1 レコード出力 401604608 bytes (402 MB, 383 MiB) copied, 176.874 s, 2.3 MB/s
書き込みが終わったらUSBメモリを取り外してターゲットマシンで利用する
VirtualBoxで起動確認(余録)
手軽に試せるマシンがなかったのでVirtualBoxからUSBメモリを起動して確認した
USBメモリのディスクイメージ作成
直にUSBメモリを指定できないのでUSBメモリへアクセスするためのvmdkイメージを作成
$ sudo VBoxManage internalcommands createrawvmdk -rawdisk /dev/sdb -filename sdb.vmdk RAW host disk access VMDK file sdb.vmdk created successfully. $ sudo cat sdb.vmdk # Disk DescriptorFile version=1 CID=1722e641 parentCID=ffffffff createType="fullDevice" # Extent description RW 980480 FLAT "/dev/sdb" 0 # The disk Data Base #DDB ddb.virtualHWVersion = "4" ddb.adapterType="ide" ddb.geometry.cylinders="972" ddb.geometry.heads="16" ddb.geometry.sectors="63" ddb.uuid.image="c2c9d560-049f-4c44-bf8a-0b85e820ba12" ddb.uuid.parent="00000000-0000-0000-0000-000000000000" ddb.uuid.modification="00000000-0000-0000-0000-000000000000" ddb.uuid.parentmodification="00000000-0000-0000-0000-000000000000"
USBメモリにアクセス権のあるユーザでVirtualBoxを起動してUSBメモリのイメージを指定して起動
(ここいまいち……)
$ gksudo virtualbox
mosh 1.3.0をDropbear sshdで利用してみる
moshの1.3.0がリリースされました.
moshはsshを置き換えようとしているソフトウェアで,ネットワークが遅いときにローカルエコーを表示したり,ネットワークが切り替わってもローミングしたりと便利なソフトウェアです.(NotePCで接続してサスペンドして別のネットワークでレジュームしてもすぐに使っていた端末にアクセスできる)
1.3.0でなにかおもしろい機能が増えたりしていないかなと眺めていると
* Add --no-ssh-pty option for Dropbear compatibility and other issues.
Dropbearで使えるようになるオプションが増えているようです.
DropbearはOpenSSHに比べて大分小さなsshdです.組み込みとかで使われているのを見ます.でも機能が物足りないなと思うことも.
mosh + Dropbearの組み合わせを試してみました.
試したのはこんな感じの環境です.
Host : Raspbian jessie(Raspberry Pi 2B)
Client : Debian sid amd64
dropbearの準備
HostにDropbearをパッケージで導入します
$ sudo apt install dropbear
dropbearのhost鍵を用意
$ mkdir /tmp/dropbear
$ dropbearkey -t ecdsa -s 521 -f /tmp/dropbear/dropbear_ecdsa_host_key
- -t 鍵種類
- -s 鍵長
- -f 鍵ファイル
接続時に解りやすいようにバナーファイル作成
$ banner dropbear > /tmp/dropbear/banner
Dropbearを2222番ポートで起動
$ dropbear -r /tmp/dropbear/dropbear_ecdsa_host_key -p 2222 -b /tmp/dropbear/banner -E
- -r host鍵を指定
- -p sshポート番号
- -b バナーファイル
- -E 標準エラー出力にメッセージ出力
Dropbearにssh接続できるか確認
$ ssh pi@192.168.2.200 -i ~/.ssh/id_ecdsa -p 2222 Host key fingerprint is SHA256:G3u9pP4ZrkZ2kWs9e+ly9MkEtnO0f4ebvkBS0ObGJQQ +---[ECDSA 521]---+ | E+. | | .+ . | | +.+ | | .*o . | | S ..o++ .| | +o++oo= | | oo.o= *+=| | ..+ *o**| | o+o=.O=o| +----[SHA256]-----+ ##### ##### #### ##### ##### ###### ## ##### # # # # # # # # # # # # # # # # # # # # # # # ##### ##### # # # # # # ##### # # ##### # # # ###### ##### # # # # # # # # # # # # # # ##### # # #### # ##### ###### # # # # Authenticated to 192.168.2.200 ([192.168.2.200]:2222). The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. pi@raspberrypi:~ $
mosh 1.3.0の準備
server側はsourceからbuild
$ sudo apt-get build-dep mosh $ wget https://mosh.org/mosh-1.3.0.tar.gz $ sha256sum mosh-1.3.0.tar.gz 320e12f461e55d71566597976bd9440ba6c5265fa68fbf614c6f1c8401f93376 mosh-1.3.0.tar.gz
※hashとgpg署名は以下のメールに,鍵は https://mosh.org/ の一番下にある.
sourceを展開してbuild
$ tar tvf mosh-1.3.0.tar.gz $ tar xf mosh-1.3.0.tar.gz $ ./configure --prefix=${HOME}/usr/local $ make $ install
host側はDebian sid amd64のパッケージを利用した
$ sudo apt install mosh
$ dpkg-query -W mosh
mosh 1.3.0-1
ということでホスト側はこんな状態に
- OpenSSH : 22番ポート
- Dropbear : 2222番ポート
- mosh 1.2.4a-1+b2(pkg) : /usr/bin/mosh-server
- mosh 1.3.0 : ${HOME}/usr/local/bin/mosh-server
この状態でDropbearとmosh 1.3.0を利用するにはこんな感じ
$ mosh pi@192.168.2.200 --ssh="ssh -p 2222" --server='${HOME}'/usr/local/bin/mosh-server
でも実際に繋ごうとするとエラーになってしまう.
接続元のmoshではこんなエラー
/usr/bin/mosh: Did not find mosh server startup message. (Have you installed mosh on your server?)
接続先のDropbearではこんなエラー
[20390] Mar 28 06:37:20 Child connection from 192.168.2.205:32888 [20390] Mar 28 06:37:21 Pubkey auth attempt with unknown algo for 'pi' from 192.168.2.205:32888 [20390] Mar 28 06:37:21 Pubkey auth succeeded for 'pi' with key md5 0b:fb:21:45:d6:a0:7d:57:02:24:9b:d3:ed:c7:c6:23 from 192.168.2.205:32888 [20391] Mar 28 06:37:21 ioctl(TIOCSCTTY): Input/output error [20391] Mar 28 06:37:21 /dev/pts/1: No such file or directory [20391] Mar 28 06:37:21 open /dev/tty failed - could not set controlling tty: No such device or address [20390] Mar 28 06:37:21 Exit (pi): Disconnect received
ということで,mosh 1.3.0で入った--no-ssh-pty
を付けてみます.
$ mosh pi@192.168.2.200 --ssh="ssh -p 2222" --server='${HOME}'/usr/local/bin/mosh-server --no-ssh-pty
うまく繋がりました.
試しに回線を切断して再接続すると自動的に繋がるのも確認 ☺
--no-ssh-pty
を~/.ssh/configとかに書いとけるといいんですけどね.今のところ毎回指定するしかなさそう?
Joypadで簡易操作を試みる
LinuxBoxで文章を読むのにJoypadで操作できないかなと思ってちょっと試してみました.
はじめはxev
コマンドでJoypadのKeyCodeを調べてxmodmad
コマンドで書き換えればいいだろうと思っていたのですが,xev
コマンドでJoypadは反応しないようでした.他に方法はないかと検索するとjoy2key
というものを見つけたのでこれを試してみました.
$ apt show joy2key Package: joy2key Version: 1.6.3-2 Priority: optional Section: x11 Maintainer: Debian QA Group <packages@qa.debian.org> Installed-Size: 52.2 kB Depends: libc6 (>= 2.15), libx11-6 Homepage: http://joy2key.sourceforge.net Tag: hardware::input:joystick, hardware::input:keyboard, implemented-in::c, role::program, use::configuring Download-Size: 21.8 kB APT-Sources: http://dennou-q.gfd-dennou.org/debian sid/main amd64 Packages Description: ジョイスティックの動きを同等のキーストロークに変換 joy2key により、ジョイスティックの軸とボタンの動きに対してキーボードイベント を選択できますので、ネーティブでジョイスティックをサポートしていないアプリケーション でジョイスティックやゲームパッドを利用できます。
DebianだとWheezy以降,Ubuntuだとprecise(12.04LTS)以降にパッケージがあるようです.
今回はDebian sidやjessieなので導入はパッケージを入れるだけでした.
$ sudo apt install joy2key
設定はよく解らなかったけどこの辺を参考に
こんな感じで動きました.キーマップは未だ詰めるつもりだけどとりあえず.
$ DISPLAY=:0 joy2key -X -buttons A B X Y L Tab Escape Return KP_9 -axis Left Right Up Down -thresh -16383 16383 -16383 16383
キーコードについてはxevや/usr/include/X11/keysymdef.h
で確認できます.とりあえずここにも貼っておきます.
しかしShift + Tabも使いたいのだけどShift/Tabそれぞれ単体は入力できるけど同時入力が効かないようです.通常のKBDでは動作するのでjoy2keyの問題だと思います.
試した環境はDebian sidのjoy2key 1.6.3-2とDebian lennyのjoy2key 1.6.3-2でJoypadはハードオフで\200くらいだったBUFFALOのスーパーファミコンみたいな見た目のBSGP801シリーズと書かれているもの.
[ 5239.625574] usb 2-1.2: authorized to connect [ 5263.982357] usb 1-1.2: new low-speed USB device number 6 using ehci-pci [ 5264.095408] usb 1-1.2: New USB device found, idVendor=0583, idProduct=2060 [ 5264.095410] usb 1-1.2: New USB device strings: Mfr=0, Product=2, SerialNumber=0 [ 5264.095411] usb 1-1.2: Product: USB,2-axis 8-button gamepad [ 5264.095545] usb 1-1.2: Device is not authorized for usage [ 5266.168066] usb 1-1.2: authorized to connect [ 5266.176105] hidraw: raw HID events driver (C) Jiri Kosina [ 5266.184205] usbcore: registered new interface driver usbhid [ 5266.184207] usbhid: USB HID core driver [ 5266.188173] input: USB,2-axis 8-button gamepad as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0/0003:0583:2060.0001/input/input19 [ 5266.188377] hid-generic 0003:0583:2060.0001: input,hidraw0: USB HID v1.10 Joystick [USB,2-axis 8-button gamepad ] on usb-0000:00:1a.0-1.2/input0
minicomでステータスラインを非表示に
というのを見て気になって確認してみた.manを見てみると-F
というのがそれぽい
$ minicim -D /dev/ttyACM1 -F ''
としてみるとステータスラインの内容は消えるけどステータスライン自体は残っているのでちょっと違う感じ.
minicim起動中に設定画面(Ctrl+A o)の「画面とキーボード」内にそれらしい「C – ステータスライン表示 : 許可」というものがある.これをC
を押して「禁止」にして「”dfl” に設定を保存」で設定ファイルに書き出してみる.
$ cat ~/.minirc.dfl
# Machine-generated file - use setup menu in minicom to change parameters.
pu statusline disabled
この状態でminicomを起動するとステータスラインは消えていて,この行をコメントアウトしてminicomを起動するとステータスラインがでてくるのを確認.
試した環境はDebian sid amd64のminicom 2.7-1+b2