Maのエッセイへ

Gentoo linuxでCUIな「ノート型ワークステーション」を仕立ててみる

 最初にワークステーションに触ったのは,平成3年頃の話で,中古のソニーNEWS1250(ラップトップ型のワークステーションというのがあったんですよ。)でした。CPUが確かモトローラの68030で,8MBのメモリーと240MBのHDDを積み,sjで日本語が問題なく入出力できていました。机の上に置いたものの,ほとんどを占領されてしまい……。
 「この状況下ではX-windowなんていらない!」と叫んでX関係を消してしまい,メモリーとHDDに余裕を持たせて運用していました。
 ところがやはり問題は起きてくるもので,私の場合「E」のキーに不具合が出てきたんですね。入力できなかったり,チャタリングみたいに1回押しただけで数回入力されたりとか。英語(プログラム)を書くのでも日本語を書くのでもEキーは相当激しく使いますよね。そこでこんなことになると次第にストレスを感じるようになって……。
 ついにお蔵入りとなってしまい,2010年5月には廃棄されてしまいました。(手数料はノート型コンピューター1台とカウントされました。)
 一方,お蔵入りしてからは,これに代わる「ノート型ワークステーション」をずっと求めていました。条件としては,
・Commandline User Interfaceであること
・LISPが動くこと
・日本語が入出力できること
で,FreeBSDの2の頃(当時はFDD50枚でインストールなんて時代だった。)から挑戦していたのですが……。
 今から考えると私とFreeBSDはどうも相性が悪く,どこでひっかかるかというと,たいてい「日本語の入出力」でひっかかるのでした
 できれば最小限の構成で入れたいのに=Xはいらないのに,emacsがなぜかXのライブラリーを要求するとかわけわかんないことも起きていたし……。
 風向きが変わったのが2009年頃からで,1つにはUbuntu linuxのインストールがwindows以上に簡単であったこと,もう1つはその頃からのGentoo linuxが,インストールに時間がかかるものの,あっさり動くようになってきたことがあげられます。そして2006年に買ったMSiのノート型ベアボーン機MS-1058が,(メインのデスクトップのマザーボードが壊れて,中古機などでその場しのぎに終始していたとはいえ)4年たっても我が家では最速最強の機械であることに鑑み……。
 FreeBSDは,emacsをコンソールで動かしたいだけなのになぜかXの共有ライブラリが必要だとか,なぜかかな漢字変換が動かないとか,jfbtermが動いても表示されないとか,相性が悪いんだよな〜。UbuntuはデフォルトでX-window動いちゃうんで,削りにかからないといけない……なんてことも総合考慮して,標準ではCUIでインストールされるgentoo linuxで「ノート型ワークステーション」を仕立ててみようと思ったのでした。

準備するもの

ノート型コンピューター1台
私の場合はMS-1058を使用しています。当然いわゆる英語キーボードです。でもcontrolはAの左ではありません。
有線LAN端子はあった方がいいと思います。(初期の設定がたぶん楽です。)
インターネットに接続できない場合は,今回述べる方法は使えません。公式のハンドブックhttp://www.gentoo.org/doc/ja/handbook/handbook-x86.xmlなどで挑戦してみてください。
CD・DVDなどの光学ディスクドライブは外付けでもインストールできた経験があります。(MS-1058は内蔵ですが。)
今回は「windowsが入っていてかつ使用していないHDD領域がある」という設定でその空き領域に入れています。
この空き領域ですがbootとswapを最小限にすれば4GBでもなんとかなるとは思いますが
(というのは現時点ではrootに3GBしか使ってないので。)
8GBくらいは最低必要だと思います。
私はbootに1GB,swapに4GBという「そんなに必要なの?」という御大尽な使い方をした上でrootに100GB用意しています。
もっとも後でパーティションを切り直してgentoo専用機にする際には……。
メモ用紙多数と鉛筆
最低1か所設定をメモしてあとでそれに準じて打ち込むという作業があります。
その他,メモを見ながらの方が作業しやすい箇所がありますので用意しておきましょう。
光学メディア2枚
CD-Rで十分ですがDVD-Rでもかまいません。ただ以前RWでインストールできなかったことがありました。(原因不明)
1枚はMBMのインストール,もう1枚はgentooのインストールに使います。
有線LANの回線
無線LANでも大丈夫だとは思うのですが……有線LANでなんと自動認識してくれたので,その楽さは最大限有効利用しようと。
時間
ほとんどは待ち時間なのですが……ひととおりインストールしてHDDから起動するまでに6時間くらいかかります。
webサイトを見られる環境 あると便利です。
私の場合,常に公式ハンドブックを参照する他,適宜検索かけていました。
待ち時間を有効に使うためにも。(笑)

覚えておいてほしい2つのプログラムの使い方

 コンソールから動かすブラウザであるところの「links」と簡易なエディタ「nano」です。
 まずは「links」の説明。
 gentoo linuxのインストールに際しては,インストールディスクを作って,そこから起動して作業するのですが,有線LANを自動認識して適宜インターネットに接続してインストールが進んでいくところ,その際,自分でブラウザを起動してサイトを指定してファイルをとってくる作業が何箇所かであります。その際使うのが「links」です。
