アーカイブ

Archive for 2014年2月

xfreerdpでwindowsに繋いだ時のキーボードの挙動

xfreerdpを使ってwindows環境に繋いだ時に、キーボードの設定が妙になることがあります。

大前提:windowsのキーマップ
windowsのキーマップは(再接続ではなく)ログインしたときのキーボードで決まります。
そのあと何度切断→再接続しても固定されたままです。一度ログアウトしないと駄目です。

パターン1: usキーボード扱いになる
最初のログインをそのままのxfreerdpで行うとそのあとずっとusキーボード扱いになります。
脳内互換レイヤを使えばなんとかなりますが、接続元のfedoraと往復していると混乱不可避。

パターン2: jpキーボード扱いになるが、\と|が効かなくなる
最初のログインをjp106のwindowsからやった後無指定のxfreerdpでつないだり、xfreerdpに-k jpを指定した場合にこの挙動を起こします。
どうやらxfreerdp1.0.2の問題のようで、1.1.0-beta2では解消しています。
ちなみに、聞かなくなるのはBSの左にある\と|で、R_SHIFTの左にある\と_は普通に使えます。
パイプ記号が使えなくなるのは命にかかわるので、なんとか打開します。

打開策:freerdp1.1.0-beta2をソースから入れます。
困ったことに、バグが治ったバージョンはbetaしかないのでrpmがありません。依存関係をそろえて手動でビルド、インストールします。
ビルドの仕方についてはこのへん参照
ffmpeg-develを要求されているので事前にrpmfusionを使えるように設定しないと駄目な気がします。(ffmpegなしでのビルド未検証)

freerdp-1.1.0ではパラメータの指定方法が変わっています。新しい形式はwindowsくさい/を使ったオプション指定になりました。
xfreerdp -decorations /v:flamara /u:renda /network:lan /size:1920×1200

freerdp-1.0.2以前の方法で渡すとWARNING: Using deprecated command-line interface!と出てきて、互換オプションを表示してくれますが、
-xを指定している場合の表示にバグがあるようで、/network broadbandとか出ます。正しくは/network:lanとか/network:broadbandのように、スペースではなくコロンが入ります。

余談:RDP接続した状態でログアウトする方法@windows8.1
コマンドプロンプトを開いてshutdown /l

追記: Fedora20ではfreerdp-1.1.0-beta2のビルドに失敗します。「フィールド ‘codec_id’ が不完全型を持っています」とか「‘AVCodecContext’ は ‘dsp_mask’ という名前のメンバを持っていません」とか言われたらこれです。
これはffmpegのバージョンアップに伴って一部構造体名やパラメータ名が変わったことによるものです。
あまり使いたくないですが、gitでmasterをcloneしてきてビルドすれば通ります。

さらに追記: Fedora21ではfreerdp-1.1.0ベースになるようです。Fedora21のリポジトリからsrpmを取得、rpmbuild –rebuildでパッケージを作りなおしてやることで簡単にインストールできました。

カテゴリー:GNU/Linux

Fedoraでfstabに書いてあるNFSのディレクトリが起動時にマウントされない

Fedora、というかsystemdとNetworkManagerを組み合わせている場合、のようです。
fstabに記述されたNFSのディレクトリが起動時にマウント失敗し、起動後に手動でマウント処理をかけると正常にマウントされます。
本件はすでにRedHatのBugzillaにも上がっており、ワークアラウンドが公開されています。
とりあえず、マウントオプション欄にcomment=systemd.automountと書いて、マウントされるタイミングを最初のアクセス時にずらすことによって解消できる、というのが暫定の対策です。

どうも、systemdが、NFSをマウントするのは「NetworkManagerが起動した後」であればいつでもよいと考えていることが原因のようです。
(実際にはNetworkManagerが起動し、インターフェイスが上がってIPアドレスが割り当てられるまで待機する必要があります)

この現象はNFSマウントに使うインターフェイスがDHCPを使用している場合限定で起こるのではないかと予想しています。
そのうち同一環境でstaticの場合とdhcpの場合にわけて検証し、結果を書く予定です。

カテゴリー:GNU/Linux