2002年1月31日木曜日

数学の話

「放物線の長さ」で,私のページが検索されることが時々ある.
テストのページである.放物線の長さを計算するときに出てくる原始関数を微分するだけの問題を解説しているだけなので,そのページでは放物線の長さについては書いていない.「放物線の長さを求められる」と思って開いた人はがっかりだろう.
で,せっかくだから数学のページにその話題にふれることにした.
でも,そのページには正解は載せていない.載せない理由を書いた.
はっはっは.計算問題は「自分で解決」が基本だよー

2002年1月23日水曜日

カーネルの再構築

といっても,ケンタッキーフライドチキンのおじさんの着せ替えではない.
これをやったら,ping が通らなくなってしまった.
ifconfig ではちゃんと認識してるのになぁ
道は遠い・・

2002年1月22日火曜日

Libretto100

Libretto100 はカード2枚挿せる.
ネットワークカードを2枚挿せばゲートウェイにできるわけだ.
さっそくやってみたらすんなり認識.
設定ファイルで IP を振ったら ping も通るし,あとはカーネルの再構築をしてパケットのフォワードができるようにするだけ.
自宅でいま26Mのカーネルのソースのダウンロード中.

2002年1月20日日曜日

だんだんわかってきた

だんだん Linux の操作が見えてきた.
FreeBSD に比べるとツールが充実していて「簡単!」という感じ.
まぁ /etc のファイルをいじることには変わりないのだが,「どこからいじればいいか,わからん」という状況から脱する時間が短くていい.

FreeBSD の NIC 2枚挿しがうまくいかないから,Linux でやって見ようと思って,学校から Libretto を持ち帰ったら,AC アダプタを忘れて何もできない.

しょうがないから,問題集の解答作りでもするか.

2002年1月13日日曜日

Libretto に Linux


Libretto100 が余ったので 2001-2002 の冬休み,Red Hat Linux 7.1 をインストールしたけど,ずいぶんと苦労したので,それを書きとめておくことした.参考になる人がいるかもしれないから.
液晶の壊れた Libretto50 にも同じようにインストールできた.
2003.2.8 追記: 2003年1月に8.0 をインストール.方法はまったく同じ.

はじめに


Linux のインストールは CD-ROM ブートができるマシンであれば簡単だが,Libretto は PCカードの SCSI の先に CDROM をつなげるので当然ながら CDROM ブートは不可能.でも,Libretto100 は PCカードが2枚使えるから,1枚目は東芝純正のFDをつなげるカード,2枚目を SCSI PCカードにして,PCMCIA 対応のブートFDを作成して FD からブートすれば簡単にインストールできると踏んでいた.


ところが話はそんなに簡単ではなかったのだ.(やっぱり・・・)


そもそも PCカード対応のブート FD は pcmcia.img という FD イメージを使う.他の Windows マシンで RedHat の CDROM から rawrite という \dosutils にあるツールで \images\pcmcia.img をフロッピにする.


Windows などの DOS 窓で rawrite を起動し.source のイメージファイルを \images\pcmcia.img を指定する.コピー先は 1.44Mでフォーマットした FD (A ですな.)を指定すれば,作成できる.

C:\>p:\dosutls\rawriteEnter disk image source file name: p:\image\pcmcia.imgEnter target disket drive: a

で,その FD でブートすると PCMCIA コントローラを初期化した後に,カードを認識しなかったのかドライバディスクを要求される.ドライバディスクは \images\en\driver.img なのでそれを他の windows マシンでやはり \dosutils\rawrite を使ってフロッピに落とす.


さて,もう一度 FD でブートしてドライバディスクを要求に従って入れると.「ドライバディスクをマウントできない」と怒られる.えー?どうしてぇ?・・・


PCカードに挿して使う東芝純正の FD ドライブは,普通に使えば A: ドライブとして使える.ところがこのカードは,PCMCIA 規格ではない東芝独自のものなので,カードコントローラが初期化されると,認識されなくなるようである.それが証拠にフロッピに MS-DOS のカードサービスをインストールして起動すると,カードサービスが読み込まれたとたん,「config.sys のファイルが読めない」というメッセージが並ぶ.


