戻る

CLI・CUIなワークステーションを作る

 あくまで個人的な話なのですが,どうもマウスが好きになれません。コンピューターを操作するというのは,私の中では,キーボードで操作するということで,何かの折にマウスに持ち替えなければならないというのは,正直うっとうしいのです。確かに,画面上の特定の地点にカーソルを持って行くことは,マウスの方がより直感的で簡便なのもわかりますし,矢印キーの連打とか押しっぱなしというのも美しくはないのはわかるのですが,どうも好きになれないのです。
 それでも,バイト先ではwindows機が普通に貸与されるわけで(ちなみに当然いわゆる日本語キーボードです),それで普通に文書を作成し,事務を処理している自分がいるのですし,なんだかんだ言って家のemperorでも一番多く使っているOSはMicrosoft windowsだったりするのですが(ちなみにこちらはHappy Hacking Keyboard,あとemperor以外のノート機も原則はいわゆる英語キーボード機でCaps LockをCtrlに置き換える運用),たとえば国際法の本を書きたいとか,プログラム組みたいとかいう時に,自分好みの環境の方が気分がいいじゃないですか?特に,かつてのBSD on Windowsで,全てをキーボードから操作する快感を知った身としては(とはいえ,私はMS-DOSをver3.3の頃から使っているくちだし,SONYのNEWS-1250でやはりBSDベースのNEWS-OSをcommand lineで操作しているんで,全てをキーボードから操作するのが当たり前だったわけですが)windowの1つとして端末を動かしてそこでというのではなく,電源を入れれば基本charcter-basedでしょという機械で書きたいわけです。
 とはいえ,いまだに満足のいくものはできていません。(泣)
 これは,夢とも言える「CLI・CUIなワークステーション」(ワークステーションって言っているあたりで古くからの夢っぽいでしょ?)を作るための,試行錯誤の記録なのです。

ちなみに,実現したいことは……

 ……そんなに難しい話ではなさそうに見えるけど,意外に難しいのです。
 具体的に言うと,2016年12月現在,言語関係では日本語以外の入力・表示は,そもそも全然手つかずなのですが,「コンソールでの日本語入力はemacsからしかやらない」と決めてしまい,かつ,コンソールのemacs(上のeww)では画像が見えなくてもいいと割りきれば,FreeBSD11で動くようになっており,専用の機械への物欲が止まらない状況です。また軽量ということでVAIO typePに対しては,FreeBSDだと文字が小さすぎるため,Lubuntuの32bitバージョンでこれまたそこそこのものができています。
 とはいえ,画像も表示できたFreeBSD9.1の頃がなつかしいです。

機械について

 基本的にはHappy Hacking Keyboardが好きなので,できるだけそれに近づけるよう,いわゆる英語キーボード・USキーボードのノート機を選んでいます。また,CPUは昔からAMDに親近感を持っていたので,選択肢があるとAMDのCPUの機械を選んでいます。ただし,これには注意しなければいけない点があるのでは?と疑っています。OSにFreeBSDを選んだ場合,「画面表示ができない」「(無線だけとか有線も含めてとか)LANが使えない」という症状が発生することがあったのですが,一方でそのような不具合に関する情報がネット上に転がっていないことがあり,「AMDのCPUやそれとともに使うグラフィック関係,(無線)LAN関係(MSi社のノート機だとRealtek社製品であることが多かった)について,FreeBSDが対応しきれていない。」のではないかと思われることがあったからです。
 ちなみに……。完成の暁には,軽くてそれでいてフルキーボードとある程度の広さのディスプレイを持つ機械があればいいんだけどな〜。2015年現在だと,「英語キーボード機がそもそもない」「英語キーボード機が国内では売られていない」「他のOSだけを入れることができない」など,帯に短し襷に長し状態です。やはり輸入?

OSについて

 SONYのNEWS-1250以来,BSD系のOSにあこがれがあるので,今はFreeBSDを採用することが多いのですが,一方でFreeBSDではできないけど,他のOSならできるということが結構多く,これがストレスの原因になっています。というので,複数のOSを入れることができないような場合には,FreeBSDではなく「ちっともCLI・CUIじゃないよな〜」と愚痴りながらLubuntuを使うことがあります。また,FreeBSDの場合,「え?それ,必要なの?」というプログラムも入れなければならないことが結構あり,「もっと必要最小限にならないかなあ」という観点でGentoo Linuxは定期的に試していますし,その流れでGentoo/FreeBSDも実験中です。

