2018/02/16

WSLのgccを7.2にする。

WSL(Windows Subusystem for Linux)でdistccにスレーブとして参加させるためにgccのバージョンを上げました。

2018/2/16現在のWSLのバージョンはUbuntu16.04です。デフォルトでインストールされているgccバージョンは5.4のため、Ubuntu17.10と組み合わせる場合はgcc7.2をインストールする必要があります。

その際の手順を紹介します。

ビルドに必要なパッケージをインストール


build-essentialをインストールします。
sudo apt-get install build-essential


gccをビルド


①ソースをダウンロードして解凍
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-7.2.0/gcc-7.2.0.tar.xz
tar xvf gcc-7.2.0.tar.xz


②ビルドの準備。
cd gcc-7.2.0
contrib/download_prerequisites
./configure -v --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --prefix=/usr/local/gcc-7.2 --enable-checking=release --enable-languages=c,c++,fortran --disable-multilib --program-suffix=-7.2

③makeしてインストール。
makeは30分以上かかるので、PCのコア数に合わせてjob数を調整しましょう。私の場合は2コア2スレッドなので4を指定します。
make -j 4
sudo make install
make -j 4
④パスを追加
.bashrcにパスを追加します。
cd ~
echo 'export PATH=/usr/local/gcc-7.2/bin:$PATH' >> .bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/gcc-7.2/lib64:$LD_LIBRARY_PATH' >> .bashrc
source .bashrc

gccの複数バージョンを切り替えられるようにする。


このままだとデフォルトのバージョンはまだ5.4のままです。7.2と切り替えられるようにしましょう。
update-alternativesというコマンドを使用します。
①alternativesの登録
以下のコマンドを実行します。
sudo update-alternatives --install /usr/bin/gcc gcc /usr/local/gcc-7.2/bin/gcc-7.2 72 --slave /usr/bin/g++ g++ /usr/local/gcc-7.2/bin/g++-7.2 --slave /usr/bin/gcov gcov /usr/local/gcc-7.2/bin/gcov-7.2
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50 --slave /usr/bin/g++ g++ /usr/bin/g++-5 --slave /usr/bin/gcov gcov /usr/bin/gcov-5

★優先度★上記の72と50というのは自動で選択した場合の優先度を指定します(数字を指定)。大きい方が優先されます。
②使うバージョンの選択
sudo update-alternatives --config gcc

下記のように表示されるので自分が使うバージョンに「*」が付いているか確認します。(付いていなければ選択肢の番号を入力すると切替ができます。)
alternative gcc (/usr/bin/gcc を提供) には 2 個の選択肢があります。

選択肢 パス 優先度 状態
------------------------------------------------------------
* 0 /usr/local/gcc-7.2/bin/gcc-7.2 72 自動モード
1 /usr/bin/gcc-5 50 手動モード
2 /usr/local/gcc-7.3/bin/gcc-7.2 72 手動モード

現在の選択 [*] を保持するには 、さもなければ選択肢の番号のキーを押してください:


③バージョンの確認
gcc --version

を実行して下記のように表示されれば切替できています。
gcc (GCC) 7.2.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


補足distcc


distccの設定はこちらの記事を見てください。
2018/02/10

【DG-STK4】スティックPCを買ってみた。

2018/1/19にDosparaから発売されたスティックPCDiginnos Stick DG-STK4が気になったので購入してみました。

購入の決め手は以下の5つ
①冷却ファンがついている
②microSDXCが使える。
③USB3.0が使える。
④電源が5VのmicroUSBコネクタ
⑤CPUがAtom x5-8350なので恐らくUEFIは64bit

