17 Jan 2018, 15:13

UbuntuでWake on Lanするための設定メモ

はじめに

自宅のパソコンのwifi接続がどうも不安定で、たまに接続が切れる。そういうときは、USBのwifi子機を抜き差しすると復旧するのだけれども、今日は外出中にいきなり接続できなくなった(T_T)

そんな非常事態に備えて、外出中にパソコンを再起動して復旧を試みるために、Wake on Lan の設定をしたので、今日はそのメモです。

環境

  • Ubuntu 16.04

設定メモ

BIOS設定

BIOSの設定が必要。ここは省略。。なのだが、ここがわからずいろいろな設定を試した挙句、最後にBIOS初期化して、4時間かかった。

OS設定

wol設定の確認/変更に必要なethtoolを入れる。

$ sudo apt install ethtool

NICの名前を確認して、ethtoolを叩く。Wake-on: d で Wake on Lanが無効状態。 Wake-on: gで有効状態。

$ ifconfig
$ sudo ethtool enx343dc4787303
Settings for enx343dc4787303:
No data available

おりょ??なにも表示されない。おばかな頭で考えること数十分、どうやら無線LANでは Wake on Lan ができないという根本的なことに気づいたのたった!!

NICは通電している必要があるのだけれども、無線LANの子機はUSBでPCに刺さっているのだから、PCの電源が落ちれば電力供給されなくなって、動かなくなる。バカダー。

無線 Lan でも Wake on Lanしたい

無線Lan でも Wake on Lanしたい。調べると、イーサネットコンバーターというものがあり、これを購入し、有線をパソコンと コンバーターでむすぶと、あたかもその繋いだPCが物理LANでつながれているようにルータから見えるというもの。

以下をamazonでget.

NICの名前を確認して、ethtoolを叩く。今度こそ・・・

$ ifconfig
$ sudo ethtool enp0s31f6
 Settings for enp0s31f6:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 100Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: on (auto)
    Supports Wake-on: pumbg
    Wake-on: g
    Current message level: 0x00000007 (7)
                   drv probe link
    Link detected: yes

Wake-on: g となっていました。これでOSレベルでの設定ができていることになります。

ifconfigを叩いて、MAC アドレスを調べておく。

クライアントPCに wakeonlanのツールをインストール

クライアントPCにwakeonlanのツールを入れる。

$ sudo apt install wakeonlan

そして、いよいよ、Wake on Lanを実行、電源が入りました!

$ wakeonlan <Mac Address>

外出先から Wake on Lanしたい

外出先から、wake on lanをすることで、PCを起動したい。我が家はソフトバンク光を契約していて、ルータもレンタルなのでルータに port forwardingの設定をすればいけると思っていた。。。

しかし、あらゆる手段を試したのだが、できない!!

ここまでか・・・と思ったが、いろいろ情報収集をすると、どうやらRaspberry pi から wake on lanを実行する事例がいくつかあった。うちには、raspberry pi はないのだけれども、ほこりにまみれたロボコンマシンがあったのだった。こんなの↓

このボロットにsshで乗り込んで、プライベートネットワークからwake on lan を実行すればいけるのでは?

以前の設定メモを元に、sshで乗り込んで実行してみたところ、成功!

やったー。

16 Jan 2018, 14:29

BIOS 初期化で PC起動しなくなった。原因はCSM設定

はじめに

Wake on Lan の設定をしようと思っていて、BIOSの設定をいろいろいじっていたのだけれども、よくわかんなくなってきたので、BIOS初期化をしたら、PCがBIOS画面から立ち上がらなくなった。

なん・・だと・・・??

Boot Device Not Found

いろいろ調べてみると、Boot Deviceがまったくなくなっているではないですか!

起動順序を入れ替え変えようにも、デバイスがないので、切り替えられない。試しに、USBを刺しこんでみると、USBを認識して表示はされるのだけれども、それをブートしようとはしない。

つんだ・・・。涙が出てきた。泣きじゃくった。と、そこへ!

CSMの設定という光が

どうも、CSMという設定を有効にするとよいという記事を見つけた。

引用しますと、

“UEFI BIOS“とは新しいBIOSの仕様。

以前の”レガシーBIOS”と比べると操作性の良さやセキュリティーの高さ、高速ブートなどの利点があります。

そんなUEFI BIOSですが、接続したCD・DVD・HDDドライブがBIOS上から認識しないというトラブルの相談をよく受け付けます。― 正確には、デバイスとして認識するものの、ブートディスク(起動ディスクのこと)として選択できないというトラブルです。