ソフトウェアについて

インストール手順総論

ソフトウェアのインストール……パッケージとports(2016.12.23.)

nano

pkg install nano
viがどうしても好きになれず,さりとてemacsを動かすには何かのエディタで何か設定ファイルを書かなければならないことが多いので,簡単なエディタとしてnanoを真っ先に入れます。ちなみにnanoは,nano -w ファイル名で起動するのが定石。
……nanoなしのときはeeを使うようになっている最近の私。

emacs

pkg install emacs24
※メジャーバージョンが上がれば24を25というように変更すると思います。
以前は,emacs上でwebが見られるように,emacs-w3mを入れていましたが,24.5からewwが標準装備され,M-x ewwからURIを入れると,画像までなんなく表示してくれるため,24.5以降については,w3m対応していない素のemacsを使っています。

SKK

pkg install ja-ddskk-emacs24
emacsのバージョンにあわせることになると思います。

tmux

pkg install tmux

LISP

common lisp系として,steelbank common lisp,scheme系としてGaucheとguileを入れています。
pkg install sbcl
pkg install gauche
pkg install guile
※Kyoto Common Lisp→GNU Common Lispについては,以前はgclでportsに入っていましたが,最近は落ちているようです。
pkg install gcl

チベット語関係

Tibetan Machine Uni fontが
pkg install tmu
で入ります。
……今のところ,チベット語関係ではフォントがこれで入るだけの模様。

日本語フォント関係

pkg install なんとか
実は急ぐ必要は全くないのですが,気がついた時に日本語フォントを入れています。本当は好みのものだけ入れれば十分なのですが,何が好みかまだ確定していないので,(さすがにfontで絞り込むけどその上で)日本語っぽいフォントを全部入れています(あとSONYのフォントも。NEWSっぽくなるかな?)。rictyはパッケージがないようなのですが(2016年12月現在),試しにportsから入れています。

w3m-img

pkg install ja-w3m-img
もしくは
pkg install w3m-img
かつては,emacsでwebを見るなど,コンソールからwebを見る時に必須だったw3mでしたが,少なくともemacsとの関係では24.5以降で標準装備ewwが使用できるようになったため,必須ではなくなりました。しかし,ビューアーとしての使用ではmoreやlessに比べて味がある部分もあるので,(使用頻度が減ったのは確かですが)入れています。

自動的に時刻を設定する

特に日本語コンソールについて

従来のscに代えて,FreeBSD10.0以降でvtが使えるようになりましたが,vtは日本語フォントを用意することで,日本語表示ができます。vtはインストール不要で,設定ファイルの書換えだけなので,jfbtermの導入が不要になる(加えてvtを使用するとjfbtermは起動できなくなる)分お手軽になります。
一方2016年12月10日現在,FreeBSD11.0では,ddskkを使用した場合に,文字化けが発生することがある(例の下向き白抜き三角が表示されたあと,漢字に確定した際に下向き白抜き三角を削除してその分左に寄せるんだけど,そのあたりの処理がたまにうまくいかないことがある)のと,startxでX-windowを起動させた後にログアウトして戻ってくると,解像度がやたら細かくなってしまう現象が観測されているので,jfbtermも導入しておいて,設定ファイル等を適宜入れ替えるなりして対応するのがベストかもしれません。……jfbtermはいつのまにかportsから落ちているんだけど……。

/boot/loader.confへ追加

kern.vty=vt
hw.vga.textmode=0

/etc/rc.localへ追加

#!/bin/sh

VTFONT="b16.fnt"
#VTFONT="jiskan16u.fnt"
#VTFONT="jiskan16s.fnt"
#VTFONT="unifont-8.0.01.fnt"

if [ -f /usr/local/share/fonts/vt/$VTFONT ]; then
vidcontrol -f /usr/local/share/fonts/vt/$VTFONT
fi

フォントの追加

