Dragonboard 410c eMMC領域のOS入れ替え方法2種類

以下のガイドのとおりなんですが一応メモを.

microSD Card経由と,Fastboot経由の2種類があります.
microSD Card経由の場合はDIP switchの変更が必要でディスプレイとマウスが必要です.
Fastboot経由の場合はHostPCとmicroUSB Cableが必要です.USB-LANアダプタを使えばヘッドレスで全て設定できます.

#こういうのを使ったほうがいいけど.

microSD Card経由での書き込み

USBキーボード,マウス,HDMIモニタと4GB以上のmicroSDが必要です.

イメージの入手とmicroSD Cardへの書き込み

このファイル名は現在の最新です.以下のページを見て最新を入手してください.

$ wget http://builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/dragonboard410c_sdcard_install_debian-66.zip http://builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/MD5SUMS.txt
$ md5sum -c MD5SUMS.txt 2>&1 | egrep -v 'FAILED|ありません'
dragonboard410c_sdcard_install_debian-66.zip: 完了
md5sum: 警告: 一覧にある 15 個のファイルが読み込めませんでした
$ unzip -l dragonboard410c_sdcard_install_debian-66.zip
Archive:  dragonboard410c_sdcard_install_debian-66.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
    14022  2016-02-27 14:36   license.txt
2621440000  2016-02-27 14:36   db410c_sd_install_debian.img
---------                     -------
2621454022                     2 files
$ unzip dragonboard410c_sdcard_install_debian-66.zip
$ cat ./db410c_sd_install_debian.img | pv | sudo dd of=/dev/sdz bs=4M

microSDからの起動とセットアップ

microSD CardをDragonboard 410cに差し込んで,基盤の裏面のDIP switch(s6)を操作してSD boot(2)だけをOnにします.シルクがあるので解りやすいです.
Dragonboard 410cにUSBキーボード,マウス,HDMIモニタを接続して起動するとシンプルなインストーラが起動するのでポチポチと押していくと完了です.

IMGP2730IMGP2731IMGP2732IMGP2733

一旦電源を切ってDIP swatchを元に戻し,microSD Cardを取り外して起動するとLXDEが起動してきます.

ちなみにDIP switchにUSB bootもあるので試してみましたが未実装化手順が違うのかうまく行きませんでした.

Fastboot経由での書き込み

microSD経由より手順が多いですが必要なものが少ない&DIP swatchの操作が必要ないのでケースに入れている場合などもいいかもしれません.
microUSB Cableは必要なので用意してください.

fastbootの導入

HostPCにfastbootを導入します.Android開発環境が既にある人は入っていそうですね.

$ sudo apt install android-tools-fastboot

bootloaderイメージの入手

次のsiteからbootloaderイメージを入手します.最新版を入手してください.
96Boards Builds for: latest

ディレクトリを掘って展開しておきます.

$ unzip -l dragonboard410c_bootloader_emmc_linux-46.zip 
Archive:  dragonboard410c_bootloader_emmc_linux-46.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
57344  2016-02-10 10:00   hyp.mbn
   744042  2016-02-10 10:00   emmc_appsboot.mbn
14022  2016-02-10 10:00   license.txt
   154980  2016-02-10 10:00   rpm.mbn
   483468  2016-02-10 10:00   tz.mbn
 23102976  2016-02-10 10:00   NON-HLOS.bin
   80  2016-02-10 10:00   sec.dat
   252868  2016-02-10 10:00   sbl1.mbn
34304  2016-02-10 10:00   gpt_both0.bin
  324  2016-02-10 10:00   flashall
---------                     -------
 24844408                     10 files
$ mkdir dragonboard410c_bootloader_emmc_linux-46
$ unzip dragonboard410c_bootloader_emmc_linux-46.zip

fastboot modeに入るために基板上の(-)ボタン(s4)を押しながら電源を投入します.すぐにfastboot modeになるのでfastboot devicesコマンドで確認します.何も出てない場合は失敗しているので電源投入をやり直します.

$ sudo fastboot devices
b5d12d18        fastboot

デバイスが認識できているのが確認できたらflashall scriptで書き込みを開始します.書き込みを開始した後は(-)ボタン(s4)を離しても大丈夫そうです.

$ sudo ./flashall
target reported max download size of 268435456 bytes
sending 'partition' (33 KB)...
OKAY [  0.005s]
writing 'partition'...
OKAY [  1.451s]
finished. total time: 1.457s
target reported max download size of 268435456 bytes
sending 'hyp' (56 KB)...
OKAY [  0.005s]
writing 'hyp'...
OKAY [  0.011s]
finished. total time: 0.016s
target reported max download size of 268435456 bytes
sending 'modem' (22561 KB)...
OKAY [  0.732s]
writing 'modem'...
OKAY [  0.756s]
finished. total time: 1.488s
target reported max download size of 268435456 bytes
sending 'rpm' (151 KB)...
OKAY [  0.008s]
writing 'rpm'...
OKAY [  0.010s]
finished. total time: 0.018s
target reported max download size of 268435456 bytes
sending 'sbl1' (246 KB)...
OKAY [  0.011s]
writing 'sbl1'...
OKAY [  0.010s]
finished. total time: 0.021s
target reported max download size of 268435456 bytes
sending 'sec' (0 KB)...
OKAY [  0.004s]
writing 'sec'...
OKAY [  0.006s]
finished. total time: 0.010s
target reported max download size of 268435456 bytes
sending 'tz' (472 KB)...
OKAY [  0.017s]
writing 'tz'...
OKAY [  0.015s]
finished. total time: 0.033s
target reported max download size of 268435456 bytes
sending 'aboot' (726 KB)...
OKAY [  0.026s]
writing 'aboot'...
OKAY [  0.025s]
finished. total time: 0.052s
erasing 'boot'...
OKAY [  0.036s]
finished. total time: 0.037s
erasing 'rootfs'...
OKAY [  0.267s]
finished. total time: 0.267s
erasing 'devinfo'...
OKAY [  0.034s]
finished. total time: 0.034s

boot/root領域の書き込み

OSイメージのboot/root領域のデータを入手して書き込みます.
書き込みはfastboot modeにしてから行ってください.

