ホームに戻る

LOOXS8へのLinuxインストール&Tips

Linuxをインストールする方法

 LOOX S8には、FDDもCDもついてません。そこで私が取った方法は、「ハードディスクをいったん外してデスクトップ機(こいつにはブート可能なCDがついている)のプライマリマスターにつないで、Linuxのインストールが終わったあとで戻す」という方法。S8のハードディスクは裏ぶたのねじ2本外すだけであっさりはずれるので簡単です。ああ一応。やる時は自己責任でね。

 こういうことをやる時に注意しておいた方がいいことが一つ。ノートパソコンの方でちゃんと立ち上がるカーネルがインストールされていることを確かめておくこと。別のノートパソコンで同じことをやった時、デスクトップがセレロン機だったためにi686用のカーネルがインストールされ、当時使っていたノートパソコン (CPU はMediaGX)では起動しない、という間抜けな失敗をしたことがあります。 Crusoeの場合、i686用でも立ち上がってくれるかもしれませんが(試してません)。カーネルはCrusoeはi586だと認識しているようです。デスクトップがアルファマシンだったりする人は注意しましょう(注意以前の問題では) 。あとLOOX特有の注意点としては、LILOなりなんなりのローダで与える起動パラメータに「ide0=ata66, ide1=ata66」をつけておくことです。これを守れば、ちゃんとLOOXに入れ換えた後も起動してくれます。その他のことも含めて、この方のホームページ→HIRAMOTO Kouji's HomePageの「Linux on LOOX S」が参考になります。

 私がLinuxをインストールした手順は以下の通りです。試行錯誤しながらやってますんで、ほんとはもっと少ない手順でできるような気がします。

  1. まずLOOXのHDDの中から、プリインストールされたWindowsXPを再インストールするのに必要な"i386"ディレクトリをコピーし、CDRに焼いておく 。この手順はWindowsXPなんていらん、という人には不要です。
  2. LOOXのHDを取り出して、デスクトップ機のプライマリマスターにつなぐ(この時、2.5インチディスクを3.5インチディスク用ケーブルにつなぐことになるので、変換コネクタなどが必要です。500円くらい出せば買えます)。
  3. CDブートなりFDDブートなりを使ってWindows98をインストールする(後から考えるとこの手順は不要でした。これをやった時点では、loadlin.exeとい う、DOSからLinuxを立ち上げるソフトを使ってLinuxを起動することを考えていたからこうしたんですが)。この時にHDDは完全にフォーマットし、領域確保もしなおしました。私の場合は、HDの先頭から6GBほどがWindows用領域となっていて、FAT32でフォーマットしてます(下に、linuxのfdisk領域表示させたものを張りつけておきます)。
  4. WindowsXPをインストールする。 まだデスクトップ機につないだままなので、1で取っておいた"i386"ディレクトリをさっき作ったFAT32領域にコピーしてからwinnt32.exeを実行すればよい。 ついでに注意しておくと、このWindows用の領域をNTFSでフォーマットするのも一つの手ですが、その場合、LinuxからNTFS領域への書き込みはまだ「Dangerous」なレベルだという点がネックになります(私も試してません)。絶対にこの領域にLinux側から書き込まないというつもりなら、NTFSにしてもいいでしょう(その場合、Windows98もだめですが)。
  5. 次にLinuxをインストール。私が使ったのはVine Linuxの2.1.5。日本語を使う人にとっては1番簡便なディストリビューションだと思います。インストール自体はさくさくと進むと思います(どのようにパーティションを切るかというのが悩みの種ですが、それは後述)。すでに忘れてしまったのですが、サウンドの設定はVine2.1.5の標準状態では失敗するかもしれません。カーネルを2.4系に入れ換えてしまえばサウンド関係の問題は発生しなくなります。
  6. さて、次にどうやってLinuxとWindowsのデュアルブートを実行するかです。いろいろ方法があります。私が使ったのは
    (1)WindowsXPのブートローダにLinuxを起動させる
    (2)SystemCommanderを使う

    の二つです(最初は自分がSystemCommander持っていることを忘れていた)。後、

    (3)liloを使う
    (4)grubを使う(私は使ったことがない)

    というのが考えられます。liloはバージョンによっては8GBより上に/bootパーティションがあると使えません。Vineのliloはたぶん大丈夫だと思うんですが、私はなんとなく、最初は(1)で、後で自分がSystemCommanderを持っていることを思い出して(前に別のノートパソコンで使っていたのですが、そのノートパソコンはのちにlinuxしかインストールしなくなったので、不要になってました)、(2)の方法を使いました。はっきりいってこっちの方が簡単ですが、この方法はSystemCommanderのマニュアル通りにやればいいだけなので、ここでは(1)を解説します。まず、liloをMBRではなく、ルートパーティションの先頭にインストールします。具体的には/etc/lilo.confの先頭の方にboot=/dev/hda6などと書いておきます(このhda6の部分は、自分の作った/に変えておく)。これでliloを実行すると、/dev/hda6にlinuxをブートするためのブートセクタが書き込まれるので、次にそのブートセクタをファイルにセーブします。方法は、

    dd if=/dev/hda6 of=bootlnx bs=512 count=1

    です。こうするとbootlnxという名前のファイル(大きさ512バイト)ができます。これをWindowsから読める場所(たとえばWindowsが起動した時にC:¥になる場所)にコピーしておきます。そうしておいてC:¥boot.iniを以下のように編集します。

    [boot loader]
    timeout=3
    default=multi(0)disk(0)rdisk(0)partition(1)¥WINXP
    [operating systems]
    multi(0)disk(0)rdisk(0)partition(1)¥WINXP="Microsoft Windows XP Home Edition" /fastdetect
    C:¥bootlnx="Linux"
    C:¥="Windows 98"
    C:¥CMDCONS¥BOOTSECT.DAT="Microsoft Windows XP 回復コンソール" /cmdcons


    これで、WindowsXPの起動時に表れるメニューの中に"Linux"が出てくるはずです。

 えらく複雑な手順だな、と思うでしょうが、Windowsから完全におさらばするつもりなら、もっと楽です。

 さて、上で後述する、と書いたパーティションの切り方ですが、具体的に、私の場合の切り方を書いておきます。fdiskで領域表示させると