したがって MS-DOS をフロッピから立ち上げても,CD-ROM を認識させることができない.じゃ,どうして Windows では東芝の FD ドライブが使えるかというと,東芝のリカバリ CD の Windows だからに違いない.


ネットを探したらでれつきのページというところに参考になる情報があった.HD に 8MB の小さい MS-DOS 領域を作って,HD で MSDOS を起動し CDROM を認識させる.そして Red Hat Linux の CD のブートプログラムを動かすというもの.Libretto 100 は PCカード2枚挿せるけど, Linux のインストールにおいては1枚と同じということです.

fdisk の実行


さて,HD に DOS 領域を作るには DOS コマンドの fdisk です.(fips ってのもあるらしいけどどこがちがうの?)DOS のシステムフロッピなんて持っていないから,Libretto 100 のリカバリフロッピから作るしかない.(もちろん他のマシンから作ることは可能かもしれないけど,Libretto 100 の起動ディスクから作れば間違いない.)


フロッピの「リカバリCD起動ディスク A」 で起動して,領域の削除をして,領域の確保をすると,すべての領域を DOS 領域にしてしまうので,Linux はインストールできません.


「リカバリCD起動ディスク A」 で起動し,画面が停止したら,「9 (終了)」を押して,一旦を終了させます.そしてコマンドラインで
A:\>fdisk
とすれば fdisk が動きます.ところが日本語環境がインストールされていないので,日本語メッセージが文字化けの嵐です.「でれつきのページ」では「他のマシンのメニューを参考にして操作する。」とありますので,他のマシンの fdisk を動かしてメッセージの意味を予測し(^^;),
  • 8MBの基本パーティションを作成
  • 基本パーティションをアクティブに設定
を行いました.


fdisk はパーティションを変更して終了すれば,パソコンが再起動します.

DOS にカードサービスを入れる


再起動して「Libretto 初期インストールソフトウェアの復元」の画面になったら「2 フォーマット」を選択する.8M しかないので,一瞬にしてフォーマットが終わります.


フォーマットが終わってると「CD-ROM の種類を選択」画面になります.私は,この画面の PC カードを持っていないので,「5 その他のCD-ROM (PC カード)」を選択すると,MS-DOS システムが HD に転送されてから,「リカバリCD起動ディスクB」を要求されるので,画面の指示に従う.


画面の指示に従って PCカードをインストールする.


私はマクニカと,I・O DATA のカードを持っていますが,カードの種類の選択にはマクニカがないので「2 I・O DATA PCカードSCSI」を選択,そして持っているカード「3 PCSC-F」を選択すると,カードのドライバの転送が要求されるから,カード付属のフロッピに入れ替える.


最後はフロッピを取り出して,PC カード CD-ROM ドライブを接続して再起動する.

CD を DOS で認識


再起動すると,「Product Recovery CD-ROM」を要求するところで画面止まるので,Ctrl + C を押してバッチ処理を終了する.


CD は P: ドライブで認識されています.


ここで fdisk するとちゃんと日本語で読める.せっかくだからこの日本語ができる環境の MSDOSをフロッピにつくっておくことにした.そうすれば,フロッピで起動して fdisk が日本語で操作できる.作り方は
C:\>format /s a:
でシステムを転送して FD をフォーマットして config.sys が参照しているファイルのすべてと,必要なコマンド類(fdisk.exe, format.com, edit.com, qbasic.exe qbasic2.exe, chkdsk.com 等々)をコピーし,config.sys の記述のドライブ 「c:\」をすべて,フロッピの「a:\」に直せばいい.


ためしに
C:\>fdisk
をすると,あれれ? 12MB もある.本当は MS-DOS 領域なんか作りたくないので,できるだけ小さくしい.8M にするために,作っておいた日本語が読めるフロッピで再起動して fdisk で基本 MS-DOS 領域を削除.そして 4M の基本MS-DOS領域を指定して確保をしなおすと,なぜか 8M が確保されている.不思議だなー.


もう一度最初からやり直して,CDドライブ P: を認識させる.