$ wget http://builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/linaro-jessie-alip-qcom-snapdragon-arm64-20160227-66.img.gz http://builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/boot-linaro-jessie-qcom-snapdragon-arm64-20160227-66.img.gz http://builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/MD5SUMS.txt
$ md5sum -c MD5SUMS.txt 2&>1 |grep 完了
boot-linaro-jessie-qcom-snapdragon-arm64-20160227-66.img.gz: 完了
linaro-jessie-alip-qcom-snapdragon-arm64-20160227-66.img.gz: 完了
$ sudo fastboot flash boot ./boot-linaro-jessie-qcom-snapdragon-arm64-20160227-66.img 
target reported max download size of 268435456 bytes
sending 'boot' (17480 KB)...
OKAY [  0.562s]
writing 'boot'...
OKAY [  0.329s]
finished. total time: 0.891s
$ sudo fastboot flash rootfs ./linaro-jessie-alip-qcom-snapdragon-arm64-20160227-66.img 
target reported max download size of 268435456 bytes
sending sparse 'rootfs' (262140 KB)...
OKAY [  9.309s]
writing 'rootfs'...
OKAY [ 18.304s]
sending sparse 'rootfs' (262140 KB)...
OKAY [  9.236s]
writing 'rootfs'...
OKAY [ 19.888s]
sending sparse 'rootfs' (262140 KB)...
OKAY [  9.255s]
writing 'rootfs'...
OKAY [ 19.759s]
sending sparse 'rootfs' (262140 KB)...
OKAY [  9.295s]
writing 'rootfs'...
OKAY [ 19.834s]
sending sparse 'rootfs' (262140 KB)...
OKAY [  9.317s]
writing 'rootfs'...
OKAY [ 19.828s]
sending sparse 'rootfs' (262140 KB)...
OKAY [  9.290s]
writing 'rootfs'...
OKAY [ 19.765s]
sending sparse 'rootfs' (59016 KB)...
OKAY [  2.118s]
writing 'rootfs'...
OKAY [  4.450s]
finished. total time: 179.649s

起動するとlxdeが起動してきます.sshdも起動してくるのでdhcpdの動いている環境でUSB-LANアダプタを接続すればヘッドレス環境で設定が可能です.avahiは動いてないのでipはポートスキャンなりarpなりで探してください.

$ sudo nmap -sP 192.168.2.200-255 --spoof-mac 00:90:cc:e8:0b:db