ファイルシステム      1k-ブロック 使用済   使用可 使用率% マウント場所
ディスク /dev/hda: ヘッド 255, セクタ 63, シリンダ 2432
ユニット = シリンダ数 of 16065 * 512 バイト

 デバイス ブート   始点      終点  ブロック   ID  システム
/dev/hda1             1       784   6297448+  1b  Hidden Win95 FAT32
/dev/hda2           785       787     24097+  83  Linux
/dev/hda3   *       788      2414  13068877+   5  拡張領域
/dev/hda4          2415      2432    144585   a0  IBM Thinkpad ハイバネーション
/dev/hda5           788       820    265041   82  Linux スワップ
/dev/hda6   *       821       951   1052226   83  Linux
/dev/hda7           952      1213   2104483+  83  Linux
/dev/hda8          1214      1475   2104483+  83  Linux
/dev/hda9          1476      1513    305203+   6  FAT16
/dev/hda10         1514      2414   7237251    b  Win95 FAT32

となっています。dfの結果は
/dev/hda6              1035660    207820    775232  22% /
/dev/hda2                23333     13702      8427  62% /boot
/dev/hda1              6285156   3612460   2672696  58% /dos
/dev/hda8              2071384   1264224    701936  65% /home
/dev/hda10             7223124   5102936   2120188  71% /dos2
/dev/hda7              2071384   1276432    689728  65% /usr


