USB 入力でサスペンドからレジュームさせないには

多くの Linux ディストリビューションの初期設定では,サスペンド中にも USB の入力を検出しており,サスペンド中にマウスを動かしたりキーボードに触れたりすると,自動的にサスペンドから復帰してしまいます。

デスクトップ PC をお使いで机の上がきれいに片付いている方には便利な機能かもしれませんが,モバイルマシンをお使いの場合や,あるいは単に机の上が混沌としている場合には,ただ血圧が上がるだけの機能です。

幸いこの検出は無効化することができますので,その手順を紹介します。

続きを読む USB 入力でサスペンドからレジュームさせないには

Wine を箱《コンテナ》のなかで愉しもう

概説

この記事のゴール

LXC/LXD による仮想化コンテナで Wine を動作させ,SSH の X11 Forwarding でウィンドウをホスト環境に引っ張ってきて利用します。

続きを読む Wine を箱《コンテナ》のなかで愉しもう

Debian 10 + Xfce + Let’s note RZ4 で画面自動回転

GNOME 3 であれば iio-sensor-proxy 経由で加速度センサによる画面自動回転にデフォルトで対応していますが,GNOME 3 はラップトップのデスクトップ環境としての実用性が限られているという問題があります。しかし,Linux の常としてセンサの入力もデバイスファイルとして扱われているので,他のデスクトップ環境でも,簡単なスクリプトで状態を読んでやれば画面の自動回転ができるようになります。

続きを読む Debian 10 + Xfce + Let’s note RZ4 で画面自動回転

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 対象となる見込みです。

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 (e.g. Debian 9 では “debian”)を確認し,それを指定することで,わざわざ再構築せずにそのまま流用するのが無難かと思います。

さて,これで完成です。

Installation finished. No error reported.

となれば問題ないはずです。再起動してみましょう。

ダメなら手順に誤りがないか確認して再実行です。

感想

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

やはり Linux は血圧に優しい素晴らしい OS です……どこかの OS とは違って。

参考

GRUB – ArchWiki

GRUB2 – Gentoo Wiki

※ “GRUB 2” というのはいわば俗称で,公式には “GRUB” のみでバージョン2を指し,バージョン1は “GRUB Legacy” と呼ばれます。

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

Debian + Xfce の外観を改善する設定ファイル

デスクトップ環境として Xfce を選択して Debian をインストールしたときのテーマは本当にうんざりするほど古くさく,しかも使いにくいです。

いやいや,Xfce の実力はこんなもんじゃあないんですってば。安定第一なんでしょうけど,このテーマで Xfce に初めて接した人が抱く第一印象が悪くなってしまうとしたら本当にもったいないことです。

ということで,以下の2点を特徴とする,手っ取り早く導入できて見た目をそれなりに改善できる設定ファイルを公開してみます。

  • Debian Strech インストール直後の状態にて標準で入っているパッケージだけを使用し,バイナリのアートワーク等も含まない
  • GUI から再変更できる部分だけの変更

Debian 9.1 “Stretch”(Xfce バージョン 4.12)のインストール直後の状態で導入できるようになっています。なお当然ながら,もし既にご自身で設定を変更されている場合は,必ず事前にバックアップを取ってください。

ディレクトリ ~/.config/xfce4 (/home/ユーザ名/.config/xfce4) を削除し,この tar ball に含まれる「xfce4」以下を代わりにコピーした上で再起動してください。

設定が反映されない場合、元の設定ファイルを削除し再起動したうえで、グラフィカルログイン前にコンソール(Ctrl+Alt+F1)から設定ファイルをコピーしてください。

 

初期状態。このデッドスペースは一体……


上記設定ファイル導入後。パネルは透過させています。数十キロバイトの割にけっこう改善されていません? メニューもより多機能で洗練された Whisker Menu に変更してあります。

テーマは「xfce4-flat」ですが「アドワイチャ(adwaita)」もお勧めです(特に LibreOffice のようにツールバーを複数持つアプリケーションの見た目がすっきりします)。

外観以外にも一般的に有用と思われる設定変更をいくつかしてありますが,ひょっとしたら問題の原因となるかもしれません。特に,サスペンドの動作に問題がある場合は xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml を削除してご利用ください。

19/05/05追記:導入方法について追記。なお9.9でも使えています。