eMMCが32GBと少ないのが残念ですが、¥14,800という値段と用途を限れば問題ないので気にしません。(`・ω・´)

用途はネットと動画視聴、メールぐらいです。

Diginnos Stick DG-STK4

開封の儀

①iPhoneみたいなお洒落な箱です。
20180209_1280_0001.jpg

②付属品は以下の4つ
・本体
・ACアダプター(5V 3000mA)
・HDMI延長ケーブル
・マニュアル
20180209_1280_0004.jpg

③右側には以下の2つ
・microSDスロット
・給電用のmicroUSBコネクタ
20180209_1280_0005.jpg

④左側には以下の2つ
・フルサイズのUSB3.0コネクタ
・フルサイズのUSB2.0コネクタ
20180209_1280_0007.jpg

⑤重さは66g
ACアダプタ(114g)とHDMIケーブル(30g)を合わせると210gです。
20180209_1280_0009.jpg

使用3日の感想

購入時に入っていたWindowsHomeのバージョンは1709(16299.98)でした。FallCreatorsUpdateですね。
アップデート作業が完了するまで大体2~3hです。

静かな部屋だとファンの音(径が小さいのでキーンという高い音)がちょっと気になりますが、これはスティックPCの完成系としてしょうがないです。なるべくモニターの真後ろに位置するように置きましょう。
その代わり、小さい割によく冷えます。(室温20℃の環境でCPU温度はピーク時は69℃)

ターボブーストの最大1.92GHzというのはあまり期待しない方がいいですが、ピーク時は1.68GHzで安定して頑張っています。熱暴走して非常に遅くなるということはありません。

体感はAtomZ3740(1.33GHz~1.86GHz)なタブレットPCより少し速いです。艦これも一切もたつくことなくプレイ可能(`・ω・´) 

動画再生

●Youtube
720pはスムーズに再生されます。ネットワークの帯域にも依存しますが、11a接続(150Mbps)で1080pは少し厳しい感じがします。

●ローカル
ローカルに置いたFHD1080pの動画(mp4)はスムーズに再生されます。CPU負荷も高くなりません。
MPEG2-TS動画も問題はありませんでしたがmp4の方がCPU負荷が小さいのでできればmp4の方をお勧めします。

●NAS
ネット環境によるでしょうが、11a接続(150Mbps)で1080p(mp4)は大丈夫でした。

購入前の注意事項

・USB接続のキーボードとマウスは必須です。(最初の設定で必要なのとUEFIはUSBじゃないと設定不可。)
・USB3.0コネクタは電源が足りないと動作が遅くなる場合があります。その場合はセルフパワーのUSBハブか補助電源有りのUSB機器を使いましょう。
・本体にスピーカーはありません。ヘッドフォン端子も無いのでHDMI経由かBluetooth経由でしか音はでません。
スピーカー無しの液晶モニターに繋いで使おうとしている方は注意してください。液晶TVは大丈夫です。

USB接続でもワイヤレスなものもあります。下記のコンボセットはUSB端子1つで済みます。


出張先のホテルで動画見るぐらいであったら、下記のようなタッチパネル付きのミニキーボードもあります。


仕様

商品名Diginnos Stick DG-STK4
CPUIntel Atom x5-Z8350
クアッドコア定格1.44GHz/最大1.92GHz/キャッシュ2MB
OSMicrosoft Windows 10 Home 64bit
メモリ2GB LPDDR3
ビデオIntel HD Graphics 400(CPU内蔵)
ストレージ32GB eMMC
無線Intel Dual Band Wireless-AC 3165
IEEE802.a/b/g/n/ac,Bluetooth 4.2
インターフェースmicroSDXC
HDMI
USB3.0×1
USB2.0×1
microUSB(給電用)
付属品ACアダプター(5V 3,000mA)
HDMI延長ケーブル


ストレージの速度

●内蔵のeMMC
DGSTK4_inner_32GB_2.png
●microSDXC
手持ちで最速のSandisk ExtremePROを測定しました。かなり速度が出ています。
10GBのフォルダもコピーしてみましたが、安定性も大丈夫そうです。
DGSTK4_microSD_SandiskExtremePRO_64GB_2.png

