Debian 10 “Buster” が stable に

2019年7月6日,Debian 10 “Buster” が stable になりました。これにともない, “Stretch” は oldstable となります。

Buster ではそれほど目立つ変化はありませんが,AppArmor のデフォルトでの有効化,UEFI 対応強化など足回りが着実に強化されています。これまで testing として使ってきた感覚では,全体的に X 周りの安定性が高まっている印象もあります。

Stretch は2022年頃まで LTS 対象となる見込みです。Buster は2022年頃まで stable としてサポートされ,2024年頃まで LTS 対象となる見込みです。

Xfce の絶対に覚えておきたいキーボードショートカット6選

キーボードショートカットは強い味方

キーボードショートカットを覚えておくといろいろと便利なのは,必ずしも GUI に頼らなくてもよい Linux 環境でも同じです。

ショートカットの一覧を頭から暗記するようなことはおすすめできませんが(自分自身の利用スタイルで利用頻度の低いものまで覚えるのは混乱の元ですし,だいいち退屈です),誰であれまずこれだけは覚えておくと便利だろうという最低限のショートカットだけを紹介します。他の多くのデスクトップ環境でも使いまわせるので,この機会に覚えてみてください。

絶対に覚えておきたい Xfce キーボードショートカット

ショートカット 機能
Alt + F4 ウィンドウを閉じる
Alt + F9 ウィンドウを最小化する
Alt + F10 ウィンドウを最大化する
Alt + Tab 画面のフォーカスを切り替える(ウィンドウを切り替える)
Ctrl + Alt + D デスクトップを表示
Ctrl + Alt + Del 画面をロックする

付録(の方がなぜか長い)・絶対に覚えておきたい Firefox のキーボードショートカット8選

ショートカット 機能
Alt + ← or Ctrl + [ 戻る
Alt + → or Ctrl + ] 進む
Ctrl + Tab 右のタブへ
Ctrl + K or Ctrl + J 検索バーにフォーカスを移動
Ctrl + F ページ内検索
Ctrl + T 新しいタブを開く
Ctrl + F4 or Ctrl + W タブを閉じる
Ctrl + Shift + T 閉じたタブを開きなおす

特に Ctrl + K と Ctrl + Shift + T を使いこなせると作業効率が上がります。

light-locker でのユーザ切り替え

あるユーザでログインしたまま別のユーザでもログインするユーザ切り替え user switching は,同じマシンを複数の人が利用する場合のみならず,用途に応じて環境を切り替える手段としても便利ですが,light-locker の場合,どのようにして利用するのかわかりにくいです。
GDM 環境の場合は多くのデスクトップ環境で切り替えに標準対応しており,lightdm でも xscreensaver では設定変更で機能を有効化できるところ,light-locker ではそのような設定が見あたりません。
xfce4-whiskermenu-plugin では ”gdmflexiserver” を呼び出すようになっていますが GDM 用ですし,検索してみると xfswitch-plugin をインストールするといいという話もありますが,これも GDM に依存しています。
もしや light-locker ではユーザ切り替えができないのかとも思いましたが,なんのことはない,lightdm のログイン画面をロック画面として利用する light-locker では「特別な切り替え機能は必要ない」というのが答えでした。
すなわち,画面をロックし(light-locker-command –lock),別のユーザを選択してログインすればユーザを切り替えられます。

GRUB を復旧したメモ

あるマシンで,某 OS のアップデートがどうしても失敗するので諦めて October 2018 Update のインストールメディアを作成して 1クリーンインストールしたため,MBR が書き換えられてしまいました。これでは,メインの OS である Debian GNU/Linux が起動できません。
以下は GRUB (GRUB2) を再導入することで問題を解決したメモです。

前提

  • Linux 関連領域は /(DM-Crypt で暗号化)と /boot(平文)に切り分けられている
  • 両パーティションともデータは無傷で,MBR が書き換えられているだけ

手順

1. Linux システムを USB ブートする