ということで、UEFI BIOSという新しいBIOSの使用が私の邪魔をしているようだ。

CSMとは

CSMとは Compatibility Supported Module の略です。つまり、レガシーなBIOS、レガシーな周辺機器やドライバ、レガシーなOSとの互換性を保つための設定。

ということで、これが有効になると、レガシーな部品との互換性が回復してつかえるようになる。なにが原因かわからないのだけれども、ブートローダあたりが壊れてしまったのだろうか?

とはいえ、無事に復旧することができました。めでたしめでたし。

14 Jan 2018, 05:38

x2goを使ってUbuntuでリモートデスクトップする

はじめに

この前から、Pythonのコードを書く際に、Jupyter NotebookではなくてPycharmを使おうかと思い、調べていた。どうも、PyCharmのProfessional Editionには、リモートデバッグ機能があって、サーバ上にあるインタプリタを実行できるようだ。これは便利。たとえば、例としてAWS上で動いているPythonと通信して、ローカルでデバックできたりする。

このリモートデバッグ機能と前回紹介した、Scientific Modeで 心は Professional Editionに課金しようとしていたのだけれども、もう少し調べてやめた。それは、どうもProfessional EditionでなくCommunity Editionでも 自分がやりたいデバッグができそうだからだ。

それは、サーバ上にリモートデスクトップして、サーバ上でPyCharmを動かすということ。というわけで、Ubuntuでリモートデスクトップをするためのメモ。

環境

  • サーバ、クライアイトともに Ubuntu 16.04 LTS

x2goをつかう

Ubuntu用のリモートデスクトップ用アプリ、X2Goをつかう。

いろいろと、ツールを試してみたのだけれども、x2goが最も安定していたので、これに決めた。

サーバ側にツールをインストール

$ sudo apt-add-repository -y ppa:x2go/stable
$ sudo apt update
$ sudo apt -y install x2goserver x2goserver-xsession

クライアント側にツールをインストール

apt-get install x2goclient

メニューバーから[Session]-[New Session]を選択。以下のように、設定をする。

ポイントは、 Session Type. Ubuntuでは、KDE 、LXDE、XFCEを選択すること。それしか使えないらしい。ジブは、xfceを選択。

以下で、XFCEをインストール。

sudo apt-get install xfce4

これで、X2Goクライアント上でセッションを選択して、ログインするユーザー名とパスワードを入力して[OK]ボタンをクリックすれば、リモートデスクトップ接続ができる。

これで、PyCharmを起動して開発すれば、リモートデバッグをせずとも、サーバ上のリソースが利用できるので、便利。しかし、なぜだかたまにハングするのだけれども。。。

 

追記

LXDEを使ったほうが、xfceよりも圧倒的にさくさく動きました。

sudo apt install -y lubuntu-desktop

12 Jan 2018, 12:09

ASUS ZenScreen MB16ACで快適楽々デュアルディスプレイ

はじめに

新パソコンを買ったのだが、せっかくなのでデュアルディスプレイにしたくなってきた。新パソコンは自宅サーバとして稼働させて普段は、有料自習室で作業することが多いので、モバイルで持ち運べるものを新調したくなった。いろいろ調べたところ、ASUSが一番スペックがよかったので購入した。

縦型に対応していなかった・・・

このASUSを選んだ一番の理由は、縦にサブディスプレイを使いたかったから。自宅も外出先もUbuntuを利用しているので、対応するドライバを入れて利用する必要があるのだけれども、残念ながらドライバが対応していなかった(T_T)。

Rotation is not supported due to missing functionality in the generic modesetting driver

Ubuntu用ドライバ DisplayLinkをインストール

Ubuntuで利用するには、DisplayLinkというドライバをインストールする必要がかある。

これをお手軽に実施するツールがある。

ダウンロードしたスクリプトを実行すると、よしなに関連ライブラリのインストールと設定をしてくれる。

xrandrで設定

デュアルディスプレイ用の設定をしていく。 まずはモニタが認識されているか確認。

$ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x47 cap: 0x9, Source Output, Sink Offload crtcs: 4 outputs: 4 associated providers: 1 name:Intel
Provider 1: id: 0x106 cap: 0x2, Sink Output crtcs: 1 outputs: 1 associated providers: 1 name:modesetting

sourceの設定。

xrandr --setprovideroutputsource 1 0

xrandrでモニタ名を調べる。