Debian でも LibreOffice のアイコンセットをかっこよくする――Sifr アイコンセットの導入

 Debian で LibreOffice を使うとき,「新規作成」や「開く」といったボタンを表示するのに,標準では「Tango」アイコンセットが使われます。
 Tango も良いものなのですが,ボタンがたくさん並ぶオフィススイートではどうしても取っ散らかって古くさい印象になってしまいます。
 ところで,LibreOffice 4.2 から「Sifr」という単色のアイコンセットが導入されています。Debian では Jessie でも Stretch でもレポジトリに登録されており非常に簡単に利用できるので,今回はこのアイコンセットを導入します。

# apt-get update
# apt-get install libreoffice-style-sifr

1) LibreOffice を開いて「ツール>オプション」を選択。
2) 「LibreOffice>表示」を開く。
3)「アイコンのサイズとスタイル」で「自動(Tango)」となっているのを「Sifr」に変更。

 まだ全てのアイコンが揃っていないようでメニュー内などで一部 Tango も混じりますが,これだけでも雰囲気はかなりモダンな感じになります。
Sifr 導入後のスクリーンショット

 LibreOffice で真のオープン標準規格 ODF を使おう!

Debian with Raspberry Pi Desktop を試してみる(日本語化等の手順紹介)

Debian with Raspberry Pi Desktop とは

青い空,白い雲。絶好の Liunx 日和ですね。

そこで今日は“ Debian with Raspberry Pi Desktop ”(以下 Debian with RPD)を試してみました。

Debian with RPD は昨年末に「PIXEL」として公開された Debian GNU/Linux ベースのディストリビューションで,その後「Debian with Raspberry Pi Desktop」という名前に変更されたようです。このディストリビューションはRaspberry Pi の標準 OS である Raspbian 同様 Raspberry Pi Foundation の主導で開発されているものであり,Raspbian に近い見た目とバンドルアプリを備えていることが特徴です。公開時,このブログでも簡単に紹介しました。

以前紹介した際は Live DVD としてしか利用できませんでしたが,現在では通常のデスクトップディストリビューションとして利用できるようになっています。今のところ RPD は LXDE のテーマに近い状態ですので,機能や安定性は既に実用的な水準に達しています。

早速起動してみる

Debian with RPD スクリーンショット

GRUB2 は Debian テーマのままながら,起動時に Raspberry Pi Desktop オリジナルのスプラッシュスクリーンが表示されます。デスクトップが開いてしまえば見た目は完全に Raspbian ですね。なお,標準ではキーボードレイアウト選択以外のローカライズは何もありません。スクリーンショットはローカライズ後のものです(あくまでも Debian なので翻訳も揃っており,簡単にローカライズできます)。

Debian with RPD スクリーンショット

ソフトウェアも Raspbian と同じものがプリインストールされて,設定も素の Debian ではなく Raspbian と同様になっています。

Debian with RPD スクリーンショット

この特徴的なアイコン等,テーマとしては「PiX」という名前が付けられているようでした。

ローカライズ

以下,ローカライズ(日本語化等)の方法等について解説します。シェルスクリプトになっており,そのまま実行して動くはずですが,例外処理などはしていないので適宜修正してお使いください。

Raspi.sh(root として実行)

#/bin/sh

apt-get update
apt-get upgrade

# 1. 最低限あったほうがいいパッケージの導入
apt-get install compton tlp tlp-rdw
# apt-get install aptitude vim xscreensaver
echo @compton >> /etc/xdg/lxsession/LXDE-pi/autostart
systemctl enable tlp.service
systemctl enable tlp-sleep.service
systemctl disable systemd-rfkill.service
# compton はコンパクトなコンポジットマネージャで,グラフィックが極端に古くなければ(GMA 900 とか以降なら),これを起動時に開始することで CPU 負荷を軽減し体感スペックを上げることができます。
# 万が一トラブルが発生した場合は Ctrl+Alt+F1 でシェルからログインして自動起動を削除するか(/etc/xdg/lxsession/LXDE-pi/autostart を開いて"@compton"の記述を削除), compton をアンインストール(apt-get remove compton)してください。

# 2. IM 導入
# 軽快さ重視なら Anthy がオススメ。
#   apt-get install uim uim-anthy kasumi
apt-get install uim uim-mozc mozc-utils-gui

# 3. ロケール・タイムゾーン変更
# 手動で raspi-config でもできます。というかそっちが正攻法?
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/g' /etc/locale.gen
locale-gen
update-locale LANG=ja_JP.UTF-8
locale
timedatectl set-timezone Asia/Tokyo
timedatectl