Starting Nmap 7.01 ( https://nmap.org ) at 2016-03-11 01:39 JST
Spoofing MAC address 00:90:CC:E8:0B:DB (Planex Communications)
Nmap scan report for 192.168.2.203
Host is up.
Nmap done: 56 IP addresses (1 host up) scanned in 19.15 seconds
$ sudo arp|grep 00:90:cc
192.168.2.214            ether   00:90:cc:e8:0b:db   C                     wlp3s0

ユーザ名はlinaroパスワードも同じです.

$ ssh linaro@192.168.2.202
$ uname -a
Linux linaro-alip 4.4.0-linaro-lt-qcom #1 SMP PREEMPT Sat Feb 27 04:55:16 UTC 2016 aarch64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 8.3 (jessie)
Release:        8.3
Codename:       jessie

ちなみに,セットアップ終了後のeMMCの容量はこのくらいです.

$ df /
Filesystem      1K-blocks    Used Available Use% Mounted on
/dev/mmcblk0p10   7260748 1814312   5120404  27% /

後は普通のDebianなのでsource listを日本に向けてUpdateしてほげりましょう.

/etc/apt/sources.list.d/の下はこんな感じ.後ろ2つは/etc/apt/sources.listと重複しているような?

$ find /etc/apt/sources.list.d/ -type f | xargs -n1 -I{} sh -c "echo \#-- {} ; cat {}"
#-- /etc/apt/sources.list.d/hwpack.qcom.list
deb http://repo.linaro.org/ubuntu/qcom-overlay jessie main
#-- /etc/apt/sources.list.d/linaro-overlay-repo.list
deb http://repo.linaro.org/ubuntu/linaro-overlay jessie main
deb-src http://repo.linaro.org/ubuntu/linaro-overlay jessie main
#-- /etc/apt/sources.list.d/hwpack.debian.list
deb http://ftp.debian.org/debian/ jessie main contrib non-free
#-- /etc/apt/sources.list.d/hwpack.backports.list
deb http://ftp.debian.org/debian/ jessie-backports main

Radikoを自動的に録音してPodcast化してくれるradicastを試す

Radikoを自動的に録音してPodcast化してくれるradicastというものを見つけました.

昔はこんな感じで録音したりしていましたが仕様が変わって録音できなくなって対応というのが面倒で最近は録音していませんでした.たまに聞くときはAndroidのRazikoを使っています.でもradicastならお手軽に動かせてPodcastとして扱えるので便利そうということで試してみました.

試した環境はUbuntu 14.04 amd64/Debian stretch testing amd64/Rasbian jessieですが,Ubuntu環境では録音開始時に以下のようにコアダンプしてしまうようでうまく行っていません :-(

2016/03/09 05:20:00 [radiko] start record
2016/03/09 05:20:00 [radiko] GET http://radiko.jp/player/swf/player_3.0.0.01.swf
2016/03/09 05:20:04 [radiko] POST https://radiko.jp/v2/api/auth1_fms
Segmentation fault (コアダンプ)

dockerでも動きますが,今回は実機で動かしています.

必要なpkgの導入

$ sudo apt install libav-tools swftools rtmpdump golang-go

※Debian stretchの場合はlibav-toolsの代わりにffmpegを導入.

go getで導入

$ GOPATH=~/usr/local/go go get github.com/soh335/radicast

オプションはこんな感じでした.

$ ~/usr/local/go/bin/radicast -h
Usage of /home/mk/usr/local/go/bin/radicast:
  -bitrate string
        bitrate (default "64k")
  -buffer int
        buffer for recording (default 60)
  -config string
        path of config.json (default "config.json")
  -converter string
        ffmpeg or avconv. If not set this option, radicast search its automatically.
  -host string
        host (default "0.0.0.0")
  -output string
        output (default "output")
  -port string
        port (default "3355")
  -setup
        initialize json configuration
  -title string
        title (default "radicast")

設定ファイル作成

--setupオプションでスケルトンを作成して,

$ ~/usr/local/go/bin/radicast --setup > ~/usr/local/go/etc/radicast.json
$ cat ~/usr/local/go/etc/radicast.json
{
  "HOUSOU-DAIGAKU": [],
  "MBC": [],
  "RN1": [],
  "RN2": []
}

次のページを参考にcron形式で設定します.crontabと違い秒単位まで指定できるようです.

例えば"0 0 7 * * MON-FRI" だと月曜から金曜の07:00:00の番組を録音となります.
録音停止は自動的にされるようです.

$ cat ~/usr/local/go/etc/radicast.json
{
  "HOUSOU-DAIGAKU": [],
  "MBC": [
    "0 0 5 * * MON-FRI",
    "0 10 5 * * MON-FRI",
    "0 0 7 * * MON-FRI"
  ],
  "RN1": [],
  "RN2": []
}

実行

設定ファイルを指定して実行します.

$ ~/usr/local/go/bin/radicast -config=$HOME/usr/local/go/etc/radicast.json
2016/03/09 05:00:12 [radicast] station:MBC spec:0 0 5 * * MON-FRI
2016/03/09 05:00:12 [radicast] station:MBC spec:0 10 5 * * MON-FRI
2016/03/09 05:00:12 [radicast] station:MBC spec:0 0 7 * * MON-FRI
2016/03/09 05:00:12 [radicast] start new cron
2016/03/09 05:00:12 [server] start 0.0.0.0:3355

指定時刻になると,番組情報を取得して録音が始まり,番組終了時に録音が終了して次のジョブまで待機します.

2016/03/09 06:30:00 [radiko] start record
2016/03/09 06:30:00 [radiko] GET http://radiko.jp/player/swf/player_3.0.0.01.swf
2016/03/09 06:30:04 [radiko] POST https://radiko.jp/v2/api/auth1_fms
2016/03/09 06:30:05 [radiko] POST https://radiko.jp/v2/api/auth2_fms
2016/03/09 06:30:06 [radiko] GET http://radiko.jp/v2/api/program/today?area_id=JP46
2016/03/09 06:30:07 [radiko] start recording モーニング・スマイル
2016/03/09 06:30:07 [radiko] rtmpdump command: /usr/bin/rtmpdump --live --quiet -r rtmpe://f-radiko.smartstream.ne.jp --playpath simul-stream.stream --app MBC/_definst_ -W http://radiko.jp/player/swf/player_3.0.0.01.swf -C S:"" -C S:"" -C S:"" -C S:J_Rb9kLWN2Cb5XlcGqQjfw --stop 1853 -o -
2016/03/09 06:30:07 [radiko] converter command: /usr/bin/ffmpeg -y -i - -vn -acodec libmp3lame -ar 44100 -ab 64k -ac 2 /tmp/radiko240330221/radiko_0.mp3

データは以下のようにoutput以下に保存されています.

$ find output -ls
  6724248      0 drwxr-xr-x   1 mk       mk             36  3月  9 05:55 output
  6724778      0 drwxr-xr-x   1 mk       mk             44  3月  9 05:55 output/20160309053000_MBC
  6724327  10168 -rw-r--r--   1 mk       mk       10409132  3月  9 05:55 output/20160309053000_MBC/podcast.mp3
  6724779      4 -rw-r--r--   1 mk       mk            650  3月  9 05:55 output/20160309053000_MBC/podcast.xml

録音中のテンポラリファイルは/tmp以下に作られます.

$ ls -lA /tmp/radiko077215706/
合計 5184
-rw-r--r-- 1 mk mk 5223512  3月  9 07:10 radiko_0.mp3

録音したデータはPodcastとして配信されます.このURLは規定値ではlocalhostからしかアクセスできません.このURLをPodcast Aggregatorに指定してあげると普通にPodcastとして扱えます :)

$ xmllint http://localhost:3355/rss
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
    <channel>
        <title>radicast</title>
        <itunes:owner/>
        <itunes:image/>
        <itunes:category/>
        <item>
            <title>生島ヒロシのおはよう一直線 (2016-03-09 05:30:00 +0900 JST)</title>
            <itunes:author>生島ヒロシ</itunes:author>
            <itunes:summary> &lt;br /&gt;&lt;A href="http://www.mbc.co.jp/radio/" target="_blank"&gt;&lt;img src="http://www.mbc.co.jp/radio/radiko/bn/mbcradio_pr1410.png" alt="MBCradio" /&gt;&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;twitterハッシュタグは「&lt;a href="http://twitter.com/#!/search/%23mbc1107"&gt;#mbc1107&lt;/a&gt;」</itunes:summary>
            <itunes:image/>
            <enclosure url="http://localhost:3355/podcast/20160309053000_MBC.mp3" length="10409132" type="audio/mpeg"/>
            <pubDate>Wed, 9 Mar 2016 05:55:45 +0900</pubDate>
        </item>
    </channel>
</rss>

Podcast Aggregatorとこのサーバが別の場合以下のように-hostオプションを指定してインターフェイスに割り当てたipを指定するとそのネットワークからアクセスできるようになります.

$ ~/usr/local/go/bin/radicast -config=$HOME/usr/local/go/etc/radicast.json -host 192.168.2.203
  :
2016/03/09 07:42:34 [server] start 192.168.2.203:3355

proxy

は使えない感じかな?

$ w3m -dump http://radiko.jp/area
document.write('<span class="JP46">KAGOSHIMA JAPAN</span>');
$ tsocks w3m -dump http://radiko.jp/area
document.write('<span class="JP13">TOKYO JAPAN</span>');
$ ALL_PROXY=socks5h://localhost:8080 ~/usr/local/go/bin/radicast -setup
2016/03/09 07:56:00 [radiko] GET http://radiko.jp/player/swf/player_3.0.0.01.swf
2016/03/09 07:56:01 [radiko] POST https://radiko.jp/v2/api/auth1_fms
2016/03/09 07:56:02 [radiko] POST https://radiko.jp/v2/api/auth2_fms
2016/03/09 07:56:02 [radiko] GET http://radiko.jp/v2/api/program/today?area_id=JP46
{
  "HOUSOU-DAIGAKU": [],
  "MBC": [],
  "RN1": [],
  "RN2": []
}
$ tsocks ~/usr/local/go/bin/radicast -setup
   :
  "MBC": [],
   :
$ tsocks ~/usr/local/go/bin/radicast -setup
   :
  "MBC": [],
   :
$ ALL_PROXY=http://localhost:8080 ~/usr/local/go/bin/radicast -setup
   :
  "MBC": [],
   :

起動済みのXをTigerVNCで共有

通常はVNCは新しいXを起動して使うことが多いと思いますが,ヘッドレス環境や入力デバイスの貧弱な環境デモの際など既に起動済みのXの画面を利用したいことがあります.(例えばKoboとかマウス忘れたとか><)


昔はvinoを使っていましたが,設定画面がGnomeに統合されてGnome環境以外で利用するのが面倒になってしまいました.


一応dconfを書き換えれば設定できます.

% gsettings list-recursively org.gnome.Vino
org.gnome.Vino notify-on-connect true
org.gnome.Vino alternative-port uint16 5900
org.gnome.Vino disable-background false
org.gnome.Vino use-alternative-port true
org.gnome.Vino icon-visibility 'client'
org.gnome.Vino use-upnp true
org.gnome.Vino view-only false
org.gnome.Vino prompt-enabled false
org.gnome.Vino disable-xdamage false
org.gnome.Vino authentication-methods ['vnc']
org.gnome.Vino network-interface ''
org.gnome.Vino require-encryption false
org.gnome.Vino mailto ''
org.gnome.Vino lock-screen-on-disconnect false
org.gnome.Vino vnc-password 'xxxxxxxxxxx'

GUIが良ければdconf-editorとかを.

20160304_00:03:38-25955

#MATE環境でvinoが起動してこない場合は次のページを -> Raspberry_Pi/Ubuntu_MATE – matoken’s wiki.

Gnome重いしdconf書き換えるんもめんどいなということで最近はx11vncを使っていました.

$ sudo apt install x11vnc
$ x11vnc -localhost -rfbauth $HOME/.vnc/passwd -display :0

今回以下の記事を読んでTigerVNCでも出来ることを知りました!

今回はVinoと同じく現在ログインしているデスクトップを転送するため,TigerVNCサーバーはユーザー権限で動作し,新しい仮想ディスプレイは作成しません。TigerVNCにはそのような便利なコマンドが用意されています。

続いて次のコマンドを実行し,TigerVNCを起動します。

$ x0vncserver -display :0 -passwordfile ~/.vnc/passwd

TigerVNCに含まれるx0vncserverを使うといけるようです.

しかしDebianにもパッケージがないようです.

$ w3m -dump 'https://packages.debian.org/search?suite=all&section=all&arch=any&searchon=names&keywords=tigervnc'|grep 'tigervnc を名前に含むパッケージを' -A4
tigervnc を名前に含むパッケージを、すべてのスイート、すべてのセクション、すべて
のアーキテクチャで検索しました。
 
残念ながら、検索結果はありませんでした
 

Ubuntu 14.04環境が別にあるのでそちらにいくやさんの用意されたリポジトリを用意して導入してみます.

しかし,add-apt-reposotoryが見当たりません.環境がおかしくなっている?

$ sudo add-apt-reposotory ppa:ikuya-fruitsbasket/tigervnc
sudo: add-apt-reposotory: command not found
$ add-apt-reposotory
コマンド 'add-apt-reposotory' は見つかりませんでした。もしかして:
 コマンド 'add-apt-repository' - パッケージ 'software-properties-common' (main)
add-apt-reposotory: コマンドが見つかりません
$ sudo apt install software-properties-common
$ add-apt-reposotory -h
コマンド 'add-apt-reposotory' は見つかりませんでした。もしかして:
 コマンド 'add-apt-repository' - パッケージ 'software-properties-common' (main)
add-apt-reposotory: コマンドが見つかりません
$ apt-file update
$ apt-file search add-apt-reposotory
$ dpkg -L software-properties-common|grep add-apt-reposotory

見つからない?

あ,スペルミスだ
~s/add-apt-reposotory/add-apt-repository/gですね.よく見ましょうorz

$ dpkg -L software-properties-common |grep bin
/usr/bin
/usr/bin/add-apt-repository
/usr/bin/apt-add-repository
$ add-apt-repository
エラー: root で実行する必要があります
$ add-apt-repository
エラー: root で実行する必要があります

ということでこんな感じでいけました.

$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:ikuya-fruitsbasket/tigervnc
$ sudo apt update && sudo apt upgrade
$ sudo apt install tigervncserver

よし早速!

$ x0vncserver -display :0 -passwordfile ~/.vnc/passwd
x0vncserver: unable to open display ":0"
~ImageCleanup called

そういえば起動してませんでした.この端末はX入れているけどX転送でたまにアプリを使うくらいなので起動していないのです.
slimを起動(確かデフォルトはlightdm)してloginして

$ sudo service slim start

再度

$ x0vncserver -display :0 -passwordfile ~/.vnc/passwd

そしてRemminaで接続……出来ない.fwのせいでした.とりあえずssh -L で5900を転送してlocalhostに接続しました.

20160304_04:03:41-24566

うまく行きました :)