CD-ROM 上の autoboot.bat でインストール


CD-ROM が認識したら,インストールに挑戦.
C:\>p:\dosutils\autoboot
を実行すると,画面が真っ黒で止まってしまう.そうだ.日本語が表示できる DOS だとできないんだった.


us.bat を実行してもいいらしいけど,config.sys を編集した.DOS のファイルの中に edit.comなるものがある.ためしに
C:\>edit config.sys
としたら,テキストエディタが起動した.c:\config.sys の日本語環境を下記のようにコメントアウトする.ついでに RAM ドライブも Windows をインストールするときに使うだけなので,コメントアウト.

DEVICE=C:\HIMEM.SYSDEVICE=C:\EMM386.EXE NOEMS X=D000-D7FF;DEVICE=C:\BILING.SYS;DEVICE=C:\JFONT.SYS;DEVICE=C:\JDISP.SYSDEVICE=C:\JKEYB.SYS /106DEVICE=C:\ANSI.SYS;DEVICE=C:\RAMDRIVE.SYS 4096 512 256 /Edevice=C:\CARDWORK\CARDXTND.SYSREM DEVICE=C:\CARDWORK\SSCBTO97.SYS /NUMADA:1 /ADA1SKTS:2device=C:\CARDWORK\SSTPIC95.EXEdevice=C:\CARDWORK\CS.SYS /POLL:1device=C:\CARDWORK\CSALLOC.EXEdevice=C:\CARDWORK\CARDID.SYSBUFFERS=36FILES=40DOS=HIGHSTACKS=9,256LASTDRIVE=ZSWITCHES=/FSHELL=C:\COMMAND.COM C:\ /P /E:2048device=\scf_enbl.sys /pause /v /io=0110device=\scf_aspi.sysdevice=\scsicd.sys /D:PCMCIACD /aspi

さらに,autoexec.bat も windows インストールのバッチになっているのがうっとうしい.必要なのは CD を P ドライブに割り当てる.
C:\MSCDEX /D:PCMCIACD /L:P
の1行だけである.


config.sys や autoexec.bat を編集しなくても,起動時 F8 キーを押しつづければ,config.sys と autoexec.bat を読み込む行を聞かれるので,Y/N で答えてもよい.


さて,再起動して
C:\>p:\dosutils\autoboot
を実行すると,今度は「kernel panic」で止まってしまう.


p:\dosutils\autoboot.bat を実行するときに,先ほど日本語環境が影響しているように,MS-DOS のドライバと何かが競合しているに違いない.カードサービスが原因かもしれないので,DOS で CD が認識できなくなることを想定して,autoboot.bat が使用しているファイルを HD にコピーする.


autoboot.bat は \dosutils\autoboot のファイルを参照しているようなので,それを c:\dosutils\autoboot にコピーするが,「ディスクが足りない」といわれてしまう.コピーできなかったのは,600K ほどの vmlinuz だけだから,HD の不要なファイルを削除.まず,リカバリCD起動ディスクの表示画面と思われる画像ファイルらしきものをすべて削除.
C:\>del *.bm*C:\>del cardwork.exe
これももディレクトリ c:\cardwork に展開するアーカイブファイルだから削除.これで十分に空きができるから,vmlinuz もコピー.

HD 上の autoboot でインストール


さて,これで再起動するが,起動時に F8 を押して config.sys のドライバの読み込みを問い合わせるように起動する.そしてすべて 「N」 でキャンセルし,すべてのドライバを組み込まない.


そして,C:\dosutils にコピーした autoboot.bat を実行すると,エラーなく進むが,カードコントローラを初期化しても,IO-DATA の PCSC-F を認識してくれず,インストール対象のパッケージが保存されているメディアの指定で「ハードディスク」しかみえない.


だからといって,Linux のドライバディスクを指定しようにも,カードコントローラが初期化されるとフロッピドライブを認識しない.(これは最初のブートディスクのときと同じ.)


ためしに,DOS 領域を 650M にして,CD-ROM すべてハードディスクにコピーしてインストールを試みたりもしたが,DOS 領域は当然 Linux の /dev/hda1 のようなものではないのでファイルを認識せずインストールは不可能.