$ xrandr
eDP1 connected primary 1600x900+0+0 (normal left inverted right x axis y axis) 309mm x 174mm
DVI-I-1-1 connected (normal left inverted right x axis y axis)

そしていよいよデュアルディスプレイのコマンド投入。

xrandr --output DVI-I-1-1 --auto --right-of eDP1

元に戻すには、

xrandr --output DVI-I-1-1 --off

06 Jan 2018, 12:21

Ubuntu16.04にCUDAとcuDNN入れるまでの設定メモ ~ GPU版xgboost導入まで

はじめに

NVIDIAのGPUつきのパソコンを購入したので、セットアップメモです。

xgboostをGPUで動かすところを最終目標とします。

環境

  • Ubuntu 16.04 LTS
  • CUDA 9.1
  • cuDNN 7.0.5
  • Python 3.6
  • Anaconda 3.5
  • xgboost

NVIDIA GPU環境に必要なツール

なにしろGPUを購入してみたものの、無知なもので、まずはどういう仕組みで動かせるのか調べることにした。NVIDIA GPUを動かすためには以下の2つが必要らしい。

  • NVIDIA CUDA Toolkit ・・・ NVIDIA ドライバーと開発環境
  • cuDNN・・・ディープ・ニューラル・ネットワーク(DNN)ライブラリ

いきなりDockerという手もあるが

いろいろ調べると、サクッとまるっとこれらをインストールする簡単な方法があった。それが、Dockerだ。

nvidia-dockerという Dockerのラッパーツールがある。これを利用すると、以下の引用図のようなアーキテクチャでコンテナを動作させることができる。

dockerをつかうことのいいところは、ディープラーニング用ライブラリごとに環境を用意できるところ。たとえば、Tensorflow, keras, pytorchの3つを使いたい場合、各ツールでサポートしているcuda/cudnnが違うと使えない。dockerを使えば、それぞれのライブラリごとに環境を用意できるのだ。

ただ、途中までインストールをしかけたのだが、dockerに関する知識が乏しく、時間もなかったので、今回は見送った。いつかnvidia-dockerを使いこなす。

NVIDIA CUDA Toolkitのインストール

とりあえず最新が最適化されていて高速だろうという理由から、最新版の9.1をインスールする。Tensorflow1.4は8でないと動かないらしい。以下のリンクにインストール手順がある。

.bashrcを編集してパスを通す。

export PATH=/usr/local/cuda-9.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda

PCを再起動する。再起動後、インストールできたかバージョンを確認する。

$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  384.90  Tue Sep 19 19:17:35 PDT 2017
GCC version:  gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85

NVIDIA cuDNN のインストール

次に cuDNNをインストールする。

cuDNNはNVIDIA で アカウントを作成しないとDownloadできない。wgetもできない。不便。

アンケートに回答後、以下の3つをダウンロードして、サーバにscpで転送。

  • cuDNN v7.0.5 Runtime Library for Ubuntu16.04 (Deb)
  • cuDNN v7.0.5 Developer Library for Ubuntu16.04 (Deb)
  • cuDNN v7.0.5 Code Samples and User Guide for Ubuntu16.04 (Deb)

sudo dpkg -iでインストール。インストールできたかテストしてみる。

$ cp -r /usr/src/cudnn_samples_v7/ ~/tmp/cudnn_samples_v7/
$ cd ~/repo/cudnn_samples_v7/mnistCUDNN
$ make clean && make
$ ./mnistCUDNN
Test passed!

Anaconda環境の導入

データサイエンスのためのよくばりセット、Anacondaを入れる。これを入れればデータ解析のための大抵のツールが手に入る。最新版を落としてきてインストール。

kaggle用の環境をつくる。

$ conda create -n kaggle
$ source activate kaggle

GPU対応 xgboost

GPU対応のxgboostを動かすには、ソースからビルドする。

Pythonモジュールをインストール

$ cd python-package; sudo python setup.py install

GPU版 xgboost めちゃくちゃハヤイ!!

04 Jan 2018, 15:35

自宅のUbuntuサーバに外からsshでアクセスする

自宅に高価なパソコンを購入したので、どうせなら外出先でもアクセスしたい。

なので、外部から自宅サーバにsshする方法を調べて設定してみた。

環境

  • ソフトバンク光 BBユニット
  • Ubuntu 16.04 LTS (サーバもクライアントも)

ssh鍵認証でログインする

第一ステップとして、ローカルネットワーク、つまり自宅内のネットワークでssh接続できることを目指す。パスワード認証ではなくて、ssh鍵認証をする。ハッキングが怖いので。