世に言う Live ディスクですね。Debian ではここにあります。
USB メモリへの書き込みは,Linux の場合,GNOME Disks (gnome-disk-utility) 2 を使うのが簡便でしょう。GParted (gparted) にはない機能もあり,入れておいて損はないソフトです。
使用するのはできれば同じディストリビューションの同じバージョン・アーキテクチャが望ましいでしょうが,GRUB 関連パッケージのバージョンがそれなりに近ければなんでも構わないかと思います。ちなみに今回は 64 bit Debian GNU/Linux 9 に対し 32bit の Linux Mint 19 で実行しましたが特に問題は生じませんでした。

2. 内蔵ドライブのパーティションをマウントする

内蔵ドライブの各パーティションを,/ をマウントした場所を起点に元あったように並べていくイメージです。
実例で説明したほうが早いでしょう。
修復したいシステムで
/dev/sda5 が /boot
/dev/sda6 が /
だったとしたら,
/mnt をマウントポイントにするとして,
/dev/sda5 を /mnt/boot
/dev/sda6 を /mnt
にマウントすればいいわけです。簡単ですね。
具体的には,以下のようになるでしょう。

# mount /dev/sda6 /mnt
# mount /dev/sda5 /mnt/boot

自分の場合,/ は DM-Crypt で暗号化されており手動でマウントするのはちょっと面倒だからと,Thunar(xfce 標準のファイルマネージャ)でダブルクリックして /media/ 以下にふつーにマウントしてしまいました。もちろん,これでも特に問題はありません 3

3. GRUB をインストールする

いよいよお待ちかね(?),GRUB をインストールします。
ここで注意すべきは,BIOS 互換モードでインストールされたシステムでは通常アーキテクチャ等を意識する必要がないのに対し,EFI モードでインストールされたシステムに対しては,対象システムにあわせたオプションを指定しなければならないということです。詳しくは Gentoo Wiki の表と Arch Wiki の該当項目をご覧いただくとして,i386 や x64 といった target と BIOS や EFI といった platform の組み合わせで指定すべきオプションが異なり,また,UEFI 関連ファイルのディレクトリを指定する –efi-directory や UEFI にどのような名前で登録するかを指定する –bootloader-id といった EFI 特有のオプションを指定する必要があります。
もっとも,実用上は「BIOS 互換か 64bit EFI か」だけに気をつければよいかと思います。
BIOS 互換モードか 64bit EFI モードか判別する方法として,修復したいシステムの /boot(上記の例の /dev/sda5)を見るというものがあり,EFI モードでインストールされたシステムには /boot/efi が存在し,/boot/grub/i386-pc ではなく /boot/grub/x86_64-efi が存在します。

BIOS 互換モードの場合(64bit/32bit 問わず)

# grub-install --root-directory=/mnt /dev/sda

なお,設定ファイルが破損している場合は,いったん削除して再構築する必要があります。その場合は以下のようになります。

# grub-install --root-directory=/mnt --recheck /dev/sda
# update-grub

64bit EFI モードの場合

# grub-install --root-directory=/mnt --target=x86_64-efi --efi-directory=/mnt/boot/efi --bootloader-id=grub --recheck /dev/sda

–recheck しているのは bootloader-id がディストリビューションにより異なる場合があるためであり,できればディストリビューションが使用している bootloader-id を確認し,それを指定することで,わざわざ再構築せずにそのまま流用するのが無難かと思います。
さて,これで完成です。

Installation finished. No error reported.

となれば問題ないはずです。再起動してみましょう。
ダメなら手順に誤りがないか確認して再実行です。

感想

以前にも経験はありましたが,もう5年くらい前の話で,実のところすぐにうまくいくとは思っていなかったのですが,ほんの小手調べのつもりでいじっただけで修復できてしまいました。
やはり Linux は血圧に優しい素晴らしい OS です……どこかの OS とは違って。

参考

GRUB – ArchWiki

GRUB2 – Gentoo Wiki

2019/1/10 EFI モードでインストールされている場合について追記

Notes:

  1. これが簡単にできるようになったのは素晴らしい。そもそも同じメジャーバージョン内でアップデートに失敗するなよという話ではあるけど……
  2. なお,インストールするには gnome-disk-utility,起動するには gnome-disks とパッケージ名が微妙に変わりますが,GNOME Disks (gnome-disks) とは,ツール群である GNOME Disk Utility (gnome-disk-utility) に含まれるソフトウェアのひとつの名称ということのようです。
  3. 例は以下も引き続き /mnt として説明します。