DOS のカードサービスだけ認識させて HD 上の autoboot でインストール


今度は,F8 を押しながらの起動後,config.sys をカードサービスの部分
device=C:\CARDWORK\CARDXTND.SYSREM DEVICE=C:\CARDWORK\SSCBTO97.SYS /NUMADA:1 /ADA1SKTS:2device=C:\CARDWORK\SSTPIC95.EXEdevice=C:\CARDWORK\CS.SYS /POLL:1device=C:\CARDWORK\CSALLOC.EXEdevice=C:\CARDWORK\CARDID.SYSdevice=\scf_enbl.sys /pause /v /io=0110device=\scf_aspi.sysdevice=\scsicd.sys /D:PCMCIACD /aspi
だけを 「Y」で復活させて,CD-ROM からのインストールに挑戦しようとするが,最初の CARDXTND.SYS でエラーになる.


ためしに
DEVICE=C:\HIMEM.SYS
の行も有効にして起動すると,カードサービスがエラーにならず CD-ROM を認識した.つまり カードサービスには himem.sys が必要ということである.


これで autoboot.bat を実行すると kernel panic で止まってしまう.つまり kernel panic の原因は DOS の himem.sys だったのだ.


万策尽きたか?

マクニカのカードで試してなかった


ここでマクニカの miracle SCSI II mPS-110 があったことに気づく.それにさしかえ,F8 を押して起動しすべての config.sys のドライバを「N」キャンセルて起動し,c:\dosutils\autoboot.bat を実行する.
C>dosutils\autoboot


すると「ピ!」と高い音がしてカードは認識した様子.


しかし,CDドライブを認識しない.今度はドライブの問題だろうからディップスイッチをいろいろといじる.CD ドライブは1995年に学校の PC教室に入れて,今年廃棄処分になった,NEC PC-CD170N というノート用の3倍速のドライブ(^^;)


で,「SCSI1, 2」を切り替えるディップスイッチを「SCSI1側」にしたら,カードコントローラ認識のあと CD のアクセス音が聞こえる.


ところが1分以上,青い画面に変化がない.2分近くなってからRunning anaconda - please waitと出たままが変わらない.・・・だめかぁとあきらめていたら5分後,テキストモードのインストール画面が出ていた.おそるおそるインストールしたら,成功してしまった.途中で帰ってしまったから,どれくらいかかったかは不明.次の日2枚目の CD に入れ替えるように指示が出ていた.それから1時間で終わったので,2時間くらいはかかるのかな.

正しいインストール(笑)


では,ここまでは試行錯誤の過程もすべて書いてしまってわかりづらいので,もう一度私の場合の正しいインストール手順を整理しよう.


だいたいの流れは,
A.HD に小さい MS-DOS 領域を作り,リカバリ起動ディスクが認識するカードを使って CD-ROM を認識させ,CD-ROM から 必要なファイルを HD にコピーする.
B.Linux インストーラが認識するカードを使って,インストーラを HD から動かし,CD-ROM からインストールする.

A.1 「リカバリCD起動ディスクA」で起動.

  1. 「Libretto 初期インストールソフトウェアの復元」画面で 「9 終了」を選択.
  2. fdisk を実行
    • 基本 MS-DOS 領域を 8M 確保(指定するときは 4M)
    • 基本 MS-DOS 領域をアクティブにする.
      • 日本語表示ができないと面倒なので, 1度フロッピに日本語表示ができる MS-DOS を作っておいて, その fdisk を実行したほうが楽です.

A.2 そのまま(リカバリCD起動ディスクA)で再起動.

  1. 「Libretto 初期インストールソフトウェアの復元」画面で 「2 フォーマット」を選択.「Y 続行」
  2. 「CD-ROM の種類を選択」画面で「5 その他のCD-ROM (PC カード)」を選択
    するとシステムが転送され,「リカバリCD起動ディスクB」に入れ替える指示に従う.
  3. 画面の指示に従って PCカードのドライバディスクに入れ替え,最後はフロッピを取り出して電源を切る.