使い方としては「links サイトのURI(http://から)」で,そのURIにつないでくれます。矢印キーでカーソルを動かしてあわせてenterを押すとブラウザでカーソルをあわせてクリックするのと同様にその先に行き,そこがファイルを落とす場所だと自動的にファイルを落として保存してくれます。終わったら「Q」でブラウザが終わります。
 ちなみに接続先を複数選ぶ際は「http」のサイトをお勧めしておきます。というか「ftp」だと画面に表示されてそれをファイルとして保存する方法がわからないし,「rsync」は動かなかった……。「http」はこのあたりが全て対話式で進むのでわかりやすいのです。
 もう1つは「nano」
 非常に簡単なエディタで「nano -w ファイル名」で起動します。機能は非常に制限されていて,windowsの「メモ帳」だと思ってください。もっともメモ帳大好きな私としては直感的に使えて結構気にいっています。
 「Control-o」で保存(保存先を聞いてきます。)「Control-x」で終了です。
 以下ではせいぜい起動時のコマンド列を示すだけで,個々の使い方はいちいち説明しません。この2つの使い方は覚えておいてください。(もしくは早速メモる!)

それでははじめましょう。

1 インストールメディアの準備

 MBMとgentooのインストールメディアの作成です。
 ファイルを落としてきて適当にCD-R等に書き込むだけです。
 MBMについてはhttp://elm-chan.org/fsw/mbm/mbm.htmlからMBMブータブルCDのファイルを落としてきます。
 gentooについては公式ハンドブックの「GentooインストールCDのダウンロード」からリンクされている先から落としてくるのですが,
 ディレクトリがいくつかあって迷います。
 releasesディレクトリは鉄板ですが,その下の階層は通常は「x86」です。というのは,現在,windowsが動く機械として一般的に入手できるものは,たいていCPUに80386互換のものを使っているのです。この点はAMDの64bitCPUでも代わりありません。
 しかしAMDの64bitのCPUを使う場合には,「amd64」を使うのもありですし,実際私はそうしています。
 今のところ気づいた違いは「一部ソフトウェアについてx86はインストール可能だが,amd64は簡単にはインストールできないような処理が行われている」です。私の場合skkfepがこれに該当しましたが,実はx86でもskkfepが動いていないので,実際は関係ありません。それどころかamd64のemacsはすぐに日本語が使えたのに,x86(しかも486)では日本語の設定が必要だったというので,amd64の方がむしろ楽でした。
 一般論としては32bit用を基本としているOSが多いところ,その64bit版は,デバイスドライバが充実していないという傾向が見られます。しかしこれは画像処理や音声処理の場合に影響が出ることが多く,単純なテキスト処理の場合には影響が出ないことが多いので,ひとえに「何のソフトを使うのか」によって,AMDの64bitCPU使用者が,今回の私のようなCUIによるテキスト処理に特化した構成を目指すのであれば,使いたいソフトが使える限りamd64にしていいと思います。
 落とすべきファイルは,amd64の場合,install-amd64-minimal-xxxxxxxx.iso(xxxxxxxxには西暦年月日と思われる8桁の数値),x86の場合はinstall-x86-minimal-xxxxxxxx.isoです。これはamd64なりx86なりの下の階層にcurrent-isoがあって,さらにその下の階層にあるでしょう。公式ハンドブックにはreleasesの下の階層はautobuildsに行くように指示していますし,サイトによってはreleasesの下にcurrent-isoがないのかもしれませんので,その場合はautobuildsから行ってください。
 2枚ありますのでマジックインキか何かで何のCD・DVDかきちんと書いておきましょう。
(特にMBMは残しておくとなにかと便利。gentooの方は定期的に新しいバージョンが出るから使い捨てでもいいけど。ちなみに新しいバージョンが次々出てくるgentooの方は書くならファイル名を全部書いておくのが吉。)
 なお公式ハンドブックでは,ファイルが壊れていないかどうかをMD5チェックサムでチェックする方法やデジタル署名でチェックする方法を紹介していますが,私の場合これらのチェックをすること自体が面倒だった上,腹を決めてチェックなしでやってもたいてい異常が出なかったので,パスしても大丈夫だと思います。せいぜいどうにもおかしい場合にさかのぼってチェックすれば足りるのではないかと。

2 MBMのインストール

 MBMのCD・DVDを入れて再起動します。たいていはCD・DVDがある場合,そちらから優先して起動するようになっているはずです。もし起動しなければ,何か操作をして起動するメディアをCD・DVDに一時的に変更するか,BIOSの設定をCD・DVDから起動するよう変更してください。これは機械ごとに異なりますのでここでは詳しくは述べません。(MS-1058の場合F2でBIOS設定の変更F12で起動方法の指定です。)
 ちなみに……実を言うと,MBMのインストールは必須ではありません。前提としては今はwindowsも残した上でgentoo linuxを入れるところ,OSが複数同居する以上は,電源投入後どのOSを起動するのかの選択は必要となります。しかし,その選択方法としてはMBMを使用する他,grubを起動してgrubから選択する方法や,windowsの起動プログラムであるNTloaderを起動してそこから選択する方法などが考えられます。しかしNTloaderからgrubを動かすことについては文献が少ないので,結構困難であるし,MBRからgrubを起動するのは,だいたいのLinuxが推奨して標準設定にしているところ,技術的にはきれいとは言い難いという問題が残ります。(詳細はhttp://wikiwiki.jp/disklessfun/?multipleboot参照)
 したがって,「MBRからgrubを起動」でかまわないというのであれば,MBMを入れる必要はありません。なにせ私たちは1回入れて動いてしまえばこのあたりを変更する予定がないわけですから。
 ……でも,結構やり直しとかすることもあるし,「grubの設定が変でwindowsも動かない」なんてことになったら目もあてられないので……私としてはMBMインストールをお勧めします。
 ……とはいえ,白状するとMBMが大好きってわけでは決してないのだな。個人的に好きなのは実はFreeBSDの標準ブートローダBooteasyだったりします。なにせ前回起動時の選択を覚えておいて一定時間放置すれば前回と同様に起動することができるのです。grubは基本的には事前に定められたデフォルトを動かすだけだし,MBMには一切そういう機能がありません。電源入れて用事足しに行くってことがBooteasyだとできるのに,他のMBMやgrubならそれぞれが動き出すまで待たないといけない。この違いは私には結構重要です。しかし……Booteasyは特にgrubとの連携が難しいし,windowsですら「このOSなあに?」と「??」と表示してくることがあって,その修正ができないので……。linuxも使う場合,機能的には自動選択できなくともMBMに軍配をあげざるを得ないのでした。

3 HDDの領域確保

 MBMのインストールが終わったら,いったんwindowsを起動してください。
 まず時計があっていないようでしたら時計を合わせてください。
 スタートボタンについてクラシックな設定にしているなら「設定」→「コントロールパネル」→「コンピューターの管理」→「ディスクの管理」でgentoo linux用の領域を3つ確保してください。私は/boot用に1GB,swap用に(RAMが2GBなのでその2倍の)4GB,そして「/root」用に好きなだけ(たとえば100GB)確保します。windowsの他にgentooしか入れないのであれば全部基本領域として確保してもいいでしょう。他にも入れる予定があるというのであれば,「4つめの基本領域を全域拡張領域として確保した上で,その中に論理領域を好きなだけ作っていく」という作業が必要になります。領域の確保に際してはフォーマットやドライブ文字を付けることは一切不要です。
 公式ハンドブックではlinuxのインストール開始後,fdiskで領域の確保を行っていますが,fdiskは細かい指定ができるものの,特に拡張領域の確保は細かい指定ができることがあだとなって煩雑になります。windowsから領域を確保しておいた方が楽です。
 ……余談ですが……。
 正直この作業もlinuxよりFreeBSDの方が楽だと言わざるを得ません。というのは,FreeBSDの場合,領域を1つだけ確保すれば,FreeBSD側でその中に「スライス」というものを作り,linuxが領域を1つ使うことを,スライスを使うことにして処理してしまうのです。

4 gentoo linuxのインストールCD・DVDから起動

 それではいよいよgentoo linuxのインストールです。
 gentoo linuxのインストールCD・DVDを入れて再起動してください。
 CD・DVDから再起動できない場合,MBMのインストールと同様にCD・DVDから起動できるよう試してみてください。
 「boot:」の文字が出たら基本的にはそのままで「gentooカーネル」が起動しますので放置orEnterで可です。
 その先でおかしくなる場合には,公式ハンドブックのインストールCDのブートの所のカーネルの選択やオプションの選択を見て指定してみてください。(私はここでつまずいたことがないです。)
 たいていの場合思いっきり細かい文字でいろんな表示が流れていきます。
 キーボードの選択の局面が出たら,jpなりusなり選んでください。
 defaultが何かいまいちわからなかったので,明示するようにしていました。
 ……時間があればゆっくり読めて検討できたのですが,時間制限がありましたし,それを回避する方法も時間があれば(……文章の冒頭に戻る)。
 またいろんな表示が流れていったあとコマンドプロンプト「#」が出ます。
 なお,カーネルやオプションの選択の後に,公式ハンドブックでは特別なモジュールの読み込みやrootパスワードの変更,ユーザーアカウントの作成,alt-F2で別スクリーンでwebにアクセスする話やsshデーモンを動かす話に触れていますが,これらは全て省略でかまいません。

5 ネットワーク設定

 ping -c 3 www.gentoo.orgで,ネットワークへの接続を確認します。エラーが出てきたら,公式ハンドブックを見てきちんと設定してください……としかいいようがありません。私の場合,ここで有線LANがつながってなかったことがなかったのですよ。
 つながっていれば公式ハンドブックのこのあたりを全部飛ばして,ディスクの設定に入ります。

6 ディスクの設定

 メモの準備をした上で「fdisk /dev/hda」でfdiskを起動します。
 MS-1058は昔は一般的だったIDE接続なので毎度「/dev/hda」で認識されます。hdaでハードディスク全体。hda1がハードディスクの中の1番目のパーティションをさします。windowsが入っている場合hda1はwindowsでしょう。ハードディスクが2台あると2台目が/dev/hdbになると想像しています。

※2010年12月29日から再インストールしていたところ,最新の2010年12月23日バージョンでは,「fdisk /dev/hda」ではアクセスできず「fdisk /dev/sda」でアクセスできるようになっています。しかし,このバージョンだと起動途中で必ず「(/であるはずの)/dev/sda3が適正なブロックデバイスではない」というエラーが出るため,現在古いバージョンでインストールを試みています。

 起動したら「p」コマンドで一覧を表示します。
 windowsでlinuxをインストールするパーティションも作っているはずなので,そこにlinuxのファイルシステムであることなどを書き込んでいくだけで済みます。
 まず最初にメモ用紙に以下の要領で書いていきましょう
公式ハンドブック この機械 マウント先 ファイルシステム
 /dev/sda1    /dev/hda2 /boot    ext2
 /dev/sda2    /dev/hda3 swap
 /dev/sda3    /dev/hda5 /      ext3」
 ハードディスクのこのような指定は後で何箇所か出てきますので,メモに残してメモを見ながら作業するのが正解です。
 まずこの表に基づき/bootと/のパーティション種別を83,swapの種別を82とします。
 コマンドは「t」。
 対象となる区画を聞かれるので番号で回答。
 数値を/bootと/なら83,swapなら82と入れます。
 1つの領域について入力が終わったら「p」で確認してください。
 これを/boot,swap,/の全部について行います。
 終わったら最後にもう1回念のため「p」で確認をし,間違いがなければ「w」で書き込んで終了してください。
 間違いがあれば「t」などでやり直せばいいだけ。「w」で書き込むまでは何度でもやり直せます。
 わけがわからなくなったら「q」で変更を保存せずに強制終了し,もう1回「fdisk /dev/hda」からやり直せばいいのです。

7 ファイルシステム作成

 先のハードディスクの区画の対照表のメモを見ながら作業します。
「mke2fs デバイスファイル名」でファイルシステムを作ります。
 ext2を使う/bootについては「mke2fs /dev/hda2」,ext3を使う/については「mke2fs -j /dev/hda5」と入力します。

8 マウント

 UNIX系ではファイルシステムは明示してマウントしなければ利用できません。(windowsにはない概念。)
「mount マウントするデバイスファイル名 マウント先のディレクトリー名」というコマンドです。
公式ハンドブックの示す手順というのは,今まではファイルシステムは全てCD・DVD上にあったところ,ハードディスクの/となる区画をCD・DVD上の/mnt/gentooに,ハードディスクの/bootとなる区画をCD・DVD上の/mnt/gentoo/bootにそれぞれつなげて(=マウントして)しまおうというものです。おそらくCD・DVDには/mnt/gentooはできているところ,下記の手順でマウントすると「/mnt/gentoo」は直ちに「ハードディスクのgentoo linuxの/用として確保した領域の最上位(まさに/)」を意味することになります。今さっきファイルシステムを作ったくらいですから/には/bootすなわち/mnt/gentoo/bootは存在していません。そこでmkdirでディレクトリを作った上で/bootをマウントすることになります。
 以上のとおりですから,次の3つのコマンドは順番が変わると正常に動かなくなる可能性があります。
最初「mount /dev/hda5 /mnt/gentoo」
次 「mkdir /mnt/gentoo/boot」
最後「mount /dev/hda2 /mnt/gentoo/boot」
 なお,公式ハンドブックでは,他のパーティションをさらに使う場合の注意や/procについての説明がありますが,飛ばしてかまいません。

9 swapの有効化

 まずswap領域用として初期化した後,swap領域として使えるようになったことをシステムに知らせます
最初「mkswap /dev/hda3」
次 「swapon /dev/hda3」

10 日時の設定……はしない

 公式ハンドブックではディスクの設定をしてmountした後,dateコマンドで機械の内部時計の設定・確認をすることにしていますが,今回はこれを省略します。一般論としてはmakeというコンパイルのためのツール(とはいえあまりにも便利なのでコンパイル以外にも使うんだけど)はファイルの更新の有無を確認して新しいファイル(もしくは古いファイル)だけを操作の対象にするという作業を自動的にしてくれるところ,ファイルの新旧を確認する手段がファイルの更新の日時なんですね。したがって内部時計が狂っているとファイルの新旧が確認できなくなります。これはgentoo linuxでは結構深刻な事態です。というのは,gentoo linuxにおけるemergeというコマンドによるインストールの正体は,ソースからコンパイルする作業なんですね。そこでコンパイルが正確にできないとなると……。
 ということから,日時の設定は大変重要なのです。ところが,今回はその重要な作業を飛ばします。というのは,windowsとUNIX系のOSを混在させる場合,歴史的にはwindowsの前身であるMS-DOSの頃,機械の内部に世界時を設定した上で,地方時すなわち使用者の所在地による時差を別途設定する……という慣行が存在していなかったことから,ネットワークにつなぐことが当たり前になり,所在地による時差を設定できるようになった現在でも,「機械の内部の時計は世界時ではなく地方時である」という前提で(少なくともwindowsXPまでは)動作しています。一方UNIX系は伝統的に「機械の内部の時計は世界時を設定し,別途地方時の時差を設定する」という戦略です。したがってこんなことになってしまいます。
 内部時計が2010年1月1日13時00分となっている状況
 windowsで使用地を日本と設定した場合
  日本時は2010年1月1日13時00分である
  世界時は(日本時より9時間遅れているので)2010年1月1日1時00分である
 UNIXで日本(japanとかJPとかJST)と設定した場合
  世界時は2010年1月1日13時00分である。
  日本時は(世界時より9時間進んでいるので)2010年1月1日22時00分である
 もしインストールの最中のこの段階でこれを理解して時刻設定するのは大変な話です。したがって,gentoo linuxのインストールをはじめる前にwindowsを起動してHDDの設定をした際,ついでに時刻あわせをしましたので,「日本時としてはそれほどずれていない」ことを前提に,この先のインストール作業でlocaleを正しく設定した後,時刻設定をすれば足りると判断しました。

11 stage3のインストール

 /mnt/gentooにstage3を展開します。
 stage3とはamd64であればstage3-amd64-xxxxxxxx.tar.bz2(xxxxxxxxはおそらく年月日を表す数値)
 x86であれば,stage3-i486-xxxxxxxx.tar.bz2か,stage3-i686-xxxxxxxx.tar.bz2となります。i486やi686はCPUを表すのですが,原則はi686を,i686の機能を持っていないCPUの時にi486を選択することになります。
 まず「cd /mnt/gentoo」として移動し
 「links http://www.gentoo.org/main/en/mirrors.xml」
としてブラウザを起動させます。
 適切なサイト(日本でhttpなところ)を選んで,release→(x86かamd64)→autobuilds→stageの中にあると思います。前で述べたのと同様にCPU名のディレクトリの下にcurrent-stage3などがあって,そちらにもある可能性もあります。その中から上で述べたstage3-のファイルを選ぶと進行状況を表示しつつ自動的に保存されます。終わったら「Q」でブラウザも終わらせます。
 落としてきたファイルのチェックを省略しても大丈夫だった話は,インストール用CD・DVDファイルをダウンロードする時のとおりです。
 最後に「tar xvjpf stage3-*.tar.bz2」で展開します。

12 portageのインストール

 /mnt/gentooにportageを展開します。
 portageとはportage-latest.tar.bz2です。
 まず「cd /mnt/gentoo」として移動し
 「links http://www.gentoo.org/main/en/mirrors.xml」
としてブラウザを起動させます。
 適切なサイト(日本でhttpなところ)を選んで,snapshotの中にあると思います。portage-latest.tar.bz2を選ぶと進行状況を表示しつつ自動的に保存されます。終わったら「Q」でブラウザも終わらせます。
 落としてきたファイルのチェックを省略しても大丈夫だった話は,インストール用CD・DVDファイルをダウンロードする時のとおりです。
 最後に「tar xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr」で展開します。
 ちなみにこの後公式ハンドブックではコンパイルオプションの話をしていますが,全部飛ばしても問題ありませんでした。

13 CD・DVDでの最後の作業

 公式ハンドブックでは自由選択としており,実際指定しなくても全く問題ないとは思いますが,ちょっと自信がなかったので,ミラーサイトの指定はしていました。
「mirrorselect -i -o >> /mnt/gentoo/etc/make.conf」
「mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf」
それぞれ起動するとサイトを選ぶ画面になりますので矢印で好みのものをspaceバーで選び,矢印でOKにあわせてEnterで完了します。
 その次のDNS情報のコピーと/procおよび/devのマウントは必須です。
「cp -L /etc/resolv.conf /mnt/gentoo/etc/」
「mount -t proc none /mnt/gentoo/proc」
「mount -o bind /dev /mnt/gentoo/dev」

14 HDD上の作業に移行

 今まではCD・DVDから起動してましたからファイルシステムの大本・頂点である/がCD・DVD上にありました。ここから先の作業もファイル名を/から正確に記述して進めることが全く不可能でもないのですが,まあ面倒くさいので,将来HDDから起動する時の/を/とみなして作業すべく,そのような設定をします。
「chroot /mnt/gentoo /bin/bash」
「env-update」
「source /etc/profile」
「export PS1="(chroot) $PS1"」

15 portageツリーの更新

「emerge --sync」でportageツリーを(念のため)最新版に更新します。
この後のprofileの編集・確認やUSEフラグの設定・確認は飛ばしても大丈夫でした。

16 glibcのlocaleの指定

公式ハンドブックでは自由選択になっていますが,後からだとたぶん忘れると思うし,問題が起きた時にここのところを思い出す可能性は低いと思ったので,この段階で指定してしまいました。
「nano -w /etc/locale.gen」でlocale.genを開くと日本語関係が#でコメント扱いにされているはずなので,#を消します。
私は英語関係と日本語関係を活かしました。
公式ハンドブックに沿って書けば
en_US ISO-8859-1
en_US.UTF-8 UTF-8
ja_JP.EUC-JP/EUC-JP
ja_JP.UTF-8/UTF-8
ja_JP/EUC-JP
ってところでしょうか。
編集が終わってファイルを保存したら
「locale-gen」
を実行しておきます。

17 TIMEZONEの設定

 前の段階で時刻あわせをしなかった時,その理由として「世界時との時差を設定してから時刻あわせをしないと混乱する」ということを述べました。ここでその「世界時との時差」を設定します。
 日本時を設定する前提で話を進めますが
「ls /usr/share/zoneinfo」で日本時がなんという名前になっているか確認します。たぶん「Japan」だと思います。「Japan」だとすれば
「cp /usr/share/zoneinfo/Japan /etc/localtime」
とします。

18 カーネルのコンパイル

 gentooの場合,カーネルのソースもいくつかの選択肢がありますし,そこで生成されるカーネルもいくつかの選択肢がさらにあることになりますが,ここでは標準的なソースを使って「genkernel」を生成することにします。これが一番楽です。コンパイルに時間かかるしできたカーネルも遅い方ですが,そこの速度向上は慣れてからで十分です。
「emerge gentoo-sources」でソースを落とします。
きちんと準備ができているかどうかは「ls -l /usr/src/linux」でその結果「/usr/src/linux -> linux-2.6.35-r12」みたいなリンクが生成されているかどうかで判断します。
そして公式ハンドブックの「マニュアルコンフィギュレーション」を全部飛ばして「genkernel使用」の項まで進み,
「emerge genkernel」
「zcat /proc/config.gz > /usr/share/genkernel/arch/x86/kernel-config-2.6」
「genkernel all」
とします。
ちなみに……amd64版を使っている場合,上のzcatのところで「x86」を「amd64」に変えなくていいのかどうか,今も不安です。でも上で生成されちゃうんで,まあいいか……と。カーネルのコンパイルは慣れてからいつでもできるので,動いている限りまあいいだろうと。(実は生成されるカーネルのファイル名が「x86_64」となっていたので,x86と指定すると64bit版かどうか判断して64bitCPUならx86の64bitCPUとして扱うし,AMDの64bitCPU使うならきちんと指定しろってことなのかもしれない。)
 終わったら生成された2つのファイルのファイル名を「ls /boot/kernel* /boot/initramfs*」で確認の上,メモ用紙に正確に書いておきましょう。あとでgrubの設定の時に使います。
 モジュールの設定は飛ばしても大丈夫でした。

19 /etc/fstabの作成

 システム起動時に自動的にマウントされるファイルシステムを書いておきます。何を書くかの詳細は公式ハンドブックをみてもらうこととして「nano -w /etc/fstab」でfstabファイルを開き,最初に書いた「ハードディスクの区画の対照表(/dev/sda1が/dev/hda2だとか書いているメモ)」を見ながら書き換えます。例えばこんな感じです。
/dev/hda2 /boot ext2 defaults,noatime 1 2
/dev/hda3 none swap sw 0 0
/dev/hda5 / ext3 noatime 0 1
/dev/cdrom /mnt/cdrom auto noauto,user 0 0

20 ネットワーク設定

 今はCD・DVDでうまいこと探し当ててくれてネットワークに接続できているという話なので,このままHDDから動かしてもネットワーク接続はできません。今のうち設定しておきます。
 私の家の環境では,ADSL回線でいわゆるADSLモデムにルータ機能があり,DHCPサーバーが動いています。この状況下で一番簡単なのは,「gentooが動くコンピューターにはDHCPからIPアドレスを動的に割り振ってもらう」戦略です。もしこれが可能であるにもかかわらず,静的アドレスをふりたいという心情だけであれば,gentooがまともに動くのを確認するまでとりあえずDHCPサーバーを有効にしておくことを個人的にはお勧めします。
「nano -w /etc/conf.d/net」
で,netファイルの中に
「config_eth0=( "dhcp" )」
という記述を加えます。
保存して終了した後,
「rc-update add net.eth0 default」とすればこれで終わりです。公式ハンドブックのネットワーク設定の他の項目は気にしなくてよいのです。/etc/hostsファイルもそのままでかまいませんし,PCMCIAまわりも不要です。

21 root(権限者)のパスワード設定

 これは忘れないで確実に設定してください。そうしないと,せっかく起動したgentoo linuxにrootでログインすることができなくなります。(昔のワークステーションはrootでもパスワードなしって運用が可能だったんだけど,今はたいてい許してくれない。)
「passwd」
たぶん2回打つよう言われます。

22 クロックオプション

 公式ハンドブックではクロックオプションの前に/etc/rc.confと/etc/conf.d/keymapsの設定・確認をしていますが,これはここまでのインストール作業中に,キー入力があるキーで必ず変になるってことでもない限り,CD・DVD起動時の修正がそのまま反映しているはずなので,特に修正しなくても大丈夫だと思います。まあ/etc/conf.d/keymapsは見てすぐ意味がわかると思いますので,それを見て安心するのも一興だとは思いますが。
 そしてクロックオプションですが,これは必ずやってください。
「nano -w /etc/conf.d/clock」でclockファイルを開き
「CLOCK=なんとか」の部分を「CLOCK=local」と変えて,「機械の内部時計は地方時である」ことを明示します。
そして「TIMEZONE=なんとか」の部分を「TIMEZONE="Japan"」と変えて,地方時が日本時であることを明示します。
修正が終わったらファイルを保存します。

23 システムツールのインストール

 公式ハンドブックでは「IBM PPC64のシステムにインストールしたのでなければ」となっていますが,AMDの64bitシステムがこの条件に該当するのか否かわからなかったので,「IBM PPC64ではない!」と判断して,システムツールのインストールに入ります。
 なお,ここでは,「HDDから起動でき,ネットワークに接続できることをできるだけ早く確認する」という観点で作業しています。
(1)システムログ
 後で入れます。
(2)cron
 後で入れます。
(3)ファイルのインデックス
 完全に飛ばしましたが特に問題は起きていません。
(4)DHCP
今回の戦略は「gentooが動くコンピューターにはDHCPからIPアドレスを動的に割り振ってもらう」だったので
インストールするのを忘れないように。
「emerge dhcpcd」
ちなみに私の場合pppは不要でした。

24 grubのインストール

 grubはlinuxの立ち上げ時使われるプログラムです。他には昔からあるliloもありますし,公式ハンドブック以外の方法も原理的にはあるのですが,ここではgrubを使います。
 さらに,電源投入直後にgrubが動くのではなく,先にMBMを動かしてMBMからgrubを起動する形にします。とはいえ,MBMは既にインストール済みですから,公式ハンドブックとは異なる場所にgrubをインストールすることになります。
まずは「emerge grub」です。
次に「nano -w /boot/grub/grub.conf」でgrub.confを設定します。
「ハードディスクの区画の対照表のメモ」とカーネルコンパイル後に「ls /boot/kernel* /boot/initramfs*」で確認した2つのファイル名のメモを準備してください。
内容としては
default 0
timeout 30
#splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Gentoo Linux 2.6.35-r12
root (hd0,2)
kernel /boot/kernel-genkernel-x86_64-2.6.35-gentoo-r12 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/hda3 vga=ask
initrd /boot/initramfs-genkernel-x86_64-2.6.35-gentoo-r12
という感じになります。
1行目から説明すると,defaultはこの場合は0のままです。複数のOSを起動するよう仕掛ける時に,選択がなされなかった時のどのOSを選択するかを書く場所です。
2行目timeoutは選択がなされないと判断してdefaultで設定したOSを起動するまでに待つ時間(秒数)です。
3行目はコメント扱いにしていますが,なんか背景でうねうね動かすか否かですのでコメント扱いにすることで問題ありません。
4行目titleはgrubが起動した時にメニューとして表示される文字列です。
どう指定してもOSの立ち上げには影響しませんので極端な話空白でもよいのですが
カーネルの(ファイル名からわかる)バージョンにあわせておくのが無難だと思います。
将来複数のOSを動かす時にはその時に区別できるように命名するといいでしょう。
5行目〜7行目がカーネルの存在する場所の指定です。
まず5行目はカーネルが存在する場所をハードディスク番号とパーティション番号で指定するのですが,困ったことに「/dev/hda」の表記では一番先頭の区画は「/dev/hda1」のように1番からはじまる番号で特定されるのに対し,「(hd0,0)」の場合には0番からはじまる番号で特定されます。その結果「/dev/hdan」は「(hd0,n-1)」と表記されることになります。これは混乱の要因ですから,「ハードディスクの区画の対照表のメモ」に,例えば「/dev/hda2」の横に「(hd0,1)」と書くなどして混乱を防ぎましょう。
6行目と7行目はそれぞれkernelとinitrdに該当するファイル名を(/からのパス名込みで)書きます。7行目のinitrdはひとめ見てわかると思いますが,6行目のkernelについてはreal_rootとして/のあるパーティションを/dev/hdanの形式で書くため,ここにも修正が必要なことを忘れないでください。
終わったら確認の上,保存します。このファイルの設定がおかしいとそもそもgentoo linuxが動かないので慎重に行きましょう。
保存後はgrubのインストール後の処理を行います。
「grub --no-floppy」でフロッピーディスクの検索を行わないことを宣言した上で起動し,
「root (hd0,1)」でHDD上のカーネルの所在を指定します。
その後「setup (hd0,1)」としてMBMから起動すべきgrubを(hd0,1)で表示される/boot用の領域にインストールさせます
(今までの設定だと,「カーネルをboot領域に置き,grubもそこに置く」はずなので,「(hd0,x)」は同じになるはずです。)
終われば「quit」で終了です。
ちなみに「grub --no-floppy」の前に「grep -v rootfs /proc/mounts > /etc/mtab」をすることは意味がないはずですが,ついやってしまっていました。

25 再起動

 以上の作業でHDDから起動できるはずです。最後にCD・DVD上に制御を戻して再起動します。
「exit」
「cd」
「umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo」
※「umount /mnt/gentoo/boot」「/mnt/gentoo/dev」……と別々に作業しても可。この場合「umount /mnt/gentoo/boot」は「umount /mnt/gentoo」の前に実行する方が筋がいい
「reboot」
rebootの後適当なタイミングでCD・DVDを抜いてください。
HDDから起動するとまずgrubによる選択画面が表示されます。
選択肢は1つしかないはずなのでそのままEnterを押すといろいろと表示された後に
ログイン画面がでます。
ログイン名は「root」パスワードは自分で設定したはずのパスワードです。
ログインできたら問題ありません。
環境設定や必要なプログラムのインストールとなります。
公式ハンドブックでは一般ユーザーの登録を勧めており,実際rootで作業するのは勧められないのも事実なんですが,正直再起動が何回かかかるのがわかっているのに,いちいちsuとかsudoしなきゃいけないのもうっとうしいので,一段落するまではrootで進めて,落ち着いた段階でユーザーを登録し,そのユーザーで作業することに変えていました。
ところで,もし問題がある場合,一からやり直してもいいのですが,HDDに必要なファイルは存在していて,ただ単純に設定がおかしいというのであれば,インストール手順を途中から開始することも可能です。具体的に言うとCD・DVDを入れて起動したら一気に13の/procと/devのマウントをした上で14のchrootからexportまで行い,16以下のチェックを行うことで,結構救われるミスがあります。(私がよくくらったのはrootのパスワードの設定もれ,fstabのミス,grub.confのミスでした。)
あと,公式ハンドブックでは不要なファイルの削除として
「rm /stage3-*.tar.bz2*」と「rm /portage-latest.tar.bz2*」を実行することにしています。

26 フレームバッファの有効化

 jfbtermはフレームバッファが有効になってないとまともに表示されませんので,フレームバッファが有効になるかを確認します。
 rootでログインしている状態で「shutdown -h now」で電源を落として再起動をかけます。
(当然別のコマンドで電源を落とさず再起動してもよいわけです。rebootでもいいのかな?)
 grubの選択画面で「e」を押します。そうするとgrub.confに書いてある起動手順というかコマンド列が出ますので,2行目kernel行にあわせてもう1回「e」を押します。そうするとこの行が編集できるようになりますので,文末に空白1個を置いた上で「vga=ask」を加えます。その後[b]でbootするよう指示すると起動がはじまって途中で止まり,Enterを押すことで画面の解像度を示す3桁の数字もしくはアルファベットの一覧表が出ます。適宜の解像度を選びその数値を入れてください。あとは今までと同様です。もし何も表示されなくなればその解像度では表示できないということなので,再起動してください。
※たぶん表示されないだけでgentooは動いていますから,HDDがとまったなど適当なタイミングでrootおよびパスワードを入れて,「shutdown -h now」とする方が安全です。
ちなみに640x400や640×480で色数を示す末尾の数字の少ないものを選んでも表示できない場合には,フレームバッファ関係に何か異常があるのですが,ここで述べたインストール方法では解決できないので,公式ハンドブックやその他の情報を組み合わせて解決せざるを得ません。そもそもハードウェア的に無理な機械なのかもしれませんし。
 有効になることがわかった場合,rootでログイン後,「nano -w /boot/grub/grub.conf」でkernel行の末尾に「vga=ask」と加えて保存することで次から毎度解像度を聞いた上でフレームバッファを有効にして起動します。よく使う解像度が決まってきたら「ask」の部分を数値に置き換えることで,その後はその解像度で自動的に起動するようになります。

27 portageの最新化

 必ずしも必要ないのですが,emergeする時に,「最新版じゃないからだめ」と言われないように,ここで最新版に置き換えておきましょう。
「emerge portage」
で可。

28 autounmaskのインストール

 emergeの時に何か注意喚起が必要であればemergeできないよと言ってくるのですが,それを強制的にemergeする時にいくつかの方法があります。autounmaskはいくつかのファイルを書き換えることでemergeできるようにしてくれるありがたいソフトですが,当然それなりの危険もあるわけです。(だって注意喚起をろくに読まないでemergeできるようになるって使い方も可能。)
「emerge autounmask」
その後の使い方ですが,まずemergeでエラーが出たとしましょう。その時にどのプログラムでエラーが出たかを残されたメッセージ等で推測します。
推測したら「autounmask dev-lisp/kcl-0.9」形式で。
ちなみにプログラム名は相対パス形式で表示されるのでそれをそのまま入れるか
上の例だと「autounmask -n dev-lisp/kcl」という形式もあり得ます。

29 システムログ

 なくても動きますが,将来的には勉強を兼ねて入れておくべきでしょう。
 とりあえずこれというものがなければ公式ハンドブック推奨のsyslog-ngでいいでしょう。
「emerge syslog-ng」
「rc-update add syslog-ng default」

30 cron

 なくても動きます。しかし,自分で操作ができない,面倒だ,忘れるって人のためにに,指定された時刻に指定されたプログラムを動かすということを自動的にやってくれるのがcronです。ぜひ入れておきましょう。
 とりあえずこれというものがなければ公式ハンドブック推奨のvixie-cronでいいでしょう。
「emerge vixie-cron」
「rc-update add vixie-cron default」

31 windowsの領域も読み書きできるようにする

(参照http://memo.officebrook.net/20070526.html
「emerge ntfs3g」でntfs-3gをインストールし
「update-module」でモジュールとして有効化しておきます。
さらに「nano -w /etc/fstab」でfstabの中に
「/dev/hda1 /mnt/windowsxp ntfs-3g noatime,locale=ja_JP.utf8 0 0」
という記述を加えます。
1欄目はwindowsの入っているハードディスクの領域を指定します。たぶん/dev/hda1でいいはずです。
2欄目はgentoo linux側のマウントポイントを指定します。windowsxp以外でも他と区別できる名前であれば何でもかまいません。
残りはこのままでいいと思います。
4欄目のうち,私はデフォルトで常時マウントにしたのですが,必要に応じてmountコマンドを打つんだというのであれば,cd-romの設定に準じてさらに指定を加えることになります。localeのja_JP.utf8は,gentoo linux側でどの漢字コードを標準とするにしてもutf8としてください。確認はしていませんが,おそらくwindowsの漢字コードがUTF-8を使用しているからだと思われます。
保存して終了したら,「mkdir /mnt/windowsxp」と,2欄目で指定したディレクトリを作っておいてください。
gentoo linuxを再起動すると,/mnt/windowsxp以下から読み書きできるようになっているはずです。
これをやっておくとgentoo linuxでファイルへのアクセスができない時に,いったんwindowsに戻って,ファイルを落としてきて,それをgentoo linuxから利用するなんてことが可能になります。

30 .bash_profileを設定する

漢字の表示ができるようにするために,最初に.bash_profileに設定をしておきます。
念のため「cd」でホームディレクトリに移動しておいた後,「nano -w .bash_profile」とします。
「LANG=ja_JP.eucjp
 export LANG」
を加えておいて保存・終了します。
ja_JP.eucjpを変更すればShift-JISでもUTF-8でも使えるはずですが,ソフトによってはShift-JISに対応していなかったり,UTF-8に対応していないものがあり,一番使えるソフトが多いのがEUCなのでこのようにしています。ただ,UTF-8対応のソフトが増える一方で,EUC対応のソフトがメンテナンスを中止・終了することも増えているため,将来的にはUTF-8への移行も意識しておく必要があると思います。

32 linksのインストール

「emerge links」
インストール時にお世話になったブラウザ「links」は,日本語対応しているブラウザをインストールしてしまうと,これから先はそう使わないと思うのですが,念のため入れておきます。

33 jfbterm本体のインストール

「emerge jfbterm」でjfbtermをインストールします。
ただし,インストールしただけではフォントが足りないので,完全な表示ができません。

34 フォントの追加1 intlfontsの追加

(参照 http://mylinux.blog42.fc2.com/blog-entry-50.html
「emerge intlfonts」で追加したあと
「nano -w /etc/jfbterm.conf」で一部書き換えます。
「fontset:iso646-1973irv.pcf,L,/usr/share/fonts/misc/8x16.pcf.gz」とあるのを
「fontset:iso646-1973irv.pcf,L,/usr/share/fonts/intlfonts/8x16rk.pcf.gz」に変更し
保存・終了します。

35 フォントの追加2 jiskan16.pcf.gzの追加

(参照http://www.fukatani.org/~hi-lo/blog/archives/2005/12/linux-1.html
jiskan16.pcf.gzをどこかから見つけてきて所定の場所に置きます。
私の場合はwindowsにcygwinをインストールしていたので,その中に見つけました。
場所をおさえた上でgentoo linuxの/mnt/windowsxp以下からコピーしてきます。
「cp /mnt/windowsxp/(どこか)/jiskan16.pcf.gz /usr/share/fonts/misc」
……私は小心者なので/usr/share/fonts/miscの他のファイルと属性をあわせるために「chmod」しましたが。
ここまで来ると日本語が表示されるはずです。
「jfbterm」でjfbtermが起動しますので,「cat 適宜のファイル名」で日本語が表示されることを確認してみてください。
私は事前に「sjis.txt」「jis.txt」「euc.txt」「utf8.txt」という名前のファイルをwindowsに作っておき,中身をそれぞれの文字コードで書いて保存して,それをgentoo linuxのjfbtermを起動させた上で「cat euc.txt」などとしていました。

36 emacsのインストール

「emerge emacs」
AMD64だとこれでemacsがインストールされる他,quailまで標準装備で結果その中のKKCがかな漢字変換してくれるというありがたい状況でした。(x86の486版だとこうならなかったので,AMD64が特別なのか,無意識に何かインストールしたせいなのか……。)
これで「ログイン→jfbterm起動→emacs起動」で日本語が扱えます。
emacsですからshellを起動することもできますし
emacs lispは使えるのですから,この段階で
「CUIなノート型ワークステーションの完成!」としてもよいのです。
まあlispとしてはcommon lispとschemeも使いたいのでさらにインストールします。
ここでは説明を省略しますが,「.emacs」を別途設定しておいた方が使い勝手がよくなります。

37 Steel Bank Common Lispのインストール

今common lispとしては人気の高い処理系をインストールします。
「emerge sbcl」でできました。
起動も「sbcl」です。
公式サイトはhttp://www.sbcl.org/ですが,日本語版としてhttp://lispuser.net/commonlisp/sbcl.htmlがあります。
なお,Kyoto Common LispがFSFに譲渡されてできたGnu Common Lispについては,「emerge gcl」とすると,maskしている旨の警告が出ます。

38 Gaucheのインストール

schemeの処理系として人気が高い処理系をインストールします。
「emerge gauche」でできます。
起動は「gosh」です。

なお,2010年12月30日現在,amd64ではgaucheはmaskされています。
gentoo linuxにおけるmaskは,何らかの不都合のある危険性を指摘するものなので,
意味がわからなければ回避策を打つべきではないとは思いますが……。
私が使うソフトウェアでそういう危険のあるのってあるんだろうか?(笑)
本来は,/etc/portage/package.maskに「パッケージ名 許容するキーワード」を指定して
それ確認できていないパッケージについてはmaskを回避しないでおくべきなんでしょうが
私安易に/etc/make.confに
ACCEPT_KEYWORDS="~amd64"
を書いています。
……初期のインストールが終わればコメントアウトすればいいや……。

39 ユーザーの追加

 前にも述べたとおり,普段の作業をrootでやるべきではありません。普段の作業用のアカウントを別に作り,そのアカウントで普段は作業しましょう。
「useradd -m -G users,wheel -s /bin/bash sasaki」の要領です。
「users,wheel」のところは,所属するグループで,グループによってできることが変わってきます。詳細は公式ハンドブックを見ていただくこととして,wheelは一時的にrootになるsuやsudoを実行するために必要なグループですから絶対に落とさないでください。
末尾がユーザー名で,このユーザー名でログインすることとなります。
ユーザーを追加したら,そのユーザーのパスワードを設定します。
「password sasaki」とするとパスワードを入力するよう2回求められます。
設定できれば,既にユーザーは追加されています。

これで基本形としては完成でしょう。
問題としてはemacsを起動しない時の日本語の入力で,これは私にとっての研究課題となっています。
というのはskk-fepを「emerge skkfep」でインストールしちゃえばいいのですが
AMD64版ではmaskされてて簡単にはインストールできない上
それを解除する旨設定してインストールできたとしても
百発百中でSegmentation Faultが発生して終了してしまうのです。
「ホゲゆに」ではソース(config.h)の修正で乗り切ったのですが
私が同じ修正をしてみてもだめでした。
x86の486版ではmaskされていないものの「Cannot get /dev/tty%s」ってエラーの後
やはりSegmentation Faultで終了してしまいます。
AMD64版をメインにしようと思っているのでemergeでmaskされない他の日本語FEPを使えるようにするのが筋でしょうし
その方向で処理したいと思っています。
以下は,趣味で追加したものです。

40 SKKのインストール

「emerge skk」
既にemacsで漢字の入力が可能になっているのでskkをあえていれる理由は全くないのですが,まあ惰性で。

41 w3mのインストール

「emerge w3m」でインストールして「w3m URIで示された場所」で起動。
日本語に対応した,できるだけ一般的なブラウザで見えるのと同じように努力したコンソールベースのブラウザです。pagerの代わりにもなるという指摘もあります。
www.lufimia.netは文字情報だけでかつcssを使った装飾は一切していないのですが,w3mで見ると,特に問題なく見えています。

42 emacs-w3mのインストール

「emerge emacs-w3m」でインストール。
まだ「emacs -f w3m http://www.lufimia.net/」の形でしか動かしてないんですが,
端末からのw3mでは化ける文字が化けなかったりしてなかなか快適です。
もっとも端末からのw3mはページャとしても使えるのでこれはこれで便利なので,
結局両方入れるが正解と思われ。
(参照 http://emacs-w3m.namazu.org/index-ja.html

43 ncursesのインストール

「emerge ncurses」
書き換える必要があるようなソースをコンパイルする時に結構使う模様。
Cでコンソール用のプログラム書く時も結構便利だし。

44 libcacaのインストール

「emerge libcaca」でインストールして「cacaview ファイル名(bmp)」で起動。
コンソールで画像ファイルを見ようというもの。
なんていうかすごいことになっています。
ちなみに.jpgはだめっぽいです。
(2011.4.18.最終改訂)

デスクトップでも動かしてみる

失敗は明日への糧なのだ!

Maのエッセイへ