●USB3.0経由のSSD
SandiskのSSDをUSB3.0のHDDケースに入れて測定しました。セルフパワーのUSB3.0ハブを使っています。
★注意★USB3.0はバスパワーだと全体的に動作が遅くなる場合もあります。その場合はセルフパワーのUSBハブを挟んだり、補助電源が使える機器を用意しましょう。
DGSTK4_USB3_Sandisk_240GB_2.png

その他

予想したより、熱に弱いということはありませんでした。冷却ファンのおかげですね。(その変わりファンの音が少し気になりますが、、、(;´・ω・))
最初のStickPCが発売されたのが2015年ですが、大分進化した気がします。

32GBということで、あまり初心者向けではありませんが用途を絞った上で使うと結構使えます。

USB3.0コネクタは起動ドライブとしても使えるので買ってよかったです。

出張先のホテルで動画を見たり、デジタルサイネージを安く構築したり、万が一の時の予備PCとして、省スペースなことを活かして様々な用途も考えられます。

マニアックなUEFI設定も可能です。
・通電すると自動的に電源が入る設定も可能。
 「Boot Configuration」に「Auto Power On」があります。ACアダプタをつないだら自動で電源が入るようになるのでタイマーコンセントと組み合わせて自動起動し、OSで定時間にシャットダウンする、といった使い方が可能です。


ドスパラ直販サイトへのリンク


Diginnos Stick DG-STK4


DG-STK4, スティックPC,
2018/02/07

ブラウザを使わずに翻訳する。

2017/10からlinuxを使うようになり、頻繁に英語ドキュメントを見ることが増えました。

マニュアルやカーネルソースのドキュメントやフォーラムなどなど。。。

英語の方が断然、最新で正確な情報が手に入りやすいです。。。(-_-;)
3カ月以上毎日にらめっこしていたので最近は技術的な文章は大分理解できるようになりました。

それでも、難しすぎる単語が現れた場合に備えて、常にブラウザを傍らに開いていました。
ええ、最終的にはGoogle翻訳さんを頼りにしています。

ちょっと検索に引っかかった中で、CUIでGoogle翻訳が使えるとのこと、、、

試しに使ってみたらブラウザを開くまでもなくVimのterminal機能と組み合わせられるので超便利です。(`・ω・´)

一気に時間短縮になりました。(* ´艸`)

インストールの仕方


GitHubからインストールできます。
git clone http://github.com/soimort/translate-shell/
cd translate-shell
make
sudo make install


使い方


二文字の言語コードを指定して翻訳したい文章や単語を書きます。
★5文字も使えます。(例、中国の簡体字はzh-CN、繁体字はzh-TW)
①英語→日本語
trans :ja 'Text to translate'

②日本語→英語
trans :en '翻訳したい文章'


全部の言語は試していませんが言語コードの一覧は下記のリンクが分かりやすいです。
【みんなの知識 ちょっと便利帳】言語コード一覧


余談:初級英語の勉強


恥ずかしながら10年ぐらい前に受けたTOEICは400点台な私ですが、、、
ソースネクストのロゼッタストーンで最近は斜め読みができるレベルは身についてきた気がします。

Linuxカーネルのリリースの内容ぐらいは読めるようになってきました。