しかし,クライアント側もTigerVNCで繋いでみたいところ.とりあえずi686とx86_64についてはバイナリ配布もされているようなのでこれを利用してみます.

とりあえず適当なディレクトリに展開して実行で動きました.

$ wget http://tigervnc.bphinz.com/nightly/xc/x86_64/tigervnc-Linux-x86_64-1.6.80-20160302gitf34a386c.tar.gz
$ md5sum tigervnc-Linux-x86_64-1.6.80-20160302gitf34a386c.tar.gz
ea9ea2396d42819d4ea588a6598f583b  tigervnc-Linux-x86_64-1.6.80-20160302gitf34a386c.tar.gz
$ tar xf tigervnc-Linux-x86_64-1.6.80-20160302gitf34a386c.tar.gz -C ~/tmp
$ ~/tmp/usr/bin/vncviewer &

ちなみに
vnc4serverにもx0vnc4serverというそれらしいものがあるようです.そのうち試してみよう.

ownCloudの同期が動かなくなって困る

ownCloudを便利に使っているのですが,ふと気づくと同期されていない.ステータスを見ると最後の同期が8時間前.タスクマネージャーのアイコンは!マークが付いて「不明な状態」となっています.

20160226_19:02:52-398

ログを見てもよくわからない.

WebやAndroidそして別のLinuxマシンは問題ないようです.ということは多分この端末の問題.
問題の環境はDebian stretch testing amd64のowncloud 7.0.12~dfsg-2です.

一旦ownCloudを終了して設定ファイルだけ退避(対象ファイルはそのまま)して設定を作りなおしてみました.

$ mv ./.local/share/data/ownCloud ./.local/share/data/ownCloud-backup
$ owncloud --logwindow

とりあえず同期出来たようです.

ブートUSBメモリなどを作るmkusbを試してみる

USBメモリなどにisoを書き込んで起動デバイスを作れるとても便利なUNetbootinというツールがあります.
しかし,Debian jessie/stretchに入っていません.

なんでだろうとBTSを見るとうまく動かないバグがあるようです.(UEFI環境でNG?)

ざざっと眺めていてmkusbという同じようなツールがあるのを見かけたので試してみました.

環境

Debian stretch testing amd64です.

$ screenfetch
         _,met$$$$$gg.           mk@x220
      ,g$$$$$$$$$$$$$$$P.        OS: Debian testing-updates sid
    ,g$$P""       """Y$$.".      Kernel: x86_64 Linux 4.3.0-1-amd64
   ,$$P'              `$$$.      Uptime: 9h 7m
  ',$$P       ,ggs.     `$$b:    Packages: 3622
  `d$$'     ,$P"'   .    $$$     Shell: bash 4.3.42
   $$P      d$'     ,    $$P     Resolution: 1366x768
   $$:      $$.   -    ,d$$'     WM: Awesome
   $$\;      Y$b._   _,d$P'      WM Theme: awesome
   Y$$.    `.`"Y$$$$P"'          CPU: Intel Core i5-2540M CPU @ 3.3GHz
   `$$b      "-.__               GPU: Mesa DRI Intel(R) Sandybridge Mobile
    `Y$$                         RAM: 9768MiB / 15934MiB
     `Y$$.                      
       `$$b.                    
         `Y$$b.                 
            `"Y$b._             
                `""""           
 

Ubuntuはppaがあります.DebianはUbuntuのppaが使えます.他のLinuxディストリビューションでは導入スクリプト( mkusb-installer )が用意されています.

導入(ppa)

source.listを登録します.apt edit-sourcesコマンドでdeb http://ppa.launchpad.net/mkusb/ppa/ubuntu trusty mainを登録します.