Linux でサスペンドからのレジューム後にタッチパッドが使えない時は

ラップトップ PC によっては,サスペンドからのレジューム後にタッチパッドが使えなくなる場合があります 1。BIOS/UEFI の設定で改善したという話もあり,どうも BIOS/UEFI の挙動に原因があるように見受けられますが,幸いにもドライバモジュールの再読込だけでも正しく認識されるようになります。具体的には,サスペンド時に modprobe -r psmouse,レジューム時に modprobe psmouse を実行してやれば良いわけです。
なお,最近の機種の場合,異なるバスのデバイスが使われている場合もあり,その場合には i2c_hid や rmi_smbus を試す必要があるようです。なお,これらのモジュールはタッチパッド以外にも使われている場合があり,アンロードは psmouse の場合ほど安全ではないため,事前に調査するべきでしょう。

さて,早速片付けてしまいましょう。
まずはサスペンド時に modprobe -r するサービスを書きます。

# vi /etc/systemd/system/tptweak-suspend.service
[Unit]
Description=Unload psmouse
Before=suspend.target

[Service]
Type=simple
ExecStart=/sbin/modprobe -r psmouse

[Install]
WantedBy=suspend.target

同様に,レジューム時に modprobe するサービスを書きます。

# vi /etc/systemd/system/tptweak-resume.service
[Unit]
Description=Load psmouse
After=suspend.target

[Service]
Type=simple
ExecStart=/sbin/modprobe psmouse

[Install]
WantedBy=suspend.target

あとは,登録するだけです。簡単ですね。

# systemctl daemon-reload
# systemctl enable tptweak-suspend.service
# systemctl enable tptweak-resume.service

非常にシンプルなサービスのため,たまには失敗するかもしれませんが,今のところうまく機能しています。

参照:
Synaptics タッチパッド – ArchWiki
電源管理 – ArchWiki
サスペンドの前後でコマンドを実行する。 – ガジェット好きの日記

Notes:

  1. いままでに何台かの富士通製で遭遇。

Debian Testing で最新の Firefox を使う

 Firefox のバージョンも60を数えた2018年。Shiretoko (バージョン3.5)がもう遠い昔のことであるように思われます。アドオン類もメインストリームは Quantum 対応に移りつつあり,Quantum アップデートによる改革は成功したと言えるでしょう。
 ところで,Debian GNU/Linux が採用している Firefox ESR は Quantum アップデート以前のバージョン52で,これをメインで使ってきた私は半年間に渡って世界の流れ(?)から取り残されてきたことになります。
 もちろん Mozilla が配布しているパッケージを導入することもできるのですが,/opt 以下にインストールすることは想像もしたくない,かといって ~/ 以下にインストールするのもユーザ権限で改変できるわけで気持ち悪い……というわけでなんとなく ESR を使い続けてきました。しかし,unstable (Sid) にある firefox が Mozilla による正式リリース版ほぼそのものだということを(今更)知ったので,unstable のレポジトリから持ってきてみました。偉大なる APT は我らを導く!
 基本的にはDebian Mozilla team APT archive のページにある通りなのですが,ひとつ重大な問題があって,この通りにするとシステム全体が unstable にアップグレードされてしまいます。こわい。なので,これに加えて Default-Releasae も指定してやる必要があります。具体的には以下のような手順になります。

