Raspberry Pi

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にコピー。

RPi2でubuntu14.04LTS(4)x-window

0
インストール

まずx-windowをインストールします。

インストールが完了したら/etc/X11/xorg.confを新規作成します。

ウインドウマネージャーはOpenBoxを使用します。

デスクトップはCrunch Bang!(PiBang!)に倣って軽量のアプリケーションでまとめることにします。

  • パネル tinit2
  • 監視ツール conky
  • ランチャ gmrun
  • ターミナル lxterminal
  • ファイルマネージャ spacefm
  • 壁紙 hsetroot nitrogen/li>

設定

OpenBox開始時の設定

OpenBox開始時にtintとconkyが起動するように設定を行います。
デフォルトの設定ファイルが/etc/xdg/openboxにあるので、これを~/.config/openboxにコピーします。

~/.config/openbox/autostartの末尾に設定を記述します。

19行はキーリピートの設定、20行はspacefmをデーモンモードで起動しています。
startxすると画面下にtint2、左上にconkyが表示されます。

conkyのチラつき対策

conkyはデフォルト設定のままでは表示がチラつくので、これを解消するため、/etc/conky/conky.confに「double_buffer yes」を追加します。

OpenBoxメニュー

インストールしたアプリケーションをOpenBoxのメニューに追加します。

ショートカットキー

OpenBoxのショートカットキーバインドを設定します。
~/.config/openbox/rc.xmlのから下を変更します。

上記の変更では以下のショートカットを追加しました。

  • Alt+F2 ランチャ
  • Super+f ファイルマネージャ
  • Super+t ターミナル
  • Super+x ログアウト
  • Super+Tab メインメニュー
  • Super+Space デスクトップとウィンドウの一覧

RPi2でubuntu14.04LTS(3)タイムゾーン、キーボード、ロケール設定

0
タイムゾーンとキーボード

タイムゾーンの設定はdpkg-reconfigureから行います。

日本語キーボードを使っている場合は、同様にdpkg-reconfigureから設定します。

Keyboard modelはGeneric 105-key (Intl) PC、Country of origin for the keyboardはJapaneseを選択、そのほかはデフォルトのままで良いでしょう。

ロケール変更

ロケールを生成するlocale-genは、/var/lib/locales/supported.d下のファイルを参照します。
デフォルトでは英語ロケールのenファイルのみが存在します。このファイルを編集して、不要なロケールをコメントアウトしておきます。

通常はen_US.UTF-8だけで良いでしょう。

日本語ロケールを追加してロケールを変更します。
この作業はローカルコンソールで行います。SSH接続はクライアントのロケール情報が送信されるため、うまく行きません。

時刻表示とメッセージは(ローカルコンソールで日本語表示が文字化けするので)POSIXにしておきます。

一旦ログアウトしてログインし直すと、ロケールが日本語になっています。

RPi2でubuntu14.04LTS(2)SDを延命

0
tmpfsを使う

SDへの書き込み回数を減らすため、テンポラリディレクトリをtmpfsにマウントするよう/etc/fstabを変更します。
対象とするのは/tmp、/var/tmpです。

後ろの2行が追加した部分です。
 

logをtmpfsに置いてバックアップ

/var/logもtmpfsに持っていきたいところですが、logはあとで参照したい場合がありますね。
スクリプトを使ってシャットダウン時にSDにバックアップしておき、起動時にtmpfsに戻せないかと考えていたところ、denian向けにちょうど良いスクリプトがありましたので、これを利用することにします。
このページから-etc-init.d-transientlog.shをダウンロードしてファイル名transientlogで保存します。
transientlogを/etc/init.dに配置し、パーミッションを設定します。

ファイルの改行コードがCR+LFなので、trコマンドでCRを削除しながらコピーしています。

このあとにinsservコマンドでスクリプトを登録するのですが、「Required-Startが無い」「Required-Stopが無い」と言ってエラーになるので、Providesの後に記述しておきます。

insservで登録します。

 

ホームディレクトリのファイル

~/.bash_historyなどもtmpfsに持って行きましょう。
bashスクリプト/usr/local/bin/temporizeを新規作成します。

temporize loginとして実行すると、~/.bash_history、~/.Xauthority、~/.xsession-errorsを/tmp/$USERにコピーし、ホームディレクトリからリンクを張ります。
temporize logoutではリンクを削除して/tmp/$USERからホームディレクトリに書き戻します。
シャットダウンやリブートするときは、temporize shutdownで/tmpからすべてのユーザーのファイルを書き戻します。

ログイン時にtemporize loginを実行するように~/.bash_profileを編集します。

~/.bash_logoutにはtemporize logoutの処理を追記します。

シャットダウンとリブート時にはtemporize shutdownを実行するように、/etc/init.d/transientlogを編集します。

 

キャッシュ間隔を長くする

デフォルトではメモリキャッシュの書き込みは5秒間隔となっています。
これを30秒に設定します。/etc/sysctrl.confの末尾に以下の行を追加します。

 

mlocateを削除

cron.dailyでmlocate(ファイル検索)のデータベースが更新されています。
私はmlocateを使わないので、パッケージごと削除してしまいます。

RPi2でubuntu14.04LTS(1)インストール

0

RaspberryPi2にubuntuをインストールしてみます。

OSイメージはubuntuのwikiで公開されているコミュニティ版を使用します。

イメージ書き込み

ZIPファイルにはimgとbmapがアーカイブされています。ddまたはbmapでSDにイメージを書き込みます。

または

書き込みが完了したらSDをraspiに挿してブートします。ユーザー、PWはともに”ubuntu”です。

領域拡張

raspbianのraspi-configにあたる設定ツールが無いので、ディスク領域拡張は手作業で行います。
まず、fdiskを起動して、パーティション2を最大領域に作り直します。

第2パーティションを削除(d,2)して、新規で再度作成(n,p,enter,enter,enter)、セーブして終了(w)。
ここで一旦リブートします。

再度ログインしたらパーティション2をリサイズします。

アップデート

アップデートをかけてOSを最新の状態にしておきましょう。

これで最小構成のubuntuが使えるようになりました。

ページのトップへ