$ sudo apt edit-sources mkusb
$ sudo chmod +r /etc/apt/sources.list.d/mkusb.list
$ cat /etc/apt/sources.list.d/mkusb.list
# "mkusb/install-to-debian - Community Help Wiki"
https://help.ubuntu.com/community/mkusb/install-to-debian
deb http://ppa.launchpad.net/mkusb/ppa/ubuntu trusty main
$ gpg --keyserver keyserver.ubuntu.com --recv-keys 54B8C8AC
gpg: 鍵54B8C8ACをhkpからサーバkeyserver.ubuntu.comに要求
gpg: 鍵54B8C8AC: 公開鍵"Launchpad PPA for MKUSB"をインポートしました
gpg:           処理数の合計: 1
gpg:             インポート: 1  (RSA: 1)
$ gpg --fingerprint 54B8C8AC
pub   4096R/54B8C8AC 2014-08-14
 フィンガー・プリント = 29D7 6ADA 2D15 A87B F4C6  8B82 3729 8274 54B8 C8AC
uid                  Launchpad PPA for MKUSB
 
$ gpg -a --export 54B8C8AC | sudo apt-key add -
OK
$ apt-key list|grep -A1 54B8C8AC
pub   4096R/54B8C8AC 2014-08-14
uid                  Launchpad PPA for MKUSB

パッケージリストの更新とmkusbパッケージの導入

$ sudo apt update
$ sudo apt install mkusb mkusb-nox
$ dpkg -L mkusb
/.
/usr
/usr/share
/usr/share/mkusb
/usr/share/mkusb/mkusb-start
/usr/share/mkusb/restore
/usr/share/mkusb/mkusb-st2
/usr/share/mkusb/usb-pack_efi.tar.gz
/usr/share/mkusb/grub.cfg
/usr/share/mkusb/maybe-problems.txt
/usr/share/mkusb/backup
/usr/share/icons
/usr/share/icons/mkusb.svg
/usr/share/icons/hicolor
/usr/share/icons/hicolor/scalable
/usr/share/icons/hicolor/scalable/apps
/usr/share/icons/hicolor/scalable/apps/mkusb.svg
/usr/share/icons/hicolor/48x48
/usr/share/icons/hicolor/48x48/apps
/usr/share/icons/hicolor/48x48/apps/mkusb.png
/usr/share/doc
/usr/share/doc/mkusb
/usr/share/doc/mkusb/README.Debian
/usr/share/doc/mkusb/copyright
/usr/share/doc/mkusb/changelog.Debian.gz
/usr/share/man
/usr/share/man/man8
/usr/share/man/man8/mkusb.8.gz
/usr/share/applications
/usr/share/applications/mkusb.desktop
/usr/sbin
/usr/sbin/mkusb
$ dpkg -L mkusb-nox
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/mkusb-nox
/usr/share/doc/mkusb-nox/copyright
/usr/share/doc/mkusb-nox/changelog.Debian.gz
/usr/sbin
/usr/sbin/mkusb-nox

実行例

メニューから起動するか,

$ sudo -H /usr/sbin/mkusb

のようにして起動します.書き込むイメージが決まっている場合は引数に指定できます.イメージには.gzや.xzも指定可能なので展開の手間が省けます.

$ sudo -H /usr/sbin/mkusb ./alpine-3.3.1-x86_64.iso

スプラッシュが出て,

20160224_06:02:32-32496
20160224_06:02:36-32565

メニューが出てきます.cloneやwipeも可能です.
20160224_06:02:45-32658

書き込み先のデバイスは間違えないようにしましょう.間違えるととても悲しいことになります.ちなみにSD Cardスロットの/dev/mmcblk0は検出されませんでした.USB-SDアダプタ経由だと出てきました.
20160224_06:02:26-868
20160224_06:02:43-1237

確認画面でチェックを入れて「Go」ボタンで書き込みが始まります.
20160224_06:02:05-2732
20160224_06:02:13-2827
20160224_06:02:17-2960

実行例(nox)

mkusb-noxコマンドを使うと端末で利用できます.nox版では複数のUSBメモリがある場合の選択方法はわかりませんでした.書き込むデバイスだけを差し込むようにするしか無いかもしれません.

$ sudo /usr/sbin/mkusb-nox ./alpine-3.3.1-x86_64.iso
The iso file SHOULD BE loop mounted on a temporary file READ-ONLY:
mount: /dev/loop0 is write-protected, mounting read-only
disk_name_type=label
default grsec|label grsec| _found_ in iso-file
default grsec|label grsec| _found_ in /dev/sdb
 Final checkpoint
Install to /dev/sdb? (y/n)
y
pv "alpine-3.3.1-x86_64.iso"| dd of=/dev/sdb bs=4096 ...
  82MiB 0:00:00 [ 205MiB/s] [========================================================================================================================>] 100%            
20992+0 records in
20992+0 records out
85983232 bytes (86 MB) copied, 4.84297 s, 17.8 MB/s
syncing the drive ...
The default grsec|label grsec| USB device is re-cloned  :-)

問題なく利用できる場合はUNetbootinの方がマルチプラットホームだし使いやすそうです.状況により使い分けるのがいいのかもしれません.

cronに特化したPodcastアグリゲータ/ダウンローダのpodgetを試す

先日試したpodracerは何気に10年前のソフトでメンテナンスもされていないし,起動中に強制終了するとゴミが残って次から起動しなくなったりとかとか結構不満点が出てきました.

今は前処理を以下のようにして,

if [ $(pgrep podracer) ] ; then
  echo 'running podracer.'
  exit -1
fi
 
echo run podracer
if [ -f ~/.podracer/tempsub ] ; then
  rm ~/.podracer/tempsub
  echo 'rm tempsub'
fi

プレイリストもこんな感じで別に作ってます.

