OS

RPi3にubuntu16.04(1) インストール

0

RaspberryPi3にubuntu16.04をインストールします。

ubuntuのサイトからRPi3用のイメージファイルをダウンロード。SDに書き込みます。

 

SDを延命

 
起動したら、まずSDの延命措置を施しましょう。
やることはRPi2のubuntu14.04インストールと同じですが、変更元ファイルの内容が一部違っていたりするので、ここでは16.04での変更内容を示します。

最初に/tmpと/var/tmpをtmpfsに追い出します。/etc/fstabに以下の変更を行います。

つぎに、ログファイルもtmpfsに置くようにします。
RPi用のtransientlogスクリプトを使用します。
このスクリプトは、RPi起動時にログファイルをtmpfsに移動し、シャットダウン時にSDに書き戻すようになっているので、シャットダウンしてもログファイルの内容が保持されます。

install.shを変更してinsservのパスを追加します。

また、transientlog.initをそのままインストールするとサービスのstart/stopがエラーになるので、一部変更します。

変更を保存したらインストールします。

その他の変更は、RPi2のホームディレクトリのファイル以降の内容と同じです。
 

そのほか

 
タイムゾーン、キーボード、ロケール設定をRPi2のタイムゾーン、キーボード、ロケール設定と同様に行います。
ついでにlogrotateでログファイル肥大化抑制もやっておきましょう。

RPi3にubuntu16.04(2) bluetoothとwi-fiを使う

0
Bluetooth関連パッケージのインストール

 
pi3上のbluetoothを使うために、raspbianではbluez-firmwarepi-bluetoothパッケージが追加されていますが、これらはubuntuには含まれていません。
あちこち探してみると、ubuntu-pi-flavour-makerというプロジェクトが見つかりました。
ubuntuをベースに、pi2/3のubuntu MATE、lubuntu、xbuntuなどをリリースしていて、いずれもpi3のbluetoothとwifiに対応しています。
このubuntu-pi-flavour-makerのPPAを追加して、bluetoothとwifi関連のパッケージをインストールします。

インストールが完了したら、hciconfigコマンドでbluetoothレシーバが認識されているか確認します。

 

bluetoothキーボードのペアリングと自動接続

 
本体側の準備ができたらキーボードを接続します。今回使用したのはiBuffaloのBSKBB24BKです。
設定はbluetoothctlコマンドで行います。

レシーバが認識されています。
キーボードのペアリングボタンを押して待機状態にしたら、scan onと入力してデバイスをスキャンします。

デバイスが見付かったらpairコマンドでペアリングします。

ペアリングされたデバイスは、paired-devicesコマンドで確認できます。

ペアリングはrpiを再起動しても維持されます。デバイスにはconnectコマンドで接続します。

プロンプトが[bluetooth]から[BSKBB24]に変わっています。以降はデバイスを指定しなければBSKBB24に対するコマンドと解釈されます。
trustコマンドを実行して、以降は自動で接続するようにしておきます。

たぶん、ここまでの操作はUSBキーボードかsshで行っているのではないでしょうか。
一度接続を切って再起動し、自動的に接続するか試してみましょう。

 

wifi設定

 
まずはrpiのwifiを有効にします。
/etc/network/interfaceswlan0の設定を追記します。

追加したwlan0を起動してifconfigで確認します。

wifi関連のパッケージ、wpasupplicantwireless-toolsiwをインストールします。

iwlistコマンドでアクセスポイントを検索します。

この例ではcatch22に接続します。
wpa_passphraseコマンドで接続キーを生成して/etc/wpa_supplicant/catch22.confに保存します。接続先はcatch22、パスフレーズはsortie50です。

生成された/etc/wpa_supplicant/catch22.confの内容はこのようになっています。

3行目に生のパスフレーズがコメントアウトされています。必要なければこの行は削除しておきましょう。

ネットワーク起動時にcatch22.confを読み込んでdhcp接続するように/etc/network/interfacesを変更します。

設定は以上です。
wlan0を再起動してアクセスポイントに接続します。

アクセスポイントのIPアドレスは192.168.3.1です。dhcpで192.168.3.3のアドレスが割り当てられました。
ifconfigで確認してみましょう。

RPi2でubuntu14.04LTS(12) xcompmgrで透過ターミナルとフェードイン/アウト

0

コンポジットマネージャーxcompmgrを使うと、ターミナルの背景を半透明にしたり、ウインドウやメニューをフェードイン/アウトさせたりできます。

~/.config/openbox/autostartにxcompmgrを追加します。

  • -f フェードイン/アウト有効
  • -D フェード処理周期(msec)
  • -I フェードインの周期ごとの変化量
  • -O フェードアウトの周期ごとの変化量