/usr/local/share/fonts/vt に,b16.fnt,jiskan16u.fnt,jiskan16s.fnt,unifont-8.0.01.fntを配置します。
ちょっと調べてみたらb16.fnt以外のフォントは,いしじま☆だいさんが,bdfから変換したものを提供しているようです。
なもんで,
mkdir /usr/local/share/fonts/vt した上で
cd /usr/local/share/fonts/vt と移動して
fetch http://people.freebsd.org/~emaste/newcons/b16.fnt
fetch http://www.wheel.gr.jp/~dai/fonts/jiskan16u.fnt
fetch http://www.wheel.gr.jp/~dai/fonts/jiskan16s.fnt
fetch http://www.wheel.gr.jp/~dai/fonts/unifont-8.0.01.fnt
と,持ってくることが可能になっています。

.cshrc

setenv LANG ja_JP.UTF-8
を忘れないように。

jfbterm

samba

pkg install samba46
数字の部分はバージョン(たとえば4.6.xxx)を表しているようです。
windowsに対して,ファイルサーバーとして振る舞ってくれます。
……lubuntuだとwindows機に対してクライアントにもなってくれるので,結局,windowsのネットワーク共有と同じように使えるのですが,2017年5月3日現在,私の技術力の無さでそこまでいたっていません。しかし,windows機からはネットワーク共有の感じで使えるので,lubuntuを外部USBメモリーに追い込んで,本体SSDをFreeBSDだけにすることの後押しをしてくれました。
インターネットにはいろんな設定が転がっているんですが,とりあえず動くものとしてこんな感じの設定をしています。

公開用ディレクトリーの設定
  1. mkdir ディレクトリー名
  2. chmod -R 777 ディレクトリー名
rc.confの設定
samba_server_enable="YES"
smb4.confの設定
/usr/local/etc/smb4.conf
※ちなみにshutdown→電源投入とか,rebootしないでsmb4.confの内容を反映させるためには,
/usr/local/etc/rc.d/samba_server start
で起動するか
/usr/local/etc/rc.d/samba_server restart
で再起動します。

各種設定ファイル

BSD系
/boot/loader.conf(2016.12.11.)
/etc/resolv.conf(2017.4.19.)
/etc/rc.conf(2015.11.29.)
※rc.confに記述されたネットワーク情報については,rebootで反映されますが,rebootしなくても,「/etc/netstart」でIPアドレス等が,「hostname newhostname」でホスト名がnewhostnameにそれぞれ変更され反映されます。
/etc/rc.local(2016.12.11.)
/etc/X11/xorg.conf(2016.12.11.)
/usr/local/etc/smb4.conf(2018.3.6.)
.cshrc(2016.12.11.)
.xinitrc(2014.11.26.)
/etc/fstab(2017.4.19.)
.emacs.d/init.el(2016.12.11.)
.config/lxsession/LXDE/autostart(2017.4.19.)
以下は,現在使用していないもの
.emacs.d/init.el(2013.3.5.)(emacs-w3m時代)
.emacs-w3m(2014.9.7.)(emacs-w3m時代)

番外編 X-windowについて

CLI・CUIなワークステーションという観点では全くの邪道なのですが,その目標とするところを手っ取り早く実現するのは,X-windowを使うという方法論で,立ち上げ時にemacsをフルサイズで起動してしまえば,気分はともかく,結果的にはできちゃうということになります。そのため,実際にはX-windowを入れてしまっています。

X.org

pkg install xorg
その後,/etc/rc.confに所定の設定が必要です。
ちなみに(一旦logoutしてloginした後)startxと打つと,他に何も設定していないのに,きちんと動きました。

LXDE

pkg install lxde-meta
.xinitrcに所定の設定が必要です

scim-anthy