この記事は Debian Testing(執筆時点 Buster)における方法を紹介したものです。
Stable(執筆時点 Stretch)で以下の手順を実行すると、システムが破壊される可能性があります。
必ず,お使いのブランチが Testing であることを事前に確認してください。
  1. unstable のレポジトリを追加
    # vi /etc/apt/sources.list.d/10-unstable.list
    
    deb http://http.debian.net/debian unstable main
    

     

  2. Default-Release を設定
    # vi /etc/apt/apt.conf.d/10default-release
    
    APT::Default-Release "testing";
    

     

  3. firefox と firefox-l10n-ja をインストール
    # apt update
    # apt install -t unstable firefox firefox-l10n-ja
    

     
     以上で最新の Firefox がインストールされました。
     今の最新版は 60.0.1,検証期間が完了して Debian レポジトリの Firefox ESR が 60.2 に置き換わるまでにはしばらく時間がかかりますが,これでもう安心です。もっと早く気づくべきだった
     なお,Debian Mozilla team APT archive ページを見るに,このやり方を stable で実行することは推奨されないようです。実際に試してみると,なぜか libc6 等にまで依存関係があり巻き込んでアップデートしてしまうようで,たしかにこれはよくないです。stable ではおとなしく firefox-esr を使うか ~/ にバイナリを置くかするようにした方がよいかと思われます。
     
     
     
    以下は自分用メモ(読まずにコピペしないこと!)

    echo "deb http://http.debian.net/debian unstable main" > /etc/apt/sources.list.d/10-unstable.list; echo "APT::Default-Release "testing";" > /etc/apt/apt.conf.d/10default-release; apt update; apt install -t unstable firefox firefox-l10n-ja
    

Firefox で国際化ドメイン名を punycode で表示する ―― IDN 悪用フィッシングにとりあえず対策

 最近になって暗号通貨取引所に成りすましたフィッシングサイトが多く現れているようで,国際化ドメイン名(IDN)悪用の問題が話題になっているようです。
 この問題は国際化ドメイン名の登場当初から指摘されており,たとえば「apple.com」ではなく「аpple.com」(キリル文字で「アー・エル・エル・パーロチカ・イェー」)で登録するなどして,正規ウェブサイトのドメイン名と視覚上見分けがつかないドメイン名を取得し,フィッシングに悪用するという手法です。

窓の杜 – 【NEWS】Mozilla/Firefox/Operaなどに国際化ドメイン名の盲点をついたURL偽装の問題(2005/02/08)
肉眼では偽物と見抜けない国際化ドメイン悪用のURL偽装、Google Chromeなどで対策進む – 窓の杜(2017/04/21)

 国際化ドメイン名のコンセプト自体に起因している問題であるため抜本的な対策は困難で,十年以上にわたり対策が試みられ続けてきてなお完全な解決を見ていない問題ですが(なにしろ Unicode には十万以上の文字が収録されていますし,各レジストラのポリシも様々です) 1,国際化された表示を無効化し,国際化ドメイン名表示のための符合である punycode で表示するように設定することでさしあたりユーザ側で簡単にフィシング対策ができます。

about:config を開き,
network.IDN_show_punycode」の値を true にしてください。

これで,国際化ドメイン名が punycode で表示されるようになります。先述の「аpple.com」なら「xn--80ak6aa92e.com」と表示され,正規のサイトではないことが一目瞭然になります。
デメリットは国際化ドメイン名がわかりにくくなることですが,それで困る人がいるのかは不明。

Notes:

  1. レジストラが紛らわしいドメイン名の登録を拒否する,Firefox などクリックせずに EV-SSL の組織情報が表示されるブラウザで EV-SSL を利用する等が考えられますが,現実的には難しいでしょうね。

常時 TLS に対応しました

 このサイトで利用しているホスティングサービス Minibird (StarServer) が Let’s Encrypt に対応していたので,遅ればせながら導入してみました。そういえば随分前に対応予定のアナウンスが出ていたのですが,すっかり忘れてしまっていました。
 ネットオウルのアカウント情報画面から「サーバー管理ツール」にログインし,「SSL設定」を開き対象とするドメイン名を選択して「無料独自SSL」>「独自SSL設定を追加する(確定)」をクリックするだけでした。
 こうやって,ごく普通の廉価なホスティングサービスにも Let’s Encrypt の統合による常時 TLS 化機能が浸透しているのはよいことですね。数年前からしたら夢のような話です。

Piwik,Matomo になる