例えばこんな(´・ω・`)つThe New Features Of Linux 4.15: AMDGPU DC, RISC-V, EPYC Benefits, VR Improvements

一日30分で7カ月ぐらいかかりました。自分の好きな時間にできて、気になったら自分の発音も確認可能なので英会話教室に通うのが恥ずかしくても始められます。
(ヘッドフォンとUSBマイクを推奨)
★初級は「a girl」から始まりますが徐々に難易度が上がっていきます。英語を学びたい人、学びなおしたい人、子供には最適だと思います。(英語が少しできるという方はLevel1の間は退屈かもしれませんが少し我慢して続けましょう。)
ロゼッタストーン
中・上級もありますが、こちらはあまり期待しすぎない方がいいと思います。
2018/02/05

キーボードだけで操作できるようにカスタマイズ【Vimmer向け】

最近はVimかChromeかTerminalしか使わなくなってきた私です。

ふと、目に入ったWebのニュースでFirefox用の「Vim Vixen」というプラグインの存在を知りました。
Firefoxは起動時間が遅いので(Version58あたりからは大分速くなりましたが。)Chromeの方を使っています。

調べたところ、Chromeには「Vimium」という機能拡張があるそうで早速入れました。
Vimmerの方は凄く便利なので入れましょう。

インストールは下記のリンクが分かりやすいです。
Chromeをvimライクに使えるようにするvimium

キーボードで3入力以内でリンクに飛ぶのがとても新鮮ですのでVimmer以外の方も是非挑戦してみましょう。

そこで気づいたことが一つあります。。。

もう少しでマウス使わなくても全部できるじゃん( ̄▽ ̄)

そうです。。。後はアプリの起動だけショートカットしてしまえばよいのです。

Ubuntu17.10でショートカットキーでアプリを設定する。


端末(Terminal)はデフォルトで「Ctrl+Alt+T」というショートカットがありますがこれも長いので変えてしまいましょう。

手順は簡単です。
①設定を開く。
②「デバイス」→「キーボード」を選択します。
Screenshot from 2018-02-05 18-20-26
③以下の4か所のショートカットを変更します。
動作ショートカット
ウェブブラウザーを起動Ctrl + w
ホームフォルダーを起動(Nautirus)Ctrl + n
端末を起動(Terminal)Ctrl + t
設定を起動(Settings)Ctrl + s



Screenshot from 2018-02-05 18-40-56


これでアプリの起動もキーボードのみでできるようになりました。

マウス要らずのキーボード生活が始まりますよー( ノ゚Д゚)
(まあ、コピペなんかはマウスがやりやすいですね。(爆))

Ubuntu, 小技, 17.10,
2018/02/04

ディレクトリやファイル比較を楽にするシェルスクリプト

カーネルをデバッグするときに新旧バージョンのソースやディレクトリ比較作業は頻繁に行います。

私の場合はGUIはmeld、CUIはVim+DirDiff.vimを使っていますが、どちらも素早く目的のディレクトリ(フォルダ)やファイルを開くのが面倒でした。

そこで、シェルを挟んで使いやすくしてみました。

このシェルを挟むと引数が短く済みます。
例、
meldcomp.sh drivers/acpi

vimcomp.sh drivers/acpi

★シェルスクリプトの例ではユーザ名foo
~/kernelsrc/linux-4.14.15
~/kernelsrc/linux-4.15
を使用しています。こちらは自分の環境に合わせて作り変えてください。


meldの場合


meldはコマンドラインでも起動できます。
meld [fileA] [fileB]
meld [dirA] [dirA]

それを利用して以下のシェルを挟むと楽に起動できます。
●meldcomp.sh
#!/bin/bash

# 比較したいベースディレクトリを指定
COMP_A_BASEDIR=/home/foo/kernelsrc/linux-4.14.15/
COMP_B_BASEDIR=/home/foo/kernelsrc/linux-4.15/

meld $COMP_A_BASEDIR$1 $COMP_B_BASEDIR$1 &


Vim+DirDiff.vimプラグインの場合


vimはコマンドラインでもexコマンドを呼ぶことができるので下記のようなシェルを挟むと楽です。
vim +"[exコマンド]"

★注意★meldと違いパスにシンボリックリンクが含まれると上手く動きません。絶対パスで指定しましょう。
●vimcomp.sh
#!/bin/bash

# 比較したいベースのディレクトリを指定
COMP_A_BASEDIR=/home/foo/kernelsrc/linux-4.14.15/
COMP_B_BASEDIR=/home/foo/kernelsrc/linux-4.15/

# ディレクトリの比較にはDirDiff.vimを使う。
vim +":DirDiff $COMP_A_BASEDIR$1 $COMP_B_BASEDIR$1"

Linux, 小技, シェルスクリプト,