こんな感じ。私の持っているLOOX S8はS8/70Nという型番の奴(webmartで通販のみ販売されてました)で、こいつは他の S8と比べて、ハードディスクが20GBしかない(普通は30GB)という点と、MS Officeがプリインストールされていないという点が違います(私は既述の通り、ほとんどLinuxしか使わないのでOfficeはいらなかった)。そういうわけで普通のLOOXの場合、上の結果よりもHDが大きいはずです。
 FAT領域が3つありますが、一つめは最初に切ったWindowsのインストールされた領域。後ろのうちでかい方はWindowsとLinux共用のデータ領域として使うつもりで作りました。たとえばデジカメの撮影データ、CDから作ったMP3ファイルなどはここに置いてます。FAT16のちっこいパーティションが一個ありますが、これはWindowsのスワップファイル専用パーティションとして作りました。スワップを1パーティションにまとめておけば少しはパフォーマンス上がるかな、と思ったんですが。目に見えて変化はないです。
 上の/dev/hda4というのがハイバーネーションのための領域です。Linuxからハイバネ領域を作るには、lphdiskを使うといいでしょう。fdiskで領域確保してIDをa0にセットしておきます。確保すべき領域の大きさがわからなければ、"lphdisk -p"を実行すれば、

Reccomended partition size is 134 MB (274434 sectors)

のようにどれだけのハイバネ領域を用意すればいいかを教えてくれます。上の結果は私のS8で実行した結果なので、メモリ容量が大きいS9などでは違う結果になると思います。

 くどいですが以上の例は私の場合で、機種やインストールするLinuxのディストリビューションの違いなどでいろいろ差が出ると思います。御自分の場合にどうなるかはよく考えたうえでインストールしましょう。

 新しいマシン(特にノート)にLinuxを入れるときに不安になるのは、Xが起動するかということと、周辺機器が使えるか。私の場合、Vine Linuxをインストールして、カーネルを2.4.18を自分でとってきてコンパイルしてインストールしたところ、画面の左についているワンタッチボタンと、モデム以外のデバイスは使えるようになりました。どっちも別に使わないのでいいです(そんな酸っぱいモデムなんて使うもんか)。 Xについては、富士通がTurboLinux7用とRedHatLinux7.1用の動作確認情報をここに出してくれてます。これを見て設定すれば大丈夫かと。ちゃんと1024x600でXが動きまっせ。

 Xの画面がハイバネから戻ると変になる、という現象がありましたが、Vineの場合、/etc/sysconfig/apmdの中に「Xが変になったら以下の行をコメントを外しなさい」というREMがあったので、

CHANGEVT="7"

という記述を生かすと、ちゃんとハイバネから復帰後もXが元に戻るようになりました。ハイバネする時に仮想コンソールを7(Xが使っている)から外して、復帰した時にまた7に戻してくれているようです。ただし、X使ってない時にハイバネしたら、戻ってきた時にも仮想コンソール7に戻して、「誰もいないところ」にたどりつき、画面が変になります。その時はあわてずにALT+F1を押しましょう。仮想コンソール1に戻れます。

 と、Vine2.1.5を入れた時に書いたのですが、その後Vine2.5にバージョンアップすると現象が逆になり、むしろ上のようにすると化け、

CHANGEVT=""

とすると化けなくなりました。おそらくはXFree86のバージョンが4.2にあがったせいだと思われます。

 サウンドはカーネル2.4.18をtridentサポートでコンパイルすればおっけいのはずです。ネットワークは8139tooね。

longrunの設定

 CrusoeというCPUには、longrunという、CPUが忙しい時はクロックをあげ、そうでない時はクロックを下げて休んで、バッテリーの持ちをよくするという機能があります。Linuxの上からでもこのlongrun機能をコントールするユーティリティがあって、たとえばkernel.orgのここからソースをダウンロードできます。コンパイルはたぶんmake一発で通ります。問題は、cpuid関連の機能がカーネルにインストールされてないと動かないので、カーネルをリコンパイルする時、CONFIG_X86_MSRCONFIG_X86_CPUIDというスイッチをyにしておきましょう。cpuidやMSRを操作するためのdevファイルが必要になりますが、そのためのシェルスクリプトはソースの中にMAKEDEV-cpuid-msrという名前で入ってます。ありがたく使わせてもらいましょう。
 で、どうせなら「AC電源が刺さっている時はパフォーマンス重視で、バッテリ駆動の時は経済的に動かしたい」というわけで、AC電源が抜き差しされた時に設定を変えるようにしておくと幸せです。
 Vine2.5の場合、この設定は/etc/sysconfig/apm-scripts/apmscriptというシェルスクリプトを書き換えて行います。apmデーモンが動いていれば、AC電源が抜き差しされた時、このスクリプトが「change power」という引数を伴って実行されます。スクリプトの200行目くらいからを