ウインドウとメニューに影を付けるには、次のようにします。

  • -c 影有効
  • -t 上辺からのオフセット位置
  • -l 左辺からのオフセット位置
  • -o 影の非透明度

lxterminalの背景を透過させるには、~/.config/lxterminal/lxterminal.confを編集してbgalphaを設定するか、編集メニューの設定ダイアログを開き、スタイルタブの背景色ボタンをクリックしてOpacityを設定します。

RPi2でubuntu14.04LTS(11)logrotateでログファイル肥大化抑制

0

tmpfsに追い出した/var/logが大きくなりすぎないように、logrotateでログの保存期間を抑制します。
この例では、1日ごとまたは500KBごとにファイルを分け、1つ前までのファイルを残すようにします。

まずは/etc/logrotate.confを編集してデフォルトとwtmp、btmpの設定を変更します。

次に、/etc/logrotate.d/rsyslogと/etc/logrotate.d/updatartを変更します。

ここで一度logrotateを実行して、変更後の設定に合わせてログを整理しておきます。

また、(「いままさに不具合の調査中!」など)特に必要なければ、圧縮されたログとupstartのログも削除してしまいましょう。

RPi2でubuntu14.04LTS(10)日本語入力

0

 
iBus-MOZCをインストールします。

lxterminalなどでCtrl+SpaceしてもMOZCが有効にならない場合は、以下の設定を行います。

  • x-windowからibus-setupを実行。
  • Input MethodタブのCustomize active input methodsにチェックを入れる。
  • Select an input methodドロップダウンでJapanese→Mozcを選択。
  • Addボタンをクリック。
  • Close。

MOZCのデータファイルは頻繁に書き込みが発生しそうなのでtmpfsに追い出してキャッシュしましょう。

/usr/share/libpam-script/temporize.listに.mozcと、ついでに.cacheを追加します。

RPi2でubuntu14.04LTS(9)LightDMでx-windowの言語選択

0

 
LightDMの言語選択メニューを有効にします。

この時点で言語選択メニューに表示されるのはEnglishとEnglish USAです。
メニューに日本語を追加するには、languege-pack-jaをインストールします。
languege-pack-jaはロケール設定で追加した日本語ロケールとかぶるので、一旦削除してからインストールします。

インストールが完了したらロケールを更新します。

LightDMで選択した言語によって、LANGとLANGUAGEが切り替わります。
言語のデフォルトは、/etc/default/localeのLANGの設定値になります。

RPi2でubuntu14.04LTS(8)x-window日本語化

0

 

x-window専用のロケール設定

 
x-windowを日本語化するとき問題となるのが、ttyのローカルコンソールでメッセージが文字化けしてしまうことです。
export LANG=Cとすれば済むことではありますが、それをいちいちやるのは面倒です。
x-windowだけのロケール設定ができないものかと調べてみたら、PAMでLightDMの認証時にスクリプトをフックできることが判りました。ローカルコンソールはLightDMを通らないので、x-windowセッションのときだけシステムロケール設定を上書きできます。
 

ロケールファイル作成

 
/etc/default/localeをコピーして/etc/default/x-localeを作成します。

x-localeに対してupdate-localeを実行して、ロケールを設定します。

メニューなども日本語化するには、上記にLANGUAGE=jp_JP.UTF-8を追加します。
 

PAM設定

 

/etc/pam.d/lightdmを編集して、セッションのロケールファイルをlocaleからx-localeに変更します。

LightDMのログイン画面も日本語化するなら、/etc/pam.d/lightdm-greeterも同様に変更します。

ログイン画面はLANGの値を見ているようで、LANGUAGEの設定は関係ないようです。

RPi2でubuntu14.04LTS(7)pam-scriptでbashログイン非依存なスクリプト実行

0

 

pam-scriptでLightDMに対応

 
LightDMでログインするとbashログインを経由せずにx-windowセッションが開始されるので、.bash_profileと.bash_logoutが実行されず、ホームディレクトリのファイルをtmpfsに逃がす仕掛けがうまく働きません。
これを解決するため、pam-scriptでセッション開始/終了時にスクリプトをフックさせることにします。

まずはインストール。

pam-scriptはユーザー認証処理の特定のタイミングでスクリプトをフックする仕組みです。
/usr/share/libpam-scriptに既定のファイル名のスクリプトを置くことで、セッション開始/終了時に任意の処理を噛ませることができます。
また、bashでもLightDMでも同じように動作してくれます。
 

スクリプト作成

 
セッション開始時に実行されるスクリプト/usr/share/libpam-script/pam_script_ses_openを新規作成します。