これは、5年前!に書いた自分の記事が役に立った。整理しつつ、再掲。

サーバ側の設定

サーバ側にssh serverを インストールする。

sudo apt install openssh-server

これでOk.簡単です。次にsshの設定をいじる。 /etc/ssh/sshd_configを管理者権限で編集

sudo nano /etc/ssh/ssh_config

//ルートでのログイン禁止
PermitRootLogin no

//RSA認証の有効化
RSAAuthentication yes

//パスワードによる認証を許可
PasswordAuthentication yes

//空のパスワードは拒否
PermitEmptyPasswords no

//チャレンジレスポンス認証を不許可
ChallengeResponseAuthentication no

設定の反映のために再起動。

systemctl restart sshd

クライアント側の設定

クライアントの設定。といってもsshコマンドはデフォルトで入っている。

// 認証公開鍵の作成
$ ssh-keygen -t rsa

// いくつか質問されるのでEnter連打。

クライアントの公開鍵をサーバに送ります。安全のために、ここではscpコマンドを使うのがよいでしょう。

$ scp ~/.ssh/id_rsa.pub  tsu-nera@XXX.XXX.XXX.XXX:

再びサーバ側の設定

scpで送った鍵を保存する。

$ cat id_rsa.pub >> .ssh/authorized_keys
$ rm id_ras.pub

$ chmod 600 .ssh/authorized_keys

再度、sshd_configの設定を編集.

//パスワードによる認証を許可しない
PasswordAuthentication no

再起動して終了。

sudo systemctl restart sshd

ローカルIPアドレスを固定する

ローカルIPアドレス(プライベートIPアドレス)は、DHCP機能によって自動的に振られるので、これを固定IPアドレスにする。

固定の方法なのだけれども、ここでかなりハマった。以下の記事を参考に/etc/network/interfacesを覗いてみたのだけれども・・・

あれ、Loopbackのnicしかないyo!!

ということで、ここでハマった。いろいろ調べてみると、15.xからここらへんの仕様変更があったようで、名前が記事とは違うらしい。名前どころか、仕組みも違うみたい。詳しくは調べきれていないのだが、Network Managerというserviceに置き換わろうとしていて、そのフロントエンドが nm-appletというアプリだそうだ。

というわけで、nm-appletをいじる。これは、右上のネットワーク接続を示すアプレットのこと。これで、まずは接続情報というところをチェックする。Ipv4の欄の

  • IPアドレス
  • ブロードキャストアドレス
  • サブネットマスク
  • デフォルトゲートウェイ

をチェックしてメモする。そして、接続を編集するを選択して、現在接続中の通信を選択して編集を押す。Ipv4設定を選択し情報を以下のように入力する。

ここでは、192.168.3.5を固定IPアドレスにした。これでIPは固定になるはず(自信ないです。。。)

ssh port を 22から 10022に変更する

ssh は port 22 なのだけれども、これを変更する。ハッカーに攻撃されないようにね。

設定ファイルを開き、下記のように変更する。

$ sudo nano /etc/services

//前
ssh              22/udp     # SSH Remote Login Protocol
ssh              22/tcp     # SSH Remote Login Protocol

//後
ssh              10022/udp     # SSH Remote Login Protocol
ssh              10022/tcp     # SSH Remote Login Protocol

グローバルIPアドレスでアクセス

さあ、ローカルネットワークではこれでssh接続できるようになった。次はグローバルだ。まずは、自分のグローバルIPアドレスを以下から調べる。

ソフトバンク光BBユニットの設定からポート開放設定

自分の家のルータの設定を変更して、上で設定した10022番ポートがホストに回してくれるよう設定する。

  • http://172.16.255.254/ に接続、user/userでログイン
  • 詳細設定を開く -> ポート転送
  • 有効/無効 -> 有効
  • プロトコル -> tcp
  • WAN/LAN側ポート両方 -> 10022-10022
  • 転送先IPアドレス -> 自分のローカルipアドレス

ルーターを再起動する。

No-IPを使ってグローバルIPアドレスを DDNSで追跡する

グローバルIPアドレスは気まぐれで変更されてしまう。なので、変更を追跡してくれるサービスを利用する。DDNS(Dynamic DNS)というらしい。No-IPというサービを利用する。

これに登録して、fox10225fox.ddns.netというドメインを取得した。

最後の仕上げ

以下のコマンドで、アクセスできれば目標達成。