cd ~/podcasts
PODCASTLIST=($(cd ~/podcasts ; find . -mmin -$LISTTIME -type f -print0 | xargs -0n1 file | grep -i audio | cut -f1 -d:))
if [ ${#PODCASTLIST[@]} -eq 0 ] ; then
  echo 'podcast not found.'
  exit -1;
fi
 
echo num = ${#PODCASTLIST[@]}
ls -1tr ${PODCASTLIST[@]} > ~/podcasts/todayspodcast.m3u

後者はDebianの方にはバグ報告をしていますが音沙汰がない感じです.

他にないかなーと探して(apt-cache search podcast)podgetというものを見つけました.

$ apt show podget | grep -A99 Description:
 
Description: cron 用に最適化された Podcast アグリゲータ/ダウンローダ
 Podget はシンプルな podcast アグリゲータであり、定期的なバックグランドジョブ
 (すなわち cron) として起動するために最適化されています。RSS および XML フィード
 からの podcast のダウンロード、ファイルをソートしてフォルダやカテゴリごとに格納、
 iTunes PCAST ファイルおよび OPML リストからの URL のインポート、M3U および ASX
 プレイリストの自動生成、そして古くなったファイルの自動クリーンアップのサポート
 が特徴です。また、MS Windows サーバ上にホストされた podcast の UTF-16 自動変換も
 特徴です。
 podget を一旦起動すると、ユーザ設定ファイルを $HOME/.podget にインストール
 しますので、そのファイルをカスタマイズできます。

cronに特化していて便利そうなので試してみます.

導入

Debian stretch testing/Rasbian jessie/Ubuntu 14.04 で確認しました.

$ sudo apt install podget

初期化

$ podget -h
 
Usage /usr/bin/podget [options]
 
    -c --config <FILE>           Name of configuration file.
    -C --cleanup                 Skip downloading and only run cleanup loop.
    --cleanup_simulate           Skip downloading and simulate running
                                 cleanup loop.
                                 Display files to be deleted.
    --cleanup_days               Number of days to retain files.  Anything
                                 older will be removed.
    -d --dir_config <DIRECTORY>  Directory that configuration files are
                                 stored in.
    -f --force                   Force download of items from each feed even
                                 if they have already been downloaded.
    --import_opml <FILE or URL>  Import servers from OPML file or
                                 HTTP/FTP URL.
    --import_pcast <FILE or URL> Import servers from iTunes PCAST file or
                                 HTTP/FTP URL.
    -l --library <DIRECTORY>     Directory to store downloaded files in.
    -p --playlist-asx            In addition to the default M3U playlist,
                                 create an ASX Playlist.
    -r --recent <count>          Download only the <count> newest items from
                                 each feed.
    --serverlist <list>          Serverlist to use.
    -s --silent                  Run silently (for cron jobs).
    --verbosity <LEVEL>          Set verbosity level (0-4).
    -v                           Set verbosity to level 1.
    -vv                          Set verbosity to level 2.
    -vvv                         Set verbosity to level 3.
    -vvvv                        Set verbosity to level 4.
    -h --help                    Display help.

初回起動時に設定ファイルなどが作成されます.引数無しで実行すると初期設定の中のpodcastをダウンロードするので--cleanup_simulateオプションを付けて実行すると良さそうです.
設定ファイルは規定値では~/.podget以下に作成されます.

$ podget --cleanup_simulate
$ ls -lA ~/.podget
合計 8
-rw-rw-r-- 1 mk mk 3652  2月 19 05:34 podgetrc
-rw-rw-r-- 1 mk mk 1131  2月 19 05:34 serverlist
  • podgetrc : 設定ファイル
  • serverlist : podcastのリスト

設定ファイルの用意

お好みで設定ファイルの~/podgetrcを編集します.私は以下の辺りを書き換えました.

ログファイルを有効に

# Directory to store logs in
dir_log=/home/mk/POD/LOG

プレイリストの年月日の形式を書き換え

# Date format for new playlist names
date_format=+%Y-%m-%d

Podcastの取得数を3つに

# Most Recent
# 0  == download all new items.
# 1+ == download only the <count> most recent
most_recent=3

サーバリストの作成

取得するPodcastを~/.podget/serverlistに書いていきます.

書式はスペース区切りで

URL カテゴリー 番組名

になっています.podgetを実行した時に
カテゴリー/番組名/番組というふうにディレクトリが掘られます.
具体的にはこんな感じで書いていきます.

http://feeds.feedburner.com/weblogs/csc tech 電脳空間カウボーイズ
http://feeds.backspace.fm/backspacefm tech backspace.fm
http://www.joqr.co.jp/science-podcast/index.xml science 日立ハイテクプレゼンツ 大村正樹のサイエンスキッズ
http://www.tbsradio.jp/life/rss.xml etc 文化系トークラジオ Life
http://www.tbsradio.jp/cycle-r/index.xml bike ミラクル・サイクル・ライフ
http://sokoani.com/feed anime そこあに
  :

他のアプリケーションらの移行でOPMLファイルのエクスポートが可能な場合はそのファイルやURLを元にインポートできるようです.※未確認

$ podget --import_opml <FILE or URL>

若しくはPCAST形式(iTunes向け?)も同様に利用できるようです.※未確認

$ podget --import_pcast <FILE or URL>

OPML書き出しの機能もあります.但しこの機能は
Ubuntu 14.04の0.6.9にはなく,
Rasbian jessieの0.7.3,
Debian stretchの0.7.9には存在しました.

$ podget --export_opml /tmp/podcast.opml
podget
 
Session file not found.  Creating podget.22189 .
 
Export serverlist to OPML file: /tmp/podcast.opml
 
Closing session and removing lock file.
$ head /tmp/podcast.opml
<?xml version="1.0" encoding="utf-8" ?>
<opml version="1.0">
<head/>
<body>
<outline text="tech"><outline text="電脳空間カウボーイズ" type="rss" xmlUrl="http://feeds.feedburner.com/weblogs/csc" /></outline>
<outline text="tech"><outline text="backspace.fm" type="rss" xmlUrl="http://feeds.backspace.fm/backspacefm" /></outline>
<outline text="science"><outline text="日立ハイテクプレゼンツ 大村正樹のサイエンスキッズ" type="rss" xmlUrl="http://www.joqr.co.jp/science-podcast/index.xml" /></outline>
<outline text="etc"><outline text="文化系トークラジオ Life" type="rss" xmlUrl="http://www.tbsradio.jp/life/rss.xml" /></outline>
<outline text="bike"><outline text="ミラクル・サイクル・ライフ" type="rss" xmlUrl="http://www.tbsradio.jp/cycle-r/index.xml" /></outline>
<outline text="anime"><outline text="そこあに" type="rss" xmlUrl="http://sokoani.com/feed" /></outline>

実行

とりあえず引数無しで実行することでPodcastが取得できます.

$ podget
-------------------------------------------------
Category: anime         Name: そこあに
Downloading feed index from http://sokoani.com/feed
2016-02-19 07:37:15 URL:http://sokoani.com/feed [673868] -> "-" [1]
 
Downloading 0_s413.mp3 from http://sokoani.com/podpress_trac/feed/9818/0/
 :
 :

Podcastは規定値では~/POD以下にカテゴリ/番組名/番組ファイルの形で保存されます.

$ find ~/POD -type f | tail -3
/home/mk/POD/etc/JUNK 伊集院光 深夜の馬鹿力/files_20160216.mp3
/home/mk/POD/etc/JUNK 伊集院光 深夜の馬鹿力/files_20160202.mp3
/home/mk/POD/etc/JUNK 伊集院光 深夜の馬鹿力/files_20160209.mp3

また,~/POD/*.m3uとステプレイリストも作成されます.これは実行単位で作られるのかな?

$ ls -l ~/POD/*.m3u
-rw-rw-r-- 1 mk mk  946  2月 19 07:14 /home/mk/POD/New-2016-02-19.m3u
-rw-rw-r-- 1 mk mk 1924  2月 19 07:50 /home/mk/POD/New-2016-02-19.r2.m3u

うまく動作するようなら-sオプションを付けてcronに登録してあげると良さそうです.以下の例では毎時3分にpodgetを実行しています.

$ crontab -e
$ crontab -l | tail -2
# get podcast
3 * * * *       podget -s

podracerはPodcastを番組関係なく実行日のディレクトリに保存されてPodcast番組を探したりするのに不便でしたがpodgetだとカテゴリと番組でディレクトリが分かれるので便利です.
しばらく併用してみようと思います.

絵文字を入力する-Mozc&emojione-picker-

Linux環境での絵文字入力方法です.新しい方法を知ったので紹介してみます.

Mozc利用

これまではこの方法を使っていました.Mozcの設定で「Unicode 6 絵文字変換」にチェックを付けると利用できるようになります.

20160216_23:02:52-2121

「えもじ」とか「ねこ」とか入力して変換出来ます.

20160217_07:02:28-3105

辞書に登録することも出来ます.

20160217_07:02:07-5247

emojione-picker for Ubuntu

今回知ったUbuntu向けの絵文字ピッカーです.実行するとタスクバーに常駐して入力したい絵文字を選んでクリックするとその絵文字がクリップボードにコピーされるのでクリップボード貼り付けで入力できます.

20160217_07:02:45-12768

チキンがクリップボードにコピーされたところ.

20160217_07:02:11-16960

いちいちメニューを辿るのは面倒ですが,Recentに最近使った絵文字が入るのでよく使うものはここからアクセスできます.

20160217_07:02:42-17641

Debian stretch testing への導入例

Ubuntu用ですがstretchにも入りました.ちなみにパッケージ化して導入しなくてもとりあえず動かすだけならgit cloneした後cd emojione-picker-ubuntu ; ./emojione-pickerとかでも動きました.

$ sudo apt install equivsequivs gir1.2-rsvg-2.0
$ git clone https://github.com/gentakojima/emojione-picker-ubuntu.git
$ cd emojione-picker-ubuntu
$ equivs-build debian_package.ctl
$ sudo dpkg -i emojione-picker_0.1_all.deb

という感じでLinux環境でも結構快適に絵文字が入力できるようになってきました.しかし絵文字は楽しいのですが環境によって見え方が大幅に変わるので意図したように伝わっているかとかが不安でもあります…….

絵文字を入力する-Mozc&emojione-picker-

Linux環境での絵文字入力方法です.新しい方法を知ったので紹介してみます.

Mozc利用

これまではこの方法を使っていました.Mozcの設定で「Unicode 6 絵文字変換」にチェックを付けると利用できるようになります.

20160216_23:02:52-2121

「えもじ」とか「ねこ」とか入力して変換出来ます.

20160217_07:02:28-3105

辞書に登録することも出来ます.

20160217_07:02:07-5247

emojione-picker for Ubuntu

今回知ったUbuntu向けの絵文字ピッカーです.実行するとタスクバーに常駐して入力したい絵文字を選んでクリックするとその絵文字がクリップボードにコピーされるのでクリップボード貼り付けで入力できます.

20160217_07:02:45-12768

チキンがクリップボードにコピーされたところ.

20160217_07:02:11-16960

いちいちメニューを辿るのは面倒ですが,Recentに最近使った絵文字が入るのでよく使うものはここからアクセスできます.

20160217_07:02:42-17641

Debian stretch testing への導入例

Ubuntu用ですがstretchにも入りました.ちなみにパッケージ化して導入しなくてもとりあえず動かすだけならgit cloneした後cd emojione-picker-ubuntu ; ./emojione-pickerとかでも動きました.

$ sudo apt install equivsequivs gir1.2-rsvg-2.0
$ git clone https://github.com/gentakojima/emojione-picker-ubuntu.git
$ cd emojione-picker-ubuntu
$ equivs-build debian_package.ctl
$ sudo dpkg -i emojione-picker_0.1_all.deb

という感じでLinux環境でも結構快適に絵文字が入力できるようになってきました.しかし絵文字は楽しいのですが環境によって見え方が大幅に変わるので意図したように伝わっているかとかが不安でもあります…….

GNU Coreutils 8.25でlsの出力が変わったのを試してみる

DebuanのMLで知ったのですが,Coreutils 8.25lsの出力結果が変わっています.

この変更はlsコマンドを使ったscriptなどが影響を受けそうと思ったのですが端末でのみの変更のようで一安心.
Debian stretch testingでちょっと試しに動かしてみました.
Debian jessie/Ubuntu 14.04以降も同じ手順で行けると思います.

開発環境の導入

$ sudo apt install build-essential
$ sudo apt build-dep coreutils

Coreutils 8.25の入手と署名確認

$ wget ftp://ftp.gnu.org/gnu/coreutils/coreutils-8.25.tar.xz ftp://ftp.gnu.org/gnu/coreutils/coreutils-8.25.tar.xz.sig
$ gpg --verify coreutils-8.25.tar.xz.sig
gpg: 署名されたデータが'coreutils-8.25.tar.xz'にあると想定します
gpg: 2016年01月20日 20時17分46秒 JSTにRSA鍵ID 306037D9で施された署名
gpg: "Pádraig Brady <P@draigBrady.com>"からの正しい署名
gpg:                 別名"Pádraig Brady <pixelbeat@gnu.org>"
gpg: *警告*: この鍵は信用できる署名で証明されていません!
gpg:       この署名が所有者のものかどうかの検証手段がありません。
主鍵フィンガー・プリント: 6C37 DC12 121A 5006 BC1D  B804 DF6F D971 3060 37D9

展開とビルド

$ tar xf coreutils-8.25.tar.xz
$ cd coreutils-8.25
$ ./configure --prefix=$HOME/usr/local
$ make

端末でのlsの動作比較

今パスの通っているのは8.24で,src/ls8.25

$ ls --version
ls (GNU coreutils) 8.24
Copyright (C) 2015 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
 
作者 Richard M. Stallman および David MacKenzie。
$ src/ls --version
ls (GNU coreutils) 8.25
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
 
Written by Richard M. Stallman and David MacKenzie.

スペースの含まれたファイルを作成してlsを実行すると8.25のlsでは'で括られる.

$ touch /tmp/hoge\ fuga
$ ls /tmp/hoge\ fuga
/tmp/hoge fuga
$ src/ls /tmp/hoge\ fuga
'/tmp/hoge fuga'

日本語は大丈夫だが,エスケープの必要な文字も括られる.

$ touch /tmp/日本語 /tmp/エスケープの必要な記号\?
$ src/ls /tmp/日本語 /tmp/他の記号\?
'/tmp/他の記号?'  /tmp/日本語

パイプでの動作確認

パイプを通るとこれまでどおりの動作

$ src/ls /tmp/hoge\ fuga | cat
/tmp/hoge fuga

なので,xargsなどで処理したい場合はこれまでどおり

$ src/ls /tmp/hoge\ fuga | xargs cat
cat: /tmp/hoge: そのようなファイルやディレクトリはありません
cat: fuga: そのようなファイルやディレクトリはありません
$ src/ls /tmp/hoge\ fuga | xargs -I{} cat "{}"

回避方法x3

$ src/ls --quoting-style=literal /tmp/hoge\ fuga /tmp/エスケープの必要な記号\?
/tmp/hoge fuga  /tmp/エスケープの必要な記号?
$ src/ls -N /tmp/hoge\ fuga /tmp/エスケープの必要な記号\?
/tmp/hoge fuga  /tmp/エスケープの必要な記号?
$ QUOTING_STYLE=literal src/ls /tmp/hoge\ fuga /tmp/エスケープの必要な記号\?
/tmp/hoge fuga  /tmp/エスケープの必要な記号?

ということでとりあえずこれまでと同じ動作をさせたい場合はQUOTING_STYLE=literalを設定したりls -Naliasを設定しておくといいみたいです.

$ echo 'export QUOTING_STYLE=literal' >> ~/.bashrc

or

$ echo "alias ls='ls -N'" >> ~/.bashrc~/.bashrc

#ところでCoreutils 8.25でまたコマンドが一つ増えていました.今回は覚えやすいけど

** New commands

base32 is added to complement the existing base64 command,
and encodes and decodes printable text as per RFC 4648.

<追記>

DebianではSeverity: serious(重要度:深刻)となってsidの8.25-2no_ls_quoting.patchが入ってrevertされたようです.

$ bin/ls --version|head -1
ls (GNU coreutils) 8.25
$ bin/ls /tmp/hoge\ fuga 
/tmp/hoge fuga
$ cat patches/no_ls_quoting.patch
Description: revert inconsistent ls quoting
 This is a revert of upstream commit 109b9220cead6e979d22d16327c4d9f8350431cc.
 Info changed to reflect current upstream intentions.
 
Bug-Debian: https://bugs.debian.org/813164
 
--- coreutils-8.25.orig/NEWS
+++ coreutils-8.25/NEWS
@@ -71,9 +71,6 @@ GNU coreutils NEWS
   df now prefers sources towards the root of a device when
   eliding duplicate bind mounted entries.
 
-  ls now quotes file names unambiguously and appropriate for use in a shell,
-  when outputting to a terminal.
-
   join, sort, uniq with --zero-terminated, now treat '\n' as a field delimiter.
 
 ** Improvements
--- coreutils-8.25.orig/doc/coreutils.texi
+++ coreutils-8.25/doc/coreutils.texi
@@ -7750,8 +7750,8 @@ this"} in the default C locale.  This lo
 
 You can specify the default value of the @option{--quoting-style} option
 with the environment variable @env{QUOTING_STYLE}@.  If that environment
-variable is not set, the default value is @samp{shell-escape} when the
-output is a terminal, and @samp{literal} otherwise.
+variable is not set, the default value is @samp{literal}, but this
+default may change to @samp{shell-escape} in a future version of this package.
 
 @item --show-control-chars
 @opindex --show-control-chars
--- coreutils-8.25.orig/src/ls.c
+++ coreutils-8.25/src/ls.c
@@ -1581,7 +1581,6 @@ decode_switches (int argc, char **argv)
       if (isatty (STDOUT_FILENO))
         {
           format = many_per_line;
-          set_quoting_style (NULL, shell_escape_quoting_style);
           /* See description of qmark_funny_chars, above.  */
           qmark_funny_chars = true;
         }

</追記>

gdm3とlightdmでログイン時にユーザを表示しないようにする

gdm3

先ずはgdm3から.
環境は,Debian stretch testing gdm3 3.18.0-2です.

/etc/gdm3/greeter.dconf-defaultsを編集して,[org/gnome/login-screen]セクションのdisable-user-list=trueのコメントを外して有効にする.

[org/gnome/login-screen]
disable-user-list=true

その後gdm3を再起動.

$ sudo systemctl stop gdm
$ sudo systemctl start gdm

#初め/etc/gdm3/greeter.dconf-defaultsはテンプレートなのかと思って/etc/gdm3/greeter.dconfにコピーして編集して反映されないなーとやっていましたorz

LightDM

LightDMの場合.
環境は,Debian stretch testing lightdm 1.16.6-1です.

/etc/lightdm/lightdm.conf[LightDM]セクションのgreeter-hide-users=trueのコメントを外して有効にする.

greeter-hide-users=true

--show-configオプションで設定が確認できます.

$ /usr/sbin/lightdm --show-config
[Seat:*]
A  greeter-session=lightdm-greeter
A  greeter-hide-users=true
A  session-wrapper=/etc/X11/Xsession
B  user-session=kde-plasma-kf5
[LightDM]
C  greeter-hide-users=True
C  allow-guest=False
[XDMCPServer]
C  enabled=true
Sources:
A  /usr/share/lightdm/lightdm.conf.d/01_debian.conf
B  /usr/share/lightdm/lightdm.conf.d/40-kde-plasma-kf5.conf
C  /etc/lightdm/lightdm.conf

その後LightDMの再起動.

$ sudo systemctl stop lightdm
$ sudo systemctl start lightdm

ディスプレイマネージャの切り替え

dpkg-reconfigureに導入済みのディスプレイマネージャのパッケージ名(どれでも)を付けて起動すると,導入済みのディプレイマネージャから選択できます.

$ sudo dpkg-reconfigure gdm3
┌─────────────────────────────────────────────────────────────────────┤ gdm3 を設定しています ├─────────────────────────────────────────────────────────────────────┐  
│ ディスプレイマネージャとは、X Window System 上でのグラフィカルなログイン機能を提供するものです。                                                                  │  
│                                                                                                                                                                   │  
│ ひとつの X サーバを管理できるのはひとつのディスプレイマネージャだけですが、ディスプレイマネージャパッケージが複数インストールされています。どのディスプレイマネ   │  
│ ージャをデフォルトで起動させるか選択して下さい。                                                                                                                  │  
│                                                                                                                                                                   │  
│ 異なるサーバを担当するように設定すれば、複数のディスプレイサーバは同時に動作できます。そのようにするには、/etc/init.d にある各ディスプレイマネージャの初期化スク  │  
│ リプトを編集し、デフォルトディスプレイマネージャのチェックを無効にして下さい。                                                                                    │  
│                                                                                                                                                                   │  
│ デフォルトのディスプレイマネージャ:                                                                                                                               │  
│                                                                                                                                                                   │  
│                                                                              gdm3                                                                                 │  
│                                                                              lightdm                                                                              │  
│                                                                              sddm                                                                                 │  
│                                                                                                                                                                   │  
│                                                                                                                                                                   │  
│                                                                              <了解>                                                                               │  
│                                                                                                                                                                   │  
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