A.3 ハードディスクで再起動.

  • (fdisk で基本MS-DOS領域をアクティブにしていないとハードディスクからは起動しないから注意.)
  1. インストールしたカード(I・O DATA PCSC-F) を挿入し,Linux の CD をセットした CD-ROM ドライブを接続して電源を入れる.
  2. 「Product Recovery CD-ROM」を要求する画面で停止したら, Ctrl+C を押してバッチ処理を終了する
  3. c:\*.bm*, cardwork.exe を削除.
  4. C:\>del *.bm*C:\>del cardwork.exe
  5. p:\dosutils のファイルを c:\dosutils にコピー
  6. C:\>md dosutilsC:\>copy p:\dosutils\. dosutils
  7. p:\dosutils\autoboot のファイルを c:\dosutils\autoboot にコピー
  8. C:\>md dosutilsC:\>xcopy /e/s p:\dosutils\autoboot dosutils\autoboot
    ここで autoboot が,ファイル名かディレクトリ名かを聞かれるが,「D=ディレクトリ」を選択.
    もし,「ディスクがたりない」といわれたら,他の MS-DOS ファイルも消去してから,ディレクトリを見比べてコピーできなかったファイルを追加コピー.

B.1 config.sys を組み込まないで再起動.

  1. 一旦電源を切り,Linux が認識する PC カード(マクニカ miracle SCSI II mPS-110)を挿入し,Linux の CD をセットした CD-ROM ドライブを接続.
  2. 電源投入時,F8キーを押しつづける.
  3. config.sys や autoexec.bat を実行するかどうかを1行づつ聞かれるので,すべてNでキャンセルする.

B.2 Red Hat Linux 7.1 をインストール


ついでに,どうせ認識しないFD は外して,ネットワークの PC カードをいれてインストールする.

  • コマンドプロンプトが出たら,autoboot.bat を実行
  • C:\>cd dosutils C:\>autoboot

    ここから Linux のインストール作業が始まります.

    • Japanese
    • jp106
    • ラップトップ
    • bootp/dhcp を使用にチェック
    • ファイアウォール→中
    • 2 button(PS/2)
    • Japanese
    • アジア/東京
    • root パスワード
    • user → kurobe
    • パスワード
    • GNOME,KDE,GAMESを全て選択
    • インストール開始(2時間以上、CD 2も利用)
    • ブートディスクは作らない(作れない)

    B.3 再起動で Linux 起動


    ついでに Libretto 50 にもインストールした


    液晶が壊れた Libretto 50 があったからついでにそちらにもインストールした.HD は 2G.ディスプレイはとりあえずほかのパソコンのものを使う.インストールしてしまえば,telnet 等リモートで使用する.


    Libretto 50 のリカバリディスク(あったっけ?)を紛失していたので,DOS 領域作成とautoboot 等のファイルのコピーは Libretto 100 で行う.ファイルがそろったら,Libretto 50 に換装して起動.カードが1枚しかさせないから,ネットワークカード関係の設定はインストール時にはできない.あとは Lib 100 のときと同じ方法.

    • driver → なし
    • (Libretto 100 では出なかった)
    • Japanese
    • jp106
    • ラップトップ
    • ホスト名 → lbrt50
    • ファイアウォールなし
    • 2 button(PS/2)
    • Japanese
    • アジア/東京
    • root パスワード
    • user → kurobe
    • パスワード
    • GNOME,KDE,GAMESを全て選択
    • CT65550
    • インストール開始(2時間以上、CD 2も利用)
    • Generic Laptop 640x480
    • 1mb
    • no ClockChip
    • 16bit 640x480
    • ブートディスクは作らない(作れない)

    Red Hat Linux 8.0 (Feb.8,2003 追記)

    2003年1月12日,同じ方法で Red Hat Linux 8.0 を Libretto100 にインストール.
    Apache2 でウェブサーバにし,ドメイン名 uja.jp を取得し 1月20日より公開.
    DNS は無料の miniDNS

    Libretto50 は電源が入らなくなってしまった.