ssh -p 10022 tsu-nera@fox10225fox.ddns.net

ちなみにヘアピンNATに注意

同一ネットワーク内からグローバルIPにアクセスしようとすると、アクセスが失敗する。これは、ヘアピンNATと呼ばれているルーターの仕組みの問題。

ヘアピンNAT対応していないルータをつかっていると、どんなに設定をいじってもアクセスが失敗する(これでとても時間をつかった)

/etc/hostsを編集する方法がネットにたくさん散見された。これで試したところ、うまく行った。

$ sudo /etc/hosts

192.168.3.5 fox10225fox.ddns.net

03 Jan 2018, 06:47

Ubuntu で NVidia ドライバを使っている時の不具合

ドスパラでゲーミングPCガレリア(Galleria)を買ったのだけれども、 Ubuntu16.04をインストールしたら、解像度もへんてこだし、音も出ないしでいろいろ不具合がでた。PCのスペックは前記事の記事を参照。

いろいろ試してみたところ、どうもNVIDIAのドライバがインストールされていないからだった。

コンピュータの検索から、システム設定 > ソフトウェアとアップデートを選択。

追加のドライバータブを選択。NVidia CorporationからNVIDIA binary driverを選択。

これをインストールすれば、解像度もモニターに合うし、音も出る。誰かの助けになれば。

30 Sep 2017, 07:00

[CentOS] IntelliJ IDEA では ibus に不具合があり日本語入力できないのでfcitxをつかおう

はじめに

仕事でVirtualBox上にCentOSを立ち上げてそのなかにIntelliJ IDEAを入れたのだけれども、

なぜか日本語入力ができなかったので、その調査と解決方法について書く。

環境

  • CentOS 7.4
  • IBus 1.5.3
  • fcitx 4.2.8

結論

調べたら、IntelliJ IDEAで IBus 1.5.11 以前のバージョンは不具合があるそうだ。

こんなメッセージが起動時に出る。

IBus prior to 1.5.11 may cause input problems. See IDEA-78860 for details.

おそらく、Jetbeans製のPhpStormやPyCharmでもどうようかと。

stackoverflowの解決方法にしたがって、ibus の最新版をいれたのだがibusがそれでもうまく動かなかった。おかしいな。

fcitxをつかおう

Input Methodは ibusだけではない。fcitxがある!というわけで、ibusをアンインストールしてfcitxをインストールすることにした。

以下、インストール手順です。

参考にしたリンク

fcitxをインストール

$ sudo yum install epel-release
$ sudo yum install -y \
fcitx-data.noarch \
fcitx-devel.x86_64 \
fcitx-gtk2.x86_64 \
fcitx-gtk3.x86_64 \
fcitx-libs.x86_64 \
fcitx-pinyin.x86_64 \
fcitx-qt4.x86_64 \
fcitx-qt5-devel.x86_64 \
fcitx-qt5.x86_64 \
fcitx-qw.x86_64 \
fcitx-table.x86_64 \
fcitx-anthy.x86_64
fcitx.x86_64

$ wget ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/updates/19/x86_64/fcitx-configtool-0.4.7-1.fc19.x86_64.rpm && sudo yum localinstall fcitx-configtool-0.4.7-1.fc19.x86_64.rpm

ibusの削除

$ sudo killall ibus-daemon
$ sudo yum remove ibus

fcitxをシステムのIMに設定

$ gsettings set org.gnome.settings-daemon.plugins.keyboard active false
$ imsettings-swich fcitx

~/.bashrcに追記

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"

インライン入力を有効にする

これで一応はfcitxで IntelliJ IDEAが使えるようになったが、

入力すると、変換候補が下の方に出てきてしまう。インライン入力ができるように設定する。

  • fcitx -> 設定 -> アドオン
  • 拡張のチェックボックスをマーク
  • 検索窓からximを検索。Fcitx XIM Frontendを選択して設定を押す。
  • On The Spotを使うにチェックを入れ「OK」を押す

おわりに

解決方法に至るまでに6時間かかった。

ニッチなトラブルシューティングだけれども、同じように困っている人の助けになれば幸いです。

22 Aug 2017, 11:38

LPICの勉強のやる気がおきない

はじめに

LPIC L2 の勉強をしているのだけれども、どうもやる気が起きない。

なぜやる気が起きないのか分解してみた。

モチベーションが上がらない理由

会社からの強制で資格を取らされる

自分は取りたいと思っていないのに、会社から強制的に資格取得を目標にされて、