セッション終了時に実行されるスクリプトは/usr/share/libpam-script/pam_script_ses_closeです。

pam-scriptはリブート、シャットダウン時の面倒は見てくれないので、まとめて/homeに書き戻すスクリプトwritebackhomeを新規作成します。

これらのスクリプトは、スクリプトtemporizeから若干変更しました。
ユーザー名を$USERではなく$PAM_USERで受け取っていること、ホームディレクトリが存在するか確認している、退避するファイル名を別ファイルに追い出している、ファイルだけでなくディレクトリにも対応、などの変更を加えています。

退避するファイル名は/usr/share/libpam-script/temporize.listに記述します。

 

古い処理の削除と修正

 
.bash_profileからスクリプトの呼び出しを削除します。

.bash_logoutからもスクリプトの呼び出しを削除します。

/etc/init.d/transientlogからtemporizeに代えてwritebackhomeを実行させます。

ここでは分かりやすくするためにコメントアウトしていますが、行削除で構いません。

使わなくなったスクリプトは削除しておきます。

RPi2でubuntu14.04LTS(6)ディスプレイマネージャーでログイン

0
LightDMインストール

ディスプレイマネージャーは、いわゆるグラフィカルログインのインターフェースです。
最初にSLiMを入れようと思ったところ、プロジェクトHPが繋がらず、ArchLinuxのWikiによればSLiMは活動を停止しているとのことでした。
そこでQingyを試してみると、KMSと干渉して動作しません。
というわけで、普通にLightDMを使うことにします。ツールキットはGTKを使います。

いきなりlightdmパッケージをインストールすると、大量の依存パッケージもインストールされてしまいます。
先にlightdm-gtk-greeterをインストールすることで、最低限のパッケージだけをインストールします。
 

設定

/etc/lightdm/lightdm-gtk-greeter-ubuntu.confを編集してテーマをCrunchBang!風にします。

次に/etc/lightdm/lightdm.confを新規作成してログインダイアログを設定します。

この例では、ユーザー名ドロップダウンを非表示、ゲストログインを不可にしています。

RPi2でubuntu14.04LTS(5)CrunchBang!風にしてみる

0
CrunchBang!とPiBang!

CrunchBang!はモノクロのスパルタンなデザインが人気のLinuxディストリビューションで、これにインスパイアされてRaspberryPi向けにPiBang!というディストリビューションが公開されていました。
CPUパワーが向上したRaspberryPi2ではPiBang!がより快適に動作すると期待されますが、PiBang!のRaspberryPi2版はいまのところアナウンスが無いようです。

ということで、自分で作ってみることにしました。
リソースはCrunchBang!のリポジトリから拝借します。
 

壁紙とテーマを追加

ubuntuリポジトリからgtk2-engines-murrine、CrunchBang!リポジトリからcrunchbang-wallpapersとwaldorf-ui-themeをダウンロードしてインストールします。

テーマが使用するliberationフォントをインストールします。

  • テーマ設定
    ObConf(右クリック→ObConf)でWaldorfテーマを選択
  • 壁紙設定
    Nitrogen(右クリック→Wallpaper)でPreferencesを開いてAdd(参照先ディレクトリ追加)。
    /usr/share/backgroundsを追加。
    default-tile.pngを選択。

 

dmenuインストール

dmenuはsuckless-toolsパッケージに入っています。

起動スクリプトを~/config/dmenu/dmenu-bind.shに新規作成します。

 

CrunchBang!の設定ファイルを取得

CrunchBang!リポジトリからcb-configsのtarボールをダウンロードして展開します。

 

OpenBoxの設定

~/.config/openbox/rc.xmlを~/.config/openbox/~rc.xmlにリネーム。
CrunchBang!のcb-configs-20130504/skel/.config/openbox/rc.xmlを~/.config/openboxにコピー。

~/.config/openbox/rc.xmlの下のブロックを、~/.config/openbox/~rc.xmlの内容で置き換える。

 

tint2設定

CrunchBang!のcb-configs-20130504/skel/.config/tint2/tint2rcを~/.config/tint2にコピー。

 

conky設定

CrunchBang!のcb-configs-20130504/skel/.conkyrcを~にコピー。

SYSTEM INFOからスワップ表示を削除してCPU周波数を追加、SHORTCUT KEYSからアサインされていない表示を削除します。

 

アイコンテーマ

ubuntuリポジトリからdmz-cursor-themeを、CrunchBang!からgnome-icon-theme、crunchbang-icon-themeをインストールします。

cb-configs-20130504/skel/.gtk2rc-2.0を~にコピー。
cb-configs-20130504/skel/.config/gtk-3.0/settings.iniを~/.config/gtk-3.0にコピー。

ページのトップへ