Piwik is now Matomo – Announcement – Analytics Platform – Matomo

 このサイトでも利用している自由ソフトウェアのアクセス解析ソフトウェア「Piwik」が,「Matomo」という名称へと変更されました。「Matomo」とは,そう,「まとも」に由来しています。
 Matomo という名称は「あらゆる言語で発音しやすい。(簡単に)覚えられる短さ。簡潔。そしてなにより… Matomo は日本語で honesty を意味し,これは私たちの重要な価値基準のひとつである透明性に通じるものです」 1とのことで,Piwik という名前が一部の言語では発音が困難であることを受けた選定であるようです。
 ただ,最大の理由は別にあるようです。「なぜ名前を Piwik のままにしないのですか?」という質問に答える形で,以下のような記述があります。「いくつか理由があり,そのうちの一つは,Piwik とは違って Matomo ではその名前を他の企業とは共有しないことを保証するためです。私たちはまた,Matomo ブランドを保護し,オープンソースコミュニティの名前としてずっと保ちたいと考えます」 2
 ここで言及されているのは「Piwik PRO」のことかと思われます。「Piwik PRO」についてはプロジェクト公式サイトの FAQ で説明されています 3。これはポーランドのある企業であり,Piwik を開発しているチーム及び InnoCraft 社とは資本的にも人的にも一切関係がないばかりか,プロジェクトへのコントリビューションも無いとのことですが,プロジェクト創設者から許諾された「Piwik PRO」という商標を所有しており,これを自らのビジネスで使用しているとのことです 4。この Piwik PRO がプロジェクト公式のものであると誤認されることを防ぐためにリブランディングの必要があったものと思われます。おそらくですが,許諾された当時は Piwik も「Piwik PRO」もずっと小さく,何年かでここまで成長するものとは思っていなかったために,現在の状況では不合理が生じていたのでしょう。
 ともかく Piwik 改め Matomo は本当におすすめのアクセス解析ソフトウェアです。日本語化もほぼ完全であり,簡単に使うことができます。この機会に是非試してみてください。

Get Matomo – Analytics Platform – Matomo

DuckDuckGo を検索バーに追加するときの URL パラメータ

 プライバシを尊重する検索エンジン・DuckDuckGo には,非常に柔軟な URL パラメータが用意されており,Cookie が無効化されていたり頻繁に削除されたりする環境でも快適に利用できるようになっています。どれくらい柔軟かというと,広告を無効化するパラメータなるものが存在しているほどです 1
 この記事ではおすすめの設定を紹介します 2

https://start.duckduckgo.com/?&kl=jp-jp&ks=m

・サブドメインの start. は,初回訪問者向けの DuckDuckGo の紹介などが表示されない“常連向け”の表示にするものです。
・kl=jp-jp は検索結果を日本語に最適化したものにする設定です。DuckDuckGo はフィルタバブルを避けていることを大きな売りの一つとしていることもあり,デフォルトでは言語ごとの最適化はされません。Cookie を保存しない環境では都度言語ごとの最適化をオンにする必要があり煩雑になってしまいますが,このパラメータを付すことで解決します。
・ks=m はフォントサイズを多少小さくする設定です。s を指定すると更に小さくできます。
 ブラウザによっては,以下のような形で登録することになるでしょう。

https://start.duckduckgo.com/?&kl=jp-jp&ks=m&q=


https://start.duckduckgo.com/?&kl=jp-jp&ks=m&q=%s

 パラメータは他にも多く用意されています。!bang 機能ほど知られてはいませんが,DuckDuckGo を便利に使うためには見逃せない機能なので,是非確認してみてください。

DuckDuckGoのURLパラメータ

 もっとも,これらの URL パラメータの利用は原理的には匿名性を害しうるものであるということは忘れてはいけません。必要最低限の――同じ組み合わせのパラメータを使っている人が多いと考えられる――パラメータのみを利用するのが無難だろうと思います。

Notes:

  1. もっとも,DuckDuckGo で表示される広告は古典的なキーワードベースで表示もテキストリンクのみであり一般的な広告とは比べ物にならないほど害が小さいですし,収益から毎年かなりの金額がネットの自由を守る団体や自由ソフトウェアプロジェクトに寄附されているので,無効化やブロックは全くお勧めできませんけどね。
  2. 実は,新しいデバイスを買った際などに空で打とうとして間違えることが少なからずあるので備忘録をネットに公開しておこうというのが本当の目的だったり。