受験させられる。これがまずモチベーションが上がらない最もな理由だ。

自発的にではなく、強制的に受験の勉強をしなければいけない。

5年で資格が失効する

LIPCの資格は5年経ったら失効してしまう。

LPICの資格を保持し続けるには、5年ごとに高い受験料を払って受験しないといけない。

そういうビジネスモデルが腹立たしい。

ググればわかる

自分はLinuxが好きで、もちろん普段からUbuntuを使っている。

過去には、CentOS, Linux Mint, Arch Linuxを使って、今はUbuntuに落ち着いている。

ArchLinuxを使っていた時は、ArchWikiという素晴らしい情報源があった。

わからないことは、ほとんどそこを見れば解決方法が見つかった。

またそうでなくても、必要になったらググッてコマンドを見つけてインストールして使った。

障害でハマった時は、昼夜潰して情報をあさって解決した。

クリーンインストールもなんどもした。

そうやって、苦労してググった知識のみが結局身につくのではないかと思う。

紙面上で暗記した知識はすぐ忘れる。

LPICで問われる嫌な問題の一つは、オプションの種類についてだ。

わからなければ、zshやfishならばタブを押すだけで説明がでるし、

そうでなくてもhelpでしらべればわかることだ。

それを暗記しなければいけない。これが嫌だ。

すぐ忘れる

L2ともなると、サーバ管理系のコマンドがたくさんでてくるけれども、

サーバ管理者でもないので、使わないコマンドがほとんど。

いつになったら役に立つのかわからない。

サーバ開発やサーバ管理をしているわけでもないので、覚えた知識は使わない。

使わないと、忘れてしまう。歴史や地理の暗記と同じ。

テスト前に丸暗記した知識は忘れてしまう。

おわりに

批判ばかりなので、最後は肯定的に締めよう。

自分は井の中の蛙で、LPICの意義が見えていないだけかもしれない。

実は、将来長い目でみれば役に立つのかもしれない。

将来の自分がこの文章を読んで、過去の自分をビンタするかもしれない。

しっかりするんだ!!

資格を持っているから、Linux開発の仕事にアサインされたり、

部内のサーバ管理者に任命されたり、

自宅サーバを立てるときにやくにたてばいいなと思う。

29 Jul 2017, 06:53

Linuxの親指シフトでMozcが使える!oyainputが公開された・・・感動

Linuxの親指シフターにとって、感動的なソフトを発見してしまった。oyainput というソフト。

今までLinuxで親指シフトを利用しようとするときは、Anthyというあまり賢くないIMEを使うしかなかった。Google日本語入力のオープンソースであるMozcがつかえればいいのだが、これが今まで使えなかった。

それが、oyainputをつかうと、IMに Mozcを指定することができるのだ!これは感動的だ。感謝!!!

起動の不具合と解決方法2点

しかし、使おうとすると問題が発生。なんとか解決したのでメモ。

起動するとxmodmapの設定が無効になる

Linuxのキーボードのキーマップ(CtrlをCapsLockに割り当てるなど)を変更するために、xmodmapを利用しているのだけれども、その設定が oyainputを起動すると無効になってしまう。

なので、oyainputを叩いたあとに、

xmodmap ~/.xmodmap

を叩きなおすと、再度有効になった。ちょっと焦る。

起動するとキーボードが2つ検出される

multiple keyboard is detected.というメッセージがでる。Logicoolの BlueThoothマウスをつかっているのだが、これがキーボードとして認識されてしまう。なんとかしようとソースコードを調査。以下のコマンドを叩いて、キーボードを調べているようだ。

$ grep -E 'Name=|Handlers|EV=' /proc/bus/input/devices| grep -B2 'EV=1[02]001[3Ff]'
N: Name="AT Translated Set 2 keyboard"
H: Handlers=sysrq kbd event3 leds
B: EV=120013
--
N: Name="Logitech MX Anywhere 2"
H: Handlers=sysrq kbd mouse0 event5 leds
B: EV=12001f

なるほど、2つ現れる。ソースでは、正規表現でEV=120013,12001F,12001fの三種類をキーボードとして認識しているようだ。その部分を、120013のみ認識するように書き換えてコンパイル。

これはあまりよくない解決方法だけれども、これでmultiple keyboard is detectedというメッセージはでなくなった。

最後に自動起動設定

~/.profileに以下の二行を追加。

oyainput &
xmodmap ~/.Xmodmap

これで、立ち上がり時に自動起動するようになった。