change)
	case $2 in
	power)
		# Change from battery power to AC power or vice versa.
		# You might want to stop/restart any unnecessary CPU intensive
		# tasks (seti@home, distributed.net clients, etc) here.
		
		OFF=`apm | grep off`
		if [ "$OFF" = "" ]; then
		    /usr/sbin/longrun -f performance
		    /usr/sbin/longrun -s 0 100	
		else
		    /usr/sbin/longrun -f economy
		    /usr/sbin/longrun -s 0 100
		fi
		;;
	battery)
# Battery low. If you want to be on the safe side, maybe put
# the harddisk into extreme powersaving, or "apm -s" here.
;;
  esac


 と書き直します(赤字が書き足した部分)。apmコマンドは、AC電源がない時は「off-line」という単語の入ったメッセージを返すので、AC電源がささっていれば、OFF=`apm | grep off`の結果は空文字列になるので、その場合はパフォーマンスモードに、そうでない場合はエコノミーモードに変えています。-sオプションは好みにより変えてもいいでしょう。たとえばパフォーマンスモードの時はずっと100%でぶん回せ、という場合は/usr/sbin/longrun -s 100 100としておけばいつでも100%の速度で走ります(ちなみに0は0%というわけでは実はなくて、300MHzで走る)。ところでこの下にバッテリがクリティカルになった時にスクリプトを実行する、ということができるらしいのだけど、実際に「apm -s」(コンピュータをサスペンド状態にしろ、という命令)を記述してみると、サスペンド途中で止まります。もしかしてapmscriptの中から「apm -s」を介してまたapmscriptを呼び出しているせいかも。回避方法がわからんのでバッテリ容量を監視する別のプログラムを書いてcronで3分ごとに呼び出してますが(^^;)。なんかまたいい方法見つけたら報告します。

カーネル2.5.49-ac1+jconsole-patch

 Linuxのカーネルを2.5.49-ac1に入れ替え、さらにjconsole-patch(Xではなく、フレームバッファコンソール上で漢字を使えるようにするパッチ。Xなしで漢字表示が可能になる)をあててみました。このパッチを当てると、起動即、Xを立ち上げなくても漢字の使用が可能になります。
 実は前にも2.4.18あたりのカーネルでも同じことをやってみたのですが、その時はコンソールでフレームバッファを使うとXが非常に遅くなってしまったのでフレームバッファを使うのをあきらめたのです。しかし、2.5.49にしてみると、フレームバッファを使ってもXがちゃんと普通に動きました。じゃあというわけでjconsole-patchもやってみたわけです。

 まず2.5.49-ac1ですが、ソースはもちろんwww.kernel.orgもしくはそのミラー(ftp.ring.gr.jpの/pub/linux/kernel.orgあたりでもよいかと)からたぐって、2.5.49のtar球をとってきて、さらにac1-patch(Alan Coxパッチ。たとえば、ftp.ring.gr.jp/pub/linux/kernel.org/kernel/people/alan/の下linux-2.5の中にある)をとってきて当てます。

 ちなみにパッチをあてる、というのは、ソースツリーのルート(たいていの場合は/usr/src/linux)に行って、

gzip -c -d パッチファイル名 | patch -p1

とやるということです。

 これを書いている間にカーネルのバージョンはどんどんあがって、書いている時点でもう2.5.51まで来てます。たぶん新しいバージョンでも同様にできるとは思いますが、どうなるかはやってみなくちゃわかりません。

 次に、大野洋史さんの作られたLinux日本語コンソールのページに行って、jconsoleのパッチをとってきて、まずはえいやあっ、とあてます。すると、まず二つのファイルに関して、「このファイルが見つからんぞ」とpatchが文句を言ってきます。あと、.rejファイル(patchプログラムがこのパッチは当たらん、と拒否した内容が書かれている)が2つできます。

 ファイルがないぞと文句を言われるのはDocumentation/Configure.helpdrivers/char/console.cです。Configure.helpがないのは、2.5ではこのファイル自体がないからです。というわけでこのパッチにあたる部分は手で修正します(後述)。console.cの方はvt.cに名前が変わっているので、そっちに当てます。

 linuxカーネルの2.5では、カーネルのコンフィグレーションのヘルプファイルなどの設定が、いろんなディレクトリに混在するようになってます。該当するファイルはdrivers/video/Kconfigです。これに関してはパッチファイルの中身を見ながら修正していけばいいんですが、結局は下に貼り付けたpatchのような修正をします。


