2014年4月15日火曜日

Fedora on T440s


このエントリーをはてなブックマークに追加


メイン機としていたT440sが半死状態になりました。


OS起動時に高確率でHDD(標準搭載のSAMSUNG MZ7TD256)を認識しません。特に再起動時に高確率で発生します。通常起動した際も最初のブートローダーの立ち上がり前に1~2分待たされてしまいます。
T440sはスペック的にかなりのお気に入りなのですが、ThinkPadとは思えない品質の悪さです。

今回はSSDの不良っぽく、検索してみるとHDD交換になる可能性が高そうなので、eService(Lenovoのサポートリクエスト窓口)に修理依頼をしつつ、手元からなくなる前にFedoraをインストールして遊んでみることにします。

T440sのスペックは以下です。

 ・Windows8.1 64bit
 ・Core-i5 4200U
 ・8GB memory
 ・T440s 14.0FHD WWAN(1920x1080 none touch panel)
 ・Wireless LAN: Intel 7260 BT BGN
 ・720p HD Camera
 ・NVIDIA Geforce GT 730M(Optimus)
 ・指紋センサー
 ・UEFI+Secure Boot(デフォルト)

nVidia Optimus と 指紋センサーはFedora20では認識されません。T440sをLinux機として使いたい人はこの二つをつける必要はないと思います。内蔵のIntel統合ビデオチップでも十分な性能です。


デュアルブート(Win8.1 & Fedora20) + UEFI + Secure boot

Win8.1/T440sは標準の状態で以下のようなパーティション状態になっています。Win8の場合は、末尾の回復パーティション、OEMパーティションが存在していません。GPT形式です。


Windows標準ツールでは表示されませんが、実際はMSRパーティションというものがあり、こんな感じになっています。

 1. 回復パーティション
 2. EFIパーティション
 3. MSRパーティション
 4. 標準パーティション ← Windowsの本体はここ
 5. 回復パーティション
 6. OEMパーティション

デュアルブート構成する場合は、4つ目標準パーティションを縮小して空き領域を作ります。縮小はWindowsの管理ツールから行えます。リカバリメディアを作成 or 手配している場合は回復パーティションとOEMパーティションは削除しても問題ありません。削除は diskpart コマンドを使います。


Fedora20をインストールするときは / のみ作成し、既存のEFIパーティションを /boot/efi へマウントするように設定します。/boot や swap はあってもなくてもいいです。既存パーティションは再初期化しないように注意してください。

GrubからWindowsをブートする方法は上手くいきませんでした。ですがUEFIの場合は、UEFIブートローダーからOSを選択できます。UEFIでは、EFIパーティションに配置されているブートイメージを登録することで、起動するOSを選択できるようになります。

登録されている情報を操作するには、Linux から efibootmgr コマンドを利用します。


シングルブート(Fedora20) + UEFI + Secure boot

特筆すべきことはありません。EFIパーティションを作成して、/boot/efi にマウントするだけで後は普通のインストールと変わりません。


シングルブート(Fedora20) + Legacy Boot

BIOSの設定で、Secure Boot を OFF にする事で、Legacy Bootモードに変更できるようになります。このモードではEFIパーティションは不要で、従来のように /boot からカーネルを起動するようになります。

Linuxオンリーで使う場合はこのモードが一番扱いやすいと思います。Linuxの場合は高速スタートアップも利かないので、UEFIもレガシーブートも起動速度に差はほとんど無いように感じました。


2014年4月2日水曜日

Fedora 19/20 上にリモート開発環境(xrdp & LXDE)を整える


このエントリーをはてなブックマークに追加


リモート作業はいろいろな手法がありますが、これは以下の状況を想定しています。

* 作業端末はWindowsを使わざるを得ない。
* 開発物の連携対象がリモートにあり、開発環境は近い場所に置きたい。
* 開発環境はLinuxじゃないと無理。
* どうしてもXが起動したい(軟弱
* 接続先の回線が細い。

  → xrdp & LXDE

xrdpを使うのは、Windows側に特別なクライアントが必要ないことと、X接続やVNC、Spiceに比べて操作が軽快です。
LXDEはいわずと知れた軽量デスクトップです。xrdp経由だとリッチなエフェクトを備えたGNOME3はオーバースペックすぎます。



まず必要なソフトウェアをインストールしますが全部標準リポジトリに含まれていますので簡単です。

$ sudo yum install xrdp
$ LANG=C yum groupinstall "LXDE Desktop"


xrdpには日本語キーマップファイルが含まれていませんので このリンク先 からkm-xxxxx.ini ファイルを取得します。
取得したファイルを以下の名前で /etc/xrdp 以下へコピーしておきます(同じファイルを違う名前で4つ配置します
km-0411.ini
km-e0010411.ini
km-e0200411.ini
km-e0210411.ini

xrdpサービスを起動しつつ、3389ポートを開けます。
$ sudo systemctl start xrdp.service
$ sudo systemctl enable xrdp.service
$ sudo firewall-cmd --add-port=3389/tcp --permanent

これでWindowsからリモートデスクトップで接続する事が出来るようになりました。
しかしこのままではGNOME3が起動してしまいます。

検索してみると /etc/xrdp/startwm.sh を次のように書きかえる、というのが見つかりますが、Fedoraの場合上手くいきませんでした。
SESSIONS="gnome-session blackbox fluxbox startxfce4 startkde xterm"
↓
SESSIONS="lxsession gnome-session blackbox fluxbox startxfce4 startkde xterm"

原因は、startvm.sh → (ファイルがあれば)/etc/X11/xinit/xinitrc → (ファイルがあれば)/etc/X11/xinit/Xclients という順序でファイルが呼び出されていきますが、最後の /etc/X11/xinit/Xclients が呼ばれると、どんな設定になっていても GNOME3 or KDE のどちらかが起動するようになっています。

このファイルを書き換えてもいいのですが、パッケージに含まれるファイルを編集してしまうとアップデート時の対応が面倒になるので、今回は以下で対処しました。
$ cp /etc/lxdm/Xsession ~/.Xclients

/etc/lxdm/Xsession にはLXDEを起動するためのスクリプトが含まれており、本来はコンソールのログインマネージャから呼ばれます。これをホームディレクトリに、.Xclients という名前でコピーしておくと、 /etc/X11/xinit/xinitrc の中からこのスクリプトが呼び出されるようになり、LXDEが起動できるようになります。

やめたいときはこのファイルを削除するればOKです。



(参考)km-xxxx の中身