# あとはユーザに戻って sourcehan-raspi.sh を実行すればローカライズは完成。

# 以下はお好みでどうぞ
# フォント導入
# apt-get install fonts-vlgothic fonts-ipafont-gothic fonts-ipafont-mincho
# 他のディストリビューションに通常標準搭載されている日本語フォントを入れておきたい場合は導入しておきましょう。なお,Droid と Unifont が標準で入っているため,特に入れなくても(表示品質はともかく)日本語表示に問題はありません。

# 標準アプリケーションの削除(Raspberry Pi 関係なく純然たる軽量 OS として利用する場合)
#   apt-get purge bluej geany greenfoot idle idle3 scratch scratch2 sense-emu-tools sonic-pi python3-thonny  claws-mail chromium
#   apt-get autoremove
#   mv /usr/share/raspi-ui-overrides/applications/raspi_resources.desktop /usr/share/raspi-ui-overrides/applications/raspi_resources.desktop.bck
#   mv /usr/share/raspi-ui-overrides/applications/magpi.desktop /usr/share/raspi-ui-overrides/applications/magpi.desktop.bck
#   mv /usr/share/raspi-ui-overrides/applications/python-games.desktop /usr/share/raspi-ui-overrides/applications/python-games.desktop.bck
# "Raspberry Pi Resources" と "The MagPi" はブラウザを起動するショートカット,"Python Games" は ./python_games/launcher.sh を起動するショートカットです。
# geany や chromium は残しておいてもいいかも。Claws Mail は軽量 MUA です。

# 自分がよく使うアプリケーションを入れていく
#   apt-get install firefox-esr firefox-esr-l10n-ja keepassx

# 用途によっていろいろ追加
#   apt-get install thunderbird thunderbird-l10n-ja simple-scan gimp filezilla vlc radiotray brasero easytag gparted ltris freeciv-client-gtk freeciv-server

# ある程度のグラフィック性能(目安:GMA X3100 以降)があるマシンならちょっとした 3D ゲームなんかも
#   apt-get install minetest megaglest extremetuxracer

# あとは普段使っている設定ファイルを ./ にコピーするといい感じに。
# お疲れさまでした。

sourcehan-raspi.sh(一般ユーザとして実行)

#/bin/sh

# Source Han フォントファミリを導入します。
# このスクリプトに実行権限を付与するか,"sh ./sourcehan-raspi.sh" して実行してください。
# フォントはこのスクリプトを実行したユーザのみに導入されます。

cd
if [ ! -d .fonts ]; then
    mkdir ./.fonts
fi
wget -t 3 -T 60 https://github.com/adobe-fonts/source-han-serif/raw/release/OTF/SourceHanSerifJ_EL-M.zip
unzip ./SourceHanSerifJ_EL-M.zip
mv SourceHanSerifJ_EL-M/SourceHanSerif-*.otf .fonts/
wget -t 3 -T 60 https://github.com/adobe-fonts/source-han-serif/raw/release/OTF/SourceHanSerifJ_SB-H.zip
unzip ./SourceHanSerifJ_SB-H.zip
mv SourceHanSerifJ_SB-H/SourceHanSerif-*.otf .fonts/
wget -t 3 -T 60 https://github.com/adobe-fonts/source-han-sans/raw/release/OTF/SourceHanSansJ.zip
unzip ./SourceHanSansJ.zip
mv SourceHanSansJ/SourceHanSans-*.otf .fonts/
ls ./.fonts
fc-cache -v -f .fonts
rm -rf SourceHan* __MACOSX

# Debian with RPD 用
sed -i -e 's/Roboto Light/源ノ角ゴシック Light/g' ~/.config/openbox/lxde-pi-rc.xml
sed -i -e 's/Roboto Light 12/源ノ角ゴシック Light 12' ~/.config/lxsession/LXDE-pi/desktop.conf
sed -i -e 's/Roboto Light 12/源ノ角ゴシック Light 12' ~/.config/gtk-3.0/gtk.css

参考:
Linux におけるラップトップマシン向け電力管理スイートの紹介(Pm-utils, Laptop-mode-tools, Powertop, TLP) – 怠惰の形而上学
Debian Jessie + Xfce で UIM ツールバーのアイコンの背景色がおかしいのを直すには – 怠惰の形而上学
Debian 上の GTK デスクトップ(Xfce, Gnome 等)で Qt アプリの外観を統合したい – 怠惰の形而上学

Debian with RPD,とても気に入りました。これからも使っていきたいです。