--- linux.orig/drivers/video/Kconfig    2002-12-11 00:47:26.000000000 +0900
+++ linux/drivers/video/Kconfig 2002-12-10 19:43:29.000000000 +0900
@@ -1059,6 +1059,30 @@
        depends on !FBCON_ADVANCED && FB_STI
        default y

+config FBCON_LANGEXT
+       bool "Support Multi-Language Extension"
+       help
+         Support multi-language extension. (for Japanese euc_jp encoding)
+
+config FBLANG_EUC_JP
+       bool "Support Japanese EUC_JP Encoding"
+       depends on FBCON_LANGEXT
+       help
+         Support Japanese euc_jp encoding.
+
+config FONT_KANJI_16x16
+       bool "Japanese Kanji 16x16 font"
+       depends on FBCON_LANGEXT && FBLANG_EUC_JP
+       help
+         This is Japanese kanji font for Japanese euc_jp encoding.
+
+
+config FONT_MARU_16x16
+       bool "Japanese Marumoji 16x16 font"
+       depends on FBCON_LANGEXT && FBLANG_EUC_JP
+       help
+         This is Japanese marumoji font for Japanese euc_jp encoding.
+
config FBCON_FONTWIDTH8_ONLY
        bool "Support only 8 pixels wide fonts"
        depends on FB

 この緑色部分を切り取ってpatchに食わせてみてください。

 あとはソースツリーのルートでmake menuconfig(あるいはmake xconfig)します。この時に注意するべきことを羅列しておくと、

・モジュール機能はうまく動かないので使わないこと(現在調査中)
・CPUはCrusoeを選ぶこと(あたりまえ)
・/dev/cpu/*/msrと/dev/cpu/*/cpuidは有効にしておいた方がいい。longrunを使うのに必要。
・パワーマネージメントはACPIをオフにして、APMを使うのが無難。
・IDEにAli15x3を選ぶと、起動時にエラーメッセージが出る。でも動くから気にしないことにする(^^;)。
・LANはRTL8139。
・2.5系カーネルでは、Input deviceの中でキーボードを有効にするのを忘れると手も足も出なくなります(^^;)。
・フレームバッファを当然選ぶんだけど、ATI Mach64を選択しても有効にならない様子。とりあえずVESAを使おう。
・フレームバッファのメニューの下の方にMulti Language と Japanese EUCのサポートの選択が出るので迷わずオン。
・サウンドはALSAでAli M5451を選ぶと吉。
・USBはOHCIです。
・kernelデバッキングをオンにすると起動に失敗することがあるので注意。

 起動時にあたえるパラメータとして、liloなら(いやliloしか知らんのだけど)

vga=789

を追加しておきます。これで800x600でフレームバッファが有効になるはずです。ほんとは1024x600にしたいところですがまだ成功してません。

 以上をやった後で気づいたんですが、UNICONというプロジェクトもあって、そっちでも漢字が出せます。どころか2.6からVineの標準になってました(^^;)。私はいつも自分でカーネルコンパイルしていて、Vineの標準カーネル使ってなかったから気づかなかった(^^;)(;_;)(^^;)(;_;)。

 2.5.49-ac1+jconsoleにしてよかったこと。

1.サウンドドライバをALSAにしたら、サスペンドの前後でサウンドがおかしくなる現象が出なくなった。
2.5回に1回ぐらいサスペンドに失敗してハングするということがなくなった。
3.コンソールで日本語が使えるようになった。

 あと、見ているとできる限りスワップを使わないように動いているみたいです。まぁ、体感的に早くなっていると感じるほどではないけど、パフォーマンスもよくなっているはず。

LOOXをいびつに使う、のトップへ戻る

ホームに戻る