NetBSDを68kパワーブックにインストールして、サーバ運用を続けて一年。そこそこ快適にはなったが、不便な点も多い。まず、ディスクエラーが頻発する事。これは原因が分からないまま、いまだに「Waiting for DREQ」となって固まる間、作業時間は止まる。それから、これはCPU性能の限界で、仕方が無いが、動作が重たいこと。Netatalkでマックからファイルを呼び出すのだが、ウインドウの開閉、内容の表示、これが、かなり手間取ってしまう。(逆にサーバのファイルだな。とはっきり区別がつく利点もあるが…)
と、言う訳で、古いノートWINPCが一台あまっているので、これをlinuxマシンにしてしまうことにした。
スペック:
スペック的には、なんの変哲もないサブノートだが、このマシンは起動可能なCDドライブと、これも起動可能な外付けFDDが標準で付属している優れ物。これによってDebianのインストールはほぼ自動化が可能になる。
68kマックにNetBSDをインストールする場合と違って、WIN機なら標準のOSは起動に必要としない。つまり、BIOSが起動する状態で、CD、もしくはFDからインストールディスクで起動する事ができれば、とりあえずインストールできる。
ディスクイメージの入手
今回、導入するのはGNU Debianと言うディストリビューション。横文字は得意でないので良く分からないが、GNUって組織で管理しているDebianっていうOSってことかな? もともとLinuxってのは、フィンランドだかどっかの学生が作り始めたものを、いろいろな人の手によっていろいろな姿に改良されていったオープンソース(内容が公開されている)プログラムなんだそうだ。VineとかRedHatとかいろんなのがあるが、今回入手したDebianはフリーで公開されているLinuxのひとつ。なかでも安定版の、kernel-image2.4というバージョンのカーネルを使用することにした。
Debian(日本語)の公式ページ:http://www.jp.debian.org/
現在(2005.9月)の最新版(安定版)は3.1rev0aだそうだ。○○.isoというディスクイメージをダウンロードしたら、適当なCDーRに焼いてインストールCDは出来上がり。(CDのライティングソフトについては割愛。)
もし、CDに焼けなくても、このディスクイメージをインストールするマシンのHDDに置いて、ブートローダ入りのフロッピーから起動、そのディスクイメージから立ち上げる事も可能らしい(読解力なし!)が、ダウンロードしたイメージのファイルタイプとクリエータを変えてDiskCopyでどうのこうの~、と面倒なので省略。(ふつうはこっちが標準なのかな?)
インストール
インストールCDイメージは、ソフトウエアパッケージを含めたフルインストールCDだと6枚くらいになるようだ。直接購入することもできるようだが、国際郵便で届くのかどうかわからないのと、どーせプラゴミが増えるだけなので、ネット経由でインストールするための最小イメージ1枚(約108MB)で済ます。(もちろんブロードバンドなどで常時接続してないと、電話代が莫大になるのは言うまでもない。)
これがそうです、http://cdimage.debian.org/debian-cd/3.1_r0a/i386/iso-cd/debian-31r0a-i386-netinst.iso
最初にもっとも重要な事を言い忘れたが、今回インストールするマシンはceleronつまりPentiumIIの廉価版だから、プラットフォームはi386になる。他にもPowerPCなどに導入できるようだが、わからないので割愛。(重ねて読解力なし!!)
インストールでまずつまずくのは、インストールするマシンにWindowsが残ったままの場合だ。データを確保した状態で、新たなパーティションを切ってデュアルブートにしたいなどという、贅沢な輩がこれに相当する。
質素、かつ、ずぼらなわたしは、当然そんな面倒な事は考えずに、まっさらに初期化して100%linuxマシンにする!! あとで怨みっこなしだよ。
これなら簡単。インストールCDでマシンを起動。(その前にノートPCの場合はBIOSを起動して電源管理の項目を使用停止にしておく。)つらつらと文字列がながれて、インストールガイドのダイアログが現れる。最初は英語だが、いくつかの項目に答えて日本語を選択すると、以降の画面も日本語表示になるから、英語力の無いわたしにも安心だ。
パーティションは全部linux(リーナックスと読むらしい…)をインストールするを選択、パーティションはファイルサーバ用に分割ってなやつを選んだ。あとで考えたら、全部一つでもよかったかも…、て言うのは、とにかくソフトウエアパッケージが多いので、1.5GBに割り当てられた/usrパーティションがほとんど一杯になってしまうからだ。後々アップグレードを考えているなら、このあたりの領域を増やしておいた方がいいようだ。
まず、Mac Windowsと違うのは、必ずユーザーを登録しなくてはならない。と言っても使用者を特定するためで、べつに高いワランティをとろうとかと言う目的ではなく、ログインユーザを特定するためなので適当なユーザー名とログインパスワード、ホスト名などをでっちあげて入力したら、忘れずちゃんと覚えておくように。
あとは、インストールGO! でザクザクインストールが始まる。もちろんネットに接続しておく事をわすれずに!
小一時間経つと、全てのファイルをダウンロードして、ふたたびインストールガイドの質問が飛ぶ。利用したい環境を選択しろというのだ。いくつか項目のあるなかから、とりあえずデスクトップ環境、インターネット、ファイルサーバとを矢印キーとシフトキーで複数選択。
するとパッケージの展開とインストールがザクザクと始まる。
ふたたび小一時間。わたしの場合、何のエラーも出さずにすんなりインストールが終って、メッセージが… おめでとうございー!再起動するとlinuxが起動するぜ! ヨッシャー! Enter。
起動と設定
時間はかかるが割と簡単なインストール。しかし、ここからが面倒なのだ。自分の利用目的にあわせた環境を構築しなくてはならない。ま、これはMac Windowsでも同じだけどね…
BIOSが蹴られて、カーネル選択画面が現れるが、複数のOS(カーネル)が入って無ければ選択肢は2つ。ディフォルト状態で、そのまま5秒経つと勝手に起動を始める。つらつらと高速で文字列がスクロールされるのはUNIXの「ならわし」だ。適当にやり過ごして、じっと待つこと1分半? デスクトップ環境がインストールされていれば、ログイン画面にたどり着く。さっき登録したログイン名とパスワードを聞かれるので、それをたたき込んでログイン。(ここでroot”管理者”権限でのログインはできない。忘れたひとはコマンドプロンプトでログインする環境に変更してrootでログインするか、最初っからやりなおし!聞いてないとは言わせない!)マックの起動画面を彷彿させるデスクトップ環境が起動する。
本来linux(UNIX系)はコマンドプロンプトで操作するのが基本だが、現在ではXウインドウシステムなどのGUI(グラフィカルユーザインターフェイス)が当然のように使われて、Mac Windowsしか知らなくても違和感なく使えるだろう。日本語の表示にも問題は無い。ただし、管理者権限でファイル操作等をするためにはやはりターミナル経由のコマンド入力は必須だ。
NetBSDをインストールしたときは、かなり苦戦したが、インストール時にボタンで選択した、ネットワーク、インターネットの環境設定のおかげで、mozilla(ウエブブラウザ)に始まって、Samba(Windowsネットワークサーバ) Netatalk(AppleTalkファイル共有サーバ) Apache2(WWWサーバ)などの必要なソフトウエアがすでに起動状態になっている。なんの設定もしなくても、ネットワーク経由で自分のホームディレクトリのファイルにたどり着けるのだ。
あまりのばかばかしさに、mozillaでインターネットをうろついて遊ぶ… が、ここで問題が! Googleで検索をかけようと文字列を入力しようとすると「日本語が入力できない!!」
日本語環境の構築
debianをインストールする時点でシステム言語に「日本語」を選択していれば、すでに必要なソフトウエアはインストールしてあるはずだ。しかし、そのままでは上手く動作しない。
Xウインドウシステムが起動するときに、ユーザごとの設定が書き込まれている.xsessionという不可視ファイル作ってやる。
Debianメニュー(アップルメニューかスタートメニューと同じもの?)から「アプリケーション」「システム」「言語設定」とたどって、Japanese-environmentを選択。
すると、勝手にターミナルが起動し、ユーザごとの言語環境の設定が出来る。適当に(Y N)で答えておく。
そしたら、ホームディレクトリに出来た設定ファイルの.xsessionを編集する。
$ vi /home/[USER]/.xsession
書き加えるのは2行。
~(前略)
# $WINDOW_MANAGER
TERMINAL_EMULATOR=NONE
~(中略)
if type kinput2 &> /dev/null ; then
kinput2 -canna &
fi
XMODIFIERS=@im=kinput2 ; export XMODIFIERS
~(後略)
とすると、kinput2が標準インプットメソッドとして、次回のログイン後に実行される。
デスクトップ環境からこの設定を読み込むように
$ ln -s /home/[USER]/.xsession /home/[USER]/.gnomerc
とリンクを張っておく。
※[USER]ってとこはユーザディレクトリ名です。
これで、Shift Spaceキーで日本語入力ができる。はず。でも面倒臭いから、全角/半角キーで切り替えられるようにしておこう。cannaにはNEC配列キーの「漢字」キーで入力変換ができる設定されていて、それが利用できるらしい。PCの「全角半角」キーをそのキーに割り当てるのだ。
さっきの.xsessionのどこか適当なところ(^^;)に、1行、
xmodmap -e 'keycode 49 = Kanji'
それと、同じディレクトリにある.cannaファイルには、2行、
(set-key 'alpha-mode "\Kanji" 'japanese-mode)
(global-set-key "\Kanji" 'alpha-mode)
と書き加えておくだけだ。
で、初期設定状態でも、結構使えるcannaだが、ユーザ辞書などに単語を登録してもっと使いやすくすることもできる。cannnaの設定は、日本語が入力可能な状態で、homeキーを押すと、いろいろいじれる。ちなみにユーザ辞書は/var/lib/canna/dic/user以下のユーザ名のディレクトリ以下にusr1.ctd というテキストファイルで管理される。この辞書をユーザが書き込める設定にしないと単語登録ができないから注意。
ついでにDebianには標準のデスクトップ環境が2つあるが、標準のGnomeではなく、KDEを標準のデスクトップ環境にするためのコマンドを入力。Gnomeを使いたいなら不要)
# update-alternatives --config x-session-manager
とやると、ディフォルトで起動するデスクトップ環境を選択するよう催促されるので、startkdeと書いてある方のセクション番号を打ち込んでおく。
サーバ運用の注意点
NetBSDでのファイルサーバ環境は、samba2.2.4-ja-1.0 という日本語ユーザの会によってカスタマイズされたものと、netatalk1.5.5という組合せで、設定をWindows側からはCAPエンコーディングと、932(Shift_JIS拡張)という文字コードを選択、Mac側はディフォルト設定で、うまく日本語ファイル名を共有できた。
ところが、今回、debianに標準で搭載されていた両ファイルサーバは、バージョンアップでCAPエンコーディングを扱えなくなっていた。試しにNetBSDと同じセッティングでサーバのディレクトリを共有してみると、案の定文字化け。それどころが、化けたファイル名のファイルを開く事もできないばかりか、MacでアップしたファイルがWinで見えないという不可解な現象も発生。どうにも解決できずに1日悩んだ。
いろいろ検索したところによれば、netatalk2.0.3のソースにパッチを当てて、コンパイルすることで、MAC_JAPANESEというエンコードを使えるようにする解決方法が見つかった。しかし、ソースから作り直すのも面倒くさいので、なんとか設定をいじくりまわすことで解決できないか模索した。
samba側で設定できるのは、Windows での文字コードとUNIX側での文字コードの設定。
netatalk側で設定できるのは、Mac側での文字コードとUNIX側での文字コードを、ファイルサーバとアップルトークの両方に設定できるようだ。(旧バージョンではできなかった)
具体的には
/etc/samba/smb.conf の[global]直下に
dos charset = ASCII(Shift_JISとするべきか…)
unix charset = EUCJP-MS(EUC-JPでもいい!)
display charset = UTF8
と、書き加えるか、変更して、
/etc/netatalk/AppleVolume.defaultに
~/公開ディレクトリ ホスト名 maccharset:Shift_JIS unixcharset:EUC-JP
と書き換えたら、同じ場所にある、
/etc/netatalk/afpd.confに
"ボリューム名" -maccodepage Shift_JIS -unixcodepage EUC-JP
と書き加えて、再起動(ソフトウエアのみ)するだけだ。
※公開ディレクトリはUNIX側の共有フォルダ。何も書かなければ(~/の状態です)ログインユーザのホームディレクトリが適用される。ホスト名はMacintoshのセレクタのサーバ選択画面に表示される名前。何も書かなければlocalhostだ。ボリューム名は同じくセレクタで選択したときにマウントするアイコンに表示される名前。何も書かなければHome Directoryとなる。
複数のディレクトリを公開するなら、改行してディレクトリのパス(/mnt/Aなど~は不要だ)を書き加えるだけだ。
他にもUNIX側をそれぞれEUC-JPにしてみたり、すべてユニコードにしてみたり、何十通りも試したが、結局、機種依存文字をのぞいて、ほぼ正確に日本語ファイル名を共有出来たのは最後のパターンだけだった。
Win側でなぜASCIIのままのファイル名が日本語表示されるのかわからないが、これだとUNIX上からでも日本語ファイル名そのままで表示(読み書き)できる。ただし、リソースフォークを別のディレクトリに保存している関係上、Win UNIX側でファイル名を変更すると、リソースを持ったファイルの場合、Mac側で開けたときに壊れる。それさえ注意すれば、今の所、機種依存文字のやりとり以外に問題は無い。
ところが、Netatalk経由でMacから接続すると、NetBSDではすんなりできていた暗号化パスワードがなぜか使えない。「クリアテキスト」でのログインになる。コンパイルのオプション設定で云々…という情報もあるが、こちとらパッケージでインストールしている身だ。いまさら遅い。なんとか設定ファイルでOpenSSLを使えるようにできないものなのだろうか… このまま丸裸のパスワードのやりとりでは、ノーパンで街を歩くような頼りない感じでいけない。(慣れの問題?)
Windowsからsambaにアクセスすると、「ネットワークコンピュータ」のなかにDebianが表示されない。「他のコンピュータを検索」で検索するとアクセスはできるのだが、いちいち面倒だ。どうやら、sambaの設定が悪いらしい。
ワークグループをWin側と同じにする。
smb.confで
workgroup = WORKGROUP #←これをWin側のネットワーク設定でも同じにする(大文字で)
encrypt passwords = yes
domain login = yes
map to guest = Bad User
この辺を修正すると、「ネットワークコンピュータ」にサーバのアイコンが出た。
(2007年5月加筆)
カーネルのアップグレードでsambaもnetatalkも最新のパッケージに置き換えた。(netatalk2.0.3-4はディフォルトではインストールされないが…)そこで、この際だからLinuxシステムの文字コードを将来性を考えてEUC-JPからUTF-8に変更する事にした。そこでファイルサーバの設定も変えた。
オプションの導入
サーバ構築もとりあえず出来て、かなり静かになったサーバだが、できればアイドル時にはHDDのスピンダウンをして欲しい。Debianではラップトップ用の小電力ユーティリティがオプションで用意されているので、それをインストールすると画面の暗転(スクリーンセーバーではなく、電源を落とす)は可能だが、ACプラグを差し込んだままだとHDDは停止しない。
これを解決するために、hdparmというユーティリティを導入してみた。(後に破棄したが)
セッティングは
# hdparm -S 12 /dev/hda
と、こんな感じ。-Sはスピンダウン。12は回転停止までの時間(なぜか5倍されるのでここでは60秒となる)。以下は対象となるデバイスのパスだ。
しかし、これは一時的な設定となる。再起動すればまた設定し治さなければならない。面倒なので、デーモンで動作するユーティリティをインストールする。
noflushdをパッケージでインストールして、
# noflushd -n 5 /dev/hda
と、初期設定の回転停止時間を設定する。hdparmと違って時間は分単位なので間違いないように。
これでアイドルが5分続くとHDDは止まる。が、再起動するとリセットされるようなので、初期設定/etc/init.d/noflushdをviで編集
TIMEOUT=0
DISK=""
PARAMS="-n 1 /dev/hda"
と書き換えた。これでnoflushdを再起動すれば1分で停止するはずだ。が、syslogdの動作によって20分ごとに再び回転を始めてしまう。これを防ぐために、/etc/init.d/sysklogdを編集
SYSLOGD="-m 360"
としておく。ログは6時間に一度だけになるので、未使用時はHDDが完全に停止するはず。(実際はそうないかない… 時々勝手に何かにアクセスしているようだ。難しいな…)
(2007年5月加筆)
カーネルのアップグレードにともなって、パワーマネージメントの統合がされたらしい。acpi(acpid)ってデーモンが電源を一元管理している。これによってnoflushdが自動的に除去されてしまうのだが、(hdparmとsdparmがインストールされるため)標準設定だと電源プラグを抜かないとディスクは止まらないようだ。そこで、すこし設定をいじる。/etc/hdparm.confの最後のほうに
command_line{
hdparm -S 36 /dev/hda
}
などと書いておけば、起動と同時に3分で停止する設定になる。
また、外付けSCSIドライブはhdparmで止められないので、scsi-idleというユーティリティに同梱されていたscsi-stopという実行ファイルで強制的に止めていた。ところが、カーネルの更新により、この実行ファイルによるエラーが出るようになったので、sdparmを使う。
sdparm -C stop -q /dev/sda
のコマンドをcronで定期的に動かす設定にしておいた。-qのオプションはベンダ名を表示させないだけで、無くても問題ない。
システムログのタイムスタンプを止めるために/etc/default/syslogdの一番最後に
SYSLOGD = "-m 0"
と一行書き加えてsysklogdをリスタート。--MARK--というタイムスタンプ(標準は20分間隔)が出力しなくなるはずだ。
プリンタを接続
そろそろDebian導入から1年。ほとんどトラブルらしいものは無いのだが、これをメインに使えなかった理由がプリントができないことだった。ウチで稼働してるプリンタはシリアル接続のCSW2400とEPSONPM750C。このDebianを載せる前はUSBーパラレル変換ケーブルで対応していたので、linux用ドライバが無いとつなげないと思っていたのだ。ところが、こんなのはドライバは不要で、しかもEPSONでは旧プリンタ用にLinux対応プリンタドライバが公開されてるというではないか。
さっそくエプソンアヴァシスのサイト<http://www.avasys.jp>からPM750c用のパッケージをもらって試してみることにした。
Debian用のパッケージがないので、ダウンロードしたのは以下のパッケージ
pips750_2000-1.3.2-3.i386.rpm
これはDebianには直接インストールできないので、alienというユーティリティで形式を変換する。alianがまだインストールしていなければパッケージでインストール。で、
# alien -d pips750_2000-1.3.2-3.i386.rpm
とやると pips750-2000_1.3.2-4_i386.debというパッケージに変換された。(なぜかバージョン数字が変わる…)これを
# dpkg -i pips750-2000_1.3.2-4_i386.deb
で普通にインストール。これですぐプリント可能かと言えばそうはいかない。まずprintcapの設定だ。/usr/local/EPKowa/PM750_2000Cにある説明書を一応読んで、
# vi /etc/printcap で設定ファイルを開いたら、
pm750_2000c:\
:sd=/var/spool/lpd/pm750_2000c:\
:mx#0:\
:sh:\
:lp=/dev/usb/lp0:\
:if=/usr/local/EPKowa/PM750_2000C/filter750_2000:
と、標準そのままに記述して保存。当然、設定ファイルに記述したディレクトリにその通りのフォルダを用意してグループ設定をlpにしておいた。
# mkdir /var/spool/lpd/pm750_2000c
# chgrp lp /var/spool/lpd/pm750_2000c
それから、# /etc/init.d/lpd restartで印刷デーモンを再起動したら、ユーティリティを起動して基本設定をする。
# pips750_2000 &
とXのコンソールでやるとGUIの設定ウインドウが開く。適当に項目を設定して一応保存しておく。
ようやくおまちかねのプリントだ。USBでプリンタを接続。電源を投入して、適当なドキュメントをプリントしてみる、が。うまくいかない。プリンタが反応すらしない。システムのプリントテストを試したりしてもダメ。いろいろ検索してみると、このpipsと言うのはPNG画像をプリンタに送る役割をしているらしい。さっきのGUIの設定ウインドウを再度開くと、pngを直接プリンタに送る項目があることに気がついた。さっそく試す。# pips750_2000 & で、開いたウインドウの「入力」のところで適当なpng画像を選択し「印刷」ボタンを押してみる。正解ならばプリンタが動きだし、画像がプリントされるはず… だが、コンソールにバラバラとエラーが出るだけ。なにやらlibpng.soってなファイルが見つからないと言ってる。
わたしのDebianにはそんなライブラリは見当たらなかった。しかし、# locate libpng とやると、/usr/libディレクトリに似た名前のlibpng10.so.0.1.0.18ってのと、libpng12.so.0.1.2.8ってのがあるから、とりあえず、そこでlibpng12.so~のほうにシンボリックリンクを張っておいた。
# cd /usr/lib
# ln -s libpng12.so.0.1.2.8 libpng.so
これでエラーは無くなり、プリンタのスプールディレクトリにスプールファイルが生成されるようにはなった。ところが、これが待てど暮らせどプリンタに送られない。USBデバイス自体はシステム標準で認識されているらしいのだが、データが出て行かないようだ。これはNetBSDのCSWの時も同じような症状がでたので、おそらくデバイス関係の問題と推測したが、原因不明で夜がふけた。
あらためて、USBを差したり抜いたりして、その都度dmesgを確認してみると、printer.cがusblp0とかなんとかという表示が出る。printcapの設定ファイルではデバイスを/dev/usb/lp0に割り当てている。ところがusblp0などというデバイスは見当たらない。どうやらこれを作っておかなきゃならなかったようだ。
# cd /dev
# mknod usblp0 c 180 0
これでデバイスができるので
# chmod 660 usblp0
# chgrp lp usblp0
と権限を設定して、printcapの :lp=/dev/usb/lp0:\ のところを :lp=/dev/usblp0:\ と、書き換えたら印刷デーモンを再起動。(debian自体を再起動したほうが確実かも…)
再び適当なファイルをプリンタに送ると、こんどはプリンタが動いて印刷が出来た。マージンなどに不一致があったりして割り付け印刷なんかが純正ドライバ並みにはいかないが、とりあえず使えるようにはなった。
(2007年5月加筆)
カーネルのアップグレード(2.4→2.6)により、USBデバイス関連(hotplug→udev)も刷新された。そこでusblp0というデバイスを作らなくても、USBプリンタを接続するたびに /dev/usb/lp0というデバイスが現われるようになっている。(dmesgではusblp0と認識されているが、デバイスではちゃんと/dev/usb/lp0となる)だから、ptintcapには
:lp=/dev/usb/lp0:\
としておけば問題なし。
ネットワークプリントの設定。
端末がWindowsなら簡単。Sambaが導入済みなのでそのプリント機能を使う。設定はWindowsからブラウザ経由でできる。
http://★サーバのIP★:901
で開いたところでユーザ名とパスワードを聞かれたら、rootでログインすると設定画面が開く。一番上にある「Printer」のボタンをクリック。適当な名前のプリンタを新規作成。Sambaを再起動。
続いて、Windowsのプリンタドライバー。すでに端末側にPM750Cのドライバがインストールされているので、プロパティの「出力ポート」(LPT1とかなんとか…)のポップアップメニューからSambaで設定したプリンタ名のところを選択する。これで終わり。この場合スプールは端末側で生成されるので、サーバ側はデータをプリンタにそのまま受け渡すだけ。あたかもローカルプリンタにプリントしてるのと同じようにプリントできた。
問題はMacからのネットワークプリントだ。NetBSDではCSWのPPDがあったがEPSONのは無い。設定は出来てもPPDファイルが無いので正常に使えるかどうかわからない。しかし、心配は取り越し苦労となった。pips750~ドライバのおかげで、単にnetatalkのプリンタ記述ファイルを書き換えるだけで設定は終了だ。
# vi /etc/netatalk/papd.conf
で設定ファイルを開いて、一番したあたりに僅か2行
EPSON PM_750C:\
:pr=|lpr -Prlp:op_lp:\
と書き込んで、netatalkを再起動
# /etc/init.d/netatalk restart
これでサーバ側の準備は終わり。あとはMacのセレクタからLaserWriterを選ぶと「EPSON PM_750C」が見えているはずだ。分割レイアウトなどのややこしい作業さえしなければ見事にカラーで印刷が可能となる。
いまごろフロッピー
Debianを載せたFloraには内蔵フロッピーは無い。USB接続の外部ドライブを使う仕様だからだ。このドライブを使うための設定をしてみた。もちろんフロッピーで受け渡すデータは主にWindows形式のMSDOSタイプ。聞けばLinuxファイル形式のフロッピーも作れるらしいが、他のマシンで読めないものでは意味が無い。私はMacでもほとんどMSDOS形式のフロッピーにしている。
標準でUSBマスストレージデバイスが使えるので、設定は一つだけだ。/etc/fstab を編集する。
/dev/sda /mnt/fd auto user,noauto 0 0
と一行加える。/mnt/fd てのは、マウント対象のディレクトリなのだが、あらかじめ用意しなくても、fstabを保存終了すると即時にシステムによって作成される。(逆もまた有り)
これで、Konquerorのデバイスタブからディスクがマウントできるようになる。ただし、2HD形式は読み書きできたが、2DD形式はダメのようだ。ワープロからの持ち出しテキストは全滅だな…
ところがマウント解除の段階でバグがあるようだ。どうやれば安全にフロッピーが排出できるのかが判らない。頓挫。
どうやらスペルミスだった、autoと書いたつもりがsutoになってた…
/dev/sda /mnt/fd auto user,noauto 0 0
で、ディスクを排出するまえに umount とやるか、GUI環境ならデバイスアイコンで マウント解除とやるかで、とりだすらしい。
ところが、再起動後に試すとうまくマウントできなかった。そこでfstabのファイル形式のところをvfat とかmsdosで試してみた。vfatに変更するとうまくマウントできたので、再起動してみようとするとマウント解除ができない。USBポートが2つあるのでひょっとしたらsdaではなくsdbにも対応させなければならないのかもしれない。
/dev/sda /mnt/E vfat,msdos,hfs user,noauto 0 0
/dev/sdb /mnt/F vfat,msdos,hfs user,noauto 0 0
とまあ、こんな風に変更しておいたが、結果はいかに…
vfatのところをhfsとかにするとMacintoshのフロッピーも読めるようですが、リソースなどがバラバラの状態なので意味はないですね…
Basilisk IIで68kMacのエミュレート
さあ、もうほとんどやることはなくなったが、PC環境をMacからLinuxに切り替えるために最後の心残りは古いMacから引き継いだファイルの処遇。多くは68kMacの時代からズルズルと使い続けていたハイパーカードなどPCでは代用できないものだ。
そもそもAppleってのは、68kからPowerPCに、PowerPCからIntelにと基本設計からコロっと変えてしまうほど古いものをどんどん切り捨てていく文化なのでしょうがないとは言え、すでにOS9の動くハードウエアどころか、OSX上のクラシック環境のエミュレータですら動かない現状では68k当時の古いソフトを動かそうにも手段が無くなった。そんなAppleを信奉している信者はいいとしても、古いリソース(資源)が捨てられない私のような人は他にもいるらしく、水面下で開発されたのが68kMacエミュレータだ。なかでもBasilisk IIは完成度が高く、WinでもLinuxでも、ってことはOSXでも動く唯一の68kMacエミュレータとなった。本来コンパイルする必要があるが、現在ではDebianの公式パッケージに含まれているので実行ファイルはパッケージでインストール可能だ。
まず、これを利用するにあたって注意点がある、かならず512kBのロムイメージが必要となるので、ライセンスの関係で該当する実機を所有していなければならない。とにかく動く68kのMacを入手する必要がある。
で、その実機からロムイメージを抽出する。Macのアプリケーションが同梱されているのでそれを使う。(ネット上に転がってるのを使うのは違法です!)
説明書などを良く読んでロムイメージと仮想HDDとして使うディスクイメージと68kの動くOS(実機のCPUが68030までなら漢字Talk7.5.5、68040ならOS8.1までは動くはず…)を用意する。漢字Talk7.5.3は無料で配布されている。
ただし、問題は実行ファイルをインストールしただけではBasilisk本来の能力が発揮できない。LANに接続するためのデバイスがインストールされないのだ。これはソースからコンパイルして改めてインストールしなくてはならない。(Win版はドライバファイルが付属していた)
最新のソースファイルを入手する(古いものだとDebianではエラー頻発)その中で sheep_net.cというソースのあるディレクトリでmakeするだけ。これで同じディレクトリにsheep_net.oというオブジェクトができたら、/lib/modules/{バージョン}/kernel/drivers/net/ に移動、またはコピー。
# insmod sheep_net.o
で、Basilisk IIの起動と同時に読み込まれるように /etc/modules.conf を編集
alias char-major-10-198 sheep_net
と1行書き加えて保存。これでBasiliskのネットワーク接続先をeth0にすればエミュレータからネットワークが使えるようになる。
ところが、Linux上に構築したNetatalkによるアップルトークサーバには接続できない。それもそのはず、入出力のポート(IP?)がどちらも同じでは無理なのだ。これを解決するために仮想イーサネットを提供してくれるethertapというデバイスがあるらしいのだが、これを作るのにカーネルのソース一式をダウンロードしてカーネルの再構築をしなければならないらしい。私のプアなノートブックに100MBを超えるソースを展開するスペースが無く、残念ながら断念した。これはカーネルバージョン2・5以降では消去されてしまう予定とかなんとか英文の説明には書いて有るから将来はどうなるんだろうか…
ただいま運用中…
2007年01月16日 23時37分25秒
大容量HDDを買った。私にとっては大容量だが、一般的には普通の80GBのコンパクトなものだ。本来はUSB2.0の高速転送対応なのだが、残念ながら私のマシンにはUSB1.1しかついていない。で、遅いながらもウインドウズとマックのファイルをバックアップ出来たのは良かったのだが、それをDebianのバックアップドライブにするつもりでUSB接続してみると、これがうまく認識されない。パーティションが2つに分けられていて、一つにドライバ等の入ったCDイメージがウインドウズからだと認識されるのだが、マックはこれがマウントされず、Debianではどちらも全く認識できないありさまだ。
そんなときは、試行錯誤でfstabの記述を書き換えてみる。
/dev/sda /mnt/E vfat rw,user,noauto 0 0
/dev/sda に始まって sda1 sda2 sda3 sda4とパーティションの番号を増やして行くがダメ。 もう諦めかけたところでsda5としたところ、ようやくマウントされた。このディスク、仮想パーティションのようなものがいくつも切ってあるようで、苦労はしたが、データ領域にようやく辿り着いた。
しかし、問題は続出。まず日本語ファイル名が化ける。これはDOSフロッピーと同じ症状。それからディスクのマウントポイントにシンボリックリンクを張っても、共有フォルダからは開けない。どうやれば共用ディスクにできるのか… しかも、スピンダウンが効かない。IDEの内蔵ドライブはスピンダウンさせられるnoflushdだが、SCSIドライブの回転を停めるには、カーネルパッチなるものが必要だそうだ。わからんので断念。(1/17)
2007年1月19日
それでも諦めきれずに情報を検索すると、同じ症状で苦しむ先輩は数知れず。有りがたいことに解決策が見つかった。
まずは文字化けの件。これは簡単。fstabのオプションに次の記述を加えるだけ。
/dev/sda /mnt/E vfat rw,user,noauto,codepage=932,iocharset=euc-jp 0 0
これで見事にDOSボリュームの日本語ファイル名が扱える。もちろんnetatalkとsambaの共有フォルダに指定しても動作する。(ファイル名の文字コードが混在していると混乱してエラーが生じるので、読めない日本語ファイル名はいったん英語に書き換えておいたほうがいいだろう。)
ここで小さな問題が。WinとMacでの共有ディレクトリに保存した短いファイル名が、大文字だけだと強制的に小文字に書き換えられてしまう。これはDebian上の共有ファイルだと起こらないため、おそらく外付けドライブをマウントする時の問題なのだろうといろいろためして見ると、案の定。Dosボリュームをマウントするときの短いファイル名が強制的に小文字にされる初期設定になっている。これを普通に扱うためにfstabをさらに書き換えた。
/dev/sda /mnt/E vfat rw,user,noauto,shortname=win95,iocharset=euc-jp 0 0
これで、8バイト以下のファイル名が強制的に小文字に書き換えられるのを防げた。ただし、最後まで変換に失敗したファイル名がある。com1 com2 com3などはDosボリューム上で何度やってもエラーで書き込めない。解決法は不明だ。
回転停止の件は、灯台元暗し。debianのパッケージにscsi-idleというユーティリティがあった。scsiドライブのスピンを監視するデーモンだ。ただ、カーネルパッチを当てなければこの機能が使えないと書いてある。試しにインストールして作動させてみたがパッチを当てない状態だといつまで待っても動作はしない。ただ、手動で回転を止めるためのscsi-stopとscsi-startいう同梱スクリプトは動作する。パッチは面倒(と言うか、カーネルのソースをダウンロードするスペースが無い…)なので、これをcronで一定間隔で起動させることにした。
root権限でcrontab -e。テーブルを編集。以下のような一行書き加えた。
15,45 * * * * /usr/sbin/scsi-stop /dev/sdb
これで/dev/sdbに認識された外付けUSBドライブの回転が30分毎に強制停止する。一番中回りっぱなしの状態よりもましだろう。
2009年05月21日
約4年間稼働し続けたホームサーバだったが、debianが5.0正式版が公開されたのを機に、システムを更新することにした。
と、言うわけで、この記録は一旦停止。次のページへ続きます。