pkg install ja-scim-anthy
SKK以外のかな漢字変換システムとして,scimにanthyを組み合わせています。
2017年5月2日現在もっぱらX-windowにおけるかな漢字変換システムとして使用しています。
一時期は「scimはメンテナンスが中止になるらしい」という情報も流れていたことと,uimとanthyの組合せが,X-windowsを使わないコンソールでも使用できたことで,ja-uim-anthyを使っていたのですが,その後,この組合せの方が先にpkgから外れてしまいました。
一方scimは最近復権しつつあるようで……。
scimがコンソールでも使えるといいのですが……。
(ちなみに本音を言えばvjeが使えれば最高だし,次善の策としては,NEWSで使っていたsj3がいいと思っているので,scimにもanthyにもあんまり思い入れはないし,そんな状況なので1つ動いているのを見つけると,「別にmozcに変えなくてもいいや」となってしまっています。

Firefox

pkg install firefox

LeafPad

pkg install leafpad
X-windowにおけるnano的なエディタとしてインストールすることにしています。

WINE

pkg install i386-wine
説明によると64bitFreeBSDで32bitwindows用プログラムを動かす場合はwineではなく,i386-wineだそうです。
「9.1/i386では問題がないし,以前から64bit対策はあるようなんだけど……。公式に対応するのが正解だよな〜。」とかつて書いていたけど,対応されたということで。

Virtual Box

pkg install virtualbox-ose
pkg install virtualbox-ose-additions
ただし時期によって2つのバージョンを流していることがあって,その場合は,従前の比較的安定しているバージョンを
pkg install virtualbox-ose-legacy
として入れることがいいと思います。
(この場合additionsについてはバージョンが違うことがあるので,virtualboxを動かして,そこで機能を追加することでもインストールできることから,その方がいいかもしれません。)
こちらは/boot/loader.conf/etc/rc.confに所定の設定が必要です。
それとroot以外で使用する場合には,rootで,「pw groupmod vboxusers -m ユーザー名」しておかないといけない模様。

TeX

pkg install texlive-full
pkg install lyx
最近はTeXも勉強しはじめたので,とりあえず入れています。
まだ勉強したてなので,テキストエディタでいろいろ書くまでにはいたらず。LyXを併用しています。

Aの横はcontrolでないと嫌……X-window編

これは,「CapsLockなんて無用の長物だからいらねえよ」派と「CapsLockがあると便利な時もあるから入れ替えよう」派に別れており,かつ,どう実現するかについてもいろんな方法論があるのですが,私は/etc/X11/xorg.confに設定する方法をとっています。

番外編 ソースについて

今のFreeBSDは,カーネルについてソースからコンパイルする必要はないのですが,自分でカーネルコンパイルしてこそのUNIXという話もありますし(実際gentoo linuxはインストール時に必ずカーネルコンパイルしていますし),windowsのデバイスドライバをFreeBSDで使う場合のndisでもソースが必要となります。
というので,ソースも入れておくことにしますが,FreeBSDハンドブック推奨の手順はsubversionを入れて管理する方法です。

svn info /usr/src
……コマンドを受け付けない場合には,subversionそのもののインストールからです。

pkg install subversion
※最初の1回だけ必要です。

svn checkout https://svn.freebsd.org/base/releng/11.1 /usr/src
※最初の1回だけ必要です。

svn update /usr/src
最新版にアップデートします。

1台のHDDに複数のOSを入れる

 決定版がいまだにできないものですから,いくつかの組合せを平行して試している状況です。そして本命の原稿書きのためにはwindowsを使ったりしていますので,複数OSをどう動かすのか,また複数のOSの領域間でファイルの受け渡しをどうするかという問題が出てきます。ちなみに領域の分け方については,今はいろんなやり方があるのですが,他のやり方がよくわからないという理由だけで,「基本領域は最大4つ(最後の1つをさらに複数の論理ドライブに分けることは可)」「全体で2TBまで」という昔ながらのMBRを使っています。
 ちなみに,2015年11月29日現在,windowsを起動するのに,drivemap -s (hd0) (hd1)をやっている機械で,windows専用HDDが動いている状態で,FreeBSD,MS-DOS(FAT32),Gentoo/FreeBSDの順に領域作ってインストールしたところ,なぜか起動時にカーネルが見つからないって悲鳴をあげるので,windows専用HDDが動かないようにして,FreeBSD,Gentoo/FreeBSDの順で領域作ってインストールさせたらうまくいき,その後,MS-DOS(FAT32)も作り,windowsも動くようにしても,何の問題も起きていません。
 何が悪かったのかな〜。

MBM

grub(2017.4.19.)

Lubuntuから他の領域の読み書き

windowsについては自動的にmountして普通に読み書きできます。
一方FreeBSDについては「不明な領域」としてしか認識しないようなので,何らかの手順が必要と思われます。

FreeBSDとWindowsの両方から読み書きできる領域をMS-DOSのFAT32で作る

FreeBSDになってから謎挙動になっているfuseなんで,当面これでしのぐという。
Windowsで領域を確保してMS-DOSのFAT32でフォーマットして,ドライブレターを指定すれば,すぐにwindowsで読み書き可能。FreeBSD側では,その領域を「/dev/ada0s3」などの形式で確認して,/etc/fstabに「/dev/ada0s3 /mnt/msdos msdosfs rw 0 0」の形式で書けば読み書き可能。
ちなみに……。
FAT32だから32bitでアクセスできないとだめなわけだけど……。
32768MB以上だと,windowsからはNTFS以外では本当に作れなくなってしまうという。

FreeBSDからwindows領域の読み書き……fuse

現時点での課題リスト

X-windowからコンソールに戻るのに時間かかりすぎ
これFreeBSD9.1/i386では発生していないんだけど,
昔は結構起きていたわけ。
私の場合,CPUがAMDの機械でよく発生しているんで,
実はAMDのグラフィックに起因してFreeBSDが対応しきれていないって話ではないかと
にらんでいるんだけど……。(だって9.1/i386は大丈夫なんだから。)
縦方向に縮んで見える
FreeBSD9以前では見られた「縦方向に押しつぶされたようになる」問題。
10.0のXwindowでは解消されたのですが,jfbtermでは改善されていません。
jfbtermも作動させないコンソールではそもそも発生していない現象なので,あとは,jfbtermの設定をなんとかできれば……という想像をしているのですが。
無線LANが使えない
これはU270限定の話なんだけど,無線LAN用にRealtekのRTL8188CEを使っているところ,
これのデバイスドライバがない……。
windowsではrtl8192Ce.sysとnet8192.infらしいので,
そのファイルをFreeBSD側に持ってきて/sys/modules/if_ndis/に配置した上
ndiscvt -i net8192.inf -s rtl8192Ce.sys -o ndis_driver_data.h
を実行し,その後make && make installしても
……認識してくれなかった。
w3m
emacs24.5になってX-windowの下ewwを使うと,これは問題なく画像を表示するので,とりあえずは「画像もEmacsで見たければX-window使え」でいけるんだけど……。昔はjfbtermで画像表示できたからな〜。
9.2でも文字化けがひどいけど,これはportsからのコンパイルで解消するという情報があるので,これから挑戦します。
10.0の画像表示ができないのも,同じ筋かもしれない……。
というのは本体としては同じなんだけど,パッケージ作る時に何かの勘違いをしているのではないかって趣旨の記述があって,自分できちんとオプション指定してコンパイルすればそれでいいという話の模様。
ただし……一般論として,依存関係全部コンパイルしていたらとんでもないことになりかねないって例の話と,9.2についてはpkg_addしていても,そのプログラムだけ強制的にpkg_delete -fすればいいのに対し,10.0のpkgで同じようにできるのかが,未調査。(portsからのコンパイルが優先って記述も見つけたけど,未検証。)
linux対応
これはもっぱら噂。
10.0/amd64でもまだ未対応。
もっとも個人的にはこれではまった例はないんで,だめならだめでいいのかも。
ちなみに
かな漢字変換はja-uim-anthyでjfbtermからもX-windowsからもかな漢字変換が可能になりました。しかも設定の変更はいらないっぽいです。
正確に言うと,最近は.cshrcにおけるLANGをja_JP.eucJPからja_JP.UTF-8に変えたんですが,jfbterm.conf一切いじってないのに,普通に日本語が表示されるんで驚いているところ,それがかな漢字変換にも影響しているのかしらん……。
もっとも,uim-fepで起動するんだけど,漢字変換キーが前はわかってできたんだけど,最近は忘れてしまって,たぶん使いやすくするためには,設定ファイルをいじる必要があったはず。
というので2014年7月27日現在
原稿書き機の携帯用をVAIO type Pに変えて,そっちはあきらめてLubuntuにしたもんだから,原稿書きには影響しなくなったため,むしろ安心してFreeBSDがいじれる状況。
後日のための記録(2013.2.11.)
後日のために記録を残しておきます。

後日のための記録 xiaomi air 12編(2017.4.23.)
xiaomi air 12を原稿書き機に仕立てようとした時の記録と課題

番外編 Macでいろいろ実験してみる(2014.8.23.)

戻る