授業資料/03 の変更点


#contents

* 授業内容 [#pd160e00]

前回は基本インストールを行ったが,今のままではネットワークの設定すらしていないので,Web 一つ見ることができない.
また,他にも今のままでは不便すぎる.
そこで,いろいろと設定や追加インストールを行おう. この作業も,単に書いてあることを実行するのではなくて,「何がどうなっているのかを把握しようと努める」ことが重要だ.

* FreeBSD での基本設定 [#p1319376]

FreeBSD ではいったん基本インストールさえしてしまえば,後はほとんどの作業は

+ スーパーユーザになって(("root" でログインするか,wheel グループに属しているアカウントから "su root" とする))
+ /usr/sbin/sysinstall を起動して  Configure → (希望の項目) → (さらに細かく) と選んでから適切に選択していけばできる

ようになっている.
その練習も兼ねて,以下,ネットワークの基本設定を行おう.

* ネットワークの設定 [#pc497b37]

** ネットワークの設定内容 [#i8c9443e]

まず,基本的なことを先に述べておこう.
各々の PC の番号を &ref(./PC番号.png,75%); として,
この計算機室では以下のように設定することにする.

*** 大まかな基本 [#d11ea02c]
- IPv6 は使用しない. IPv6 とは,Internet Protocol version 6 のことで,現在主流である IPv4 がネットワークの拡大に伴って手狭になることを見越して作られた新世代の規格である.
- DHCP は使用しない. DHCP とは, Dynamic Host Configuration Protocol のことで,ネットワーク接続に必要なデータをネットワークから自動的にもらってくる規格のことである.
- SSH は外から接続できるようにする(sshd を立ち上げる). SSH とは,きちんと暗号化された方法で文字端末としてネットワーク接続する仕組みだ.

*** 細かい設定 [#g2c96032]

|  項目 |  設定値 | 説明 | 備考 |h
| Hostname | q&color(red){PCの番号}; | PC の名前 | アルファベットの "q" を番号の前につけるだけ.ただし,一桁の場合は 0 がついているので注意.   例えば,PC の番号が 08 の場合,q08 である. |
| Domain | cl.math.sci.osaka-u.ac.jp | ネットワークのドメイン名.住所みたいなものだ. | この部屋の中にいる限り間違えてもまあ害は少ないが… |
| Gateway | 192.168.125.1 | ネットワーク的に外への出入り口 | |
| Name server | 192.168.125.14 | ネットワーク上の名前と IP との辞書的役割 | |
| IP Address | 192.168.125.&color(red){PC番号+90}; | ネットワーク上のそのマシンの「背番号」 | 例えば PC の番号が 14 ならば 192.168.125.104 となる |
| Netmask | 255.255.255.0 | IP のうち,どこまでがネットワークドメインの分か | |
| Extra option | (空白のままでよい) |||

ちなみに,ネットワークの設定は「御互いの約束ごと」でうまく行く世界なので,一文字間違えるとうまく動かないということもままあるので,これから後の設定には慎重さが必要だ.

** 実際の設定作業 [#i9908fdb]

*** Sysinstall → Configure: 汎用設定 [#wcac3484]

&ref(./03-01.png);
まず,先に書いたようにスーパーユーザになって sysinstall コマンドを打ち込む. すると,先週も見た画面になるので,
// &ref(../第02回/05.png);
&ref(./03-02.png);
ここで,"Configure" を選択する. 

*** Configue → Networking: ネットワーク設定をしますよ [#gb439a3c]

すると設定できる様々な項目の選択画面になるので,
&ref(./03-03.png);
"Networking" を選択しよう.

*** Networking → Interface: ネットワークカードの設定をしますよ [#b65d4625]

ネットワークに関して何を設定するかの画面になるので,
&ref(./03-05.png);
ここでまず "Interface" を選択する. 
この場合の Interface とは,ネットワークに対しての接触部分,つまり(通常は)ネットワークカード相当のことを意味する((他にも,電話回線での接続なんかもあるので,実はいろいろある)).

*** → Netrwork interface information: 設定するカードの選択 [#e709280b]

&ref(21.png);
設定する interface を選べという画面なので,それらしい(^-^)のを選ぶ.
それらしいというのは,"Ethernet adapter" とかそういう名前のやつのことで,たいがい一番上にある.
例えば,ネットワーク用チップとして良く使われる RealTek 社のもの(カニのマークで有名)であれば,rl0 などとなっているのでわかりやすい.

*** IPv6: IPv6 使いますか? [#c634f213]

&ref(22.png);
"No" を選んでおく. "Yes" を選んでも実害はないが,これ以降のネットワーク関連の設定が「なにかとややこしくなる」ので,IPv6 を使うんだ,というマシン以外では "No" にしておいたほうが良い.

*** DHCP: DHCP 使いますか? [#w57e06ef]

&ref(23.png);
これも "No" を選んでおく.
今回はネットワークのデータは自分で設定するので,"Yes" を選んではいけない.

*** Network configuration: ネットワークの設定 [#a44ec677]

&ref(24.png);
さあ,(世間でいう)ネットワークの設定だ.
上の「細かい設定」で書いておいた情報をもとに設定しよう.

下の図は,PC番号が 01 のマシンでの設定例だ.
&ref(24-1.png);


*** Networking → sshd: SSH で外から接続できるようにしますよ [#j0736d98]

上の設定が終わると,先の画面
&ref(./03-05.png);
に戻ってくるので,ここで
&ref(./03-06.png);
のように,sshd の左側の [ ] にチェックを入れ, sshd という特殊なソフトが最初から起動するように設定する((ここにチェックを入れると,そう設定してくれる)).

チェックを入れたら,Exit を選んで繰り返していって,sysinstall を終えよう.

*** 再起動: 設定を反映させよう [#g783aea2]

ネットワークカードの設定だけなら,実はもう設定が反映されているはずだ. つまり,それだけなら再起動などはしなくてよい.
しかし今回は,マシン起動時に sshd が動くよという設定もしたので,マシンを再起動しておこう.
具体的には,スーパーユーザで

shutdown -r now

とすればよい.

** ネットワーク設定がうまくいったかチェック [#t10a95dc]

(再起動してきたらスーパーユーザでログインして)まずはネットワークカードの諸設定がうまくいったかチェックしよう.

| チェック項目 | 方法 | 備考 |h
| hostname, domain | "uname -n" とコマンド. | 設定した qXX.cl.math.sci.osaka-u.ac.jp となっているか? |
| IP, netmask | "ifconfig -a" とコマンド. | よくみるとなんとなくわかるはず. ifconfig は,network interface の設定を出力するコマンドで,時々便利だ. |
| NameServer | "nslookup www.osaka-u.ac.jp" とコマンドでうって,正しい応答(133.1.8.5)があれば OK. | |
| Gateway | "ping www.osaka-u.ac.jp" とコマンドでうって,「これぐらいの時間で届いた」というメッセージが出れば OK. | |

どこかおかしいようなら,先の作業をやり直そう. 
sshd について変更しないならば,再起動しなくてもよいはずなので,設定を終えたらすぐこのチェックを再びやってみよう.

** sshd がきちんと起動されているか? [#l7a1e325]

ps -axuww | grep sshd

としてみよう. 出力の中に

root					701				0.0			0.7			5616		3436		??			Is			12:25AM	0:00.03				/usr/sbin/sshd

という感じで,最後が "/usr/sbin/sshd" となっている行があれば OK だ.

これもうまくいっていないようなら設定をやり直そう. この場合は設定後に再起動が必要だ((本当は /etc/rc.conf を見るだけでよいが)).


* /etc/rc.conf を綺麗に [#fcbc9ad6]

これまでに sysinstall を何回か使っていると,/etc/rc.conf が「汚く」なっていることがある. 具体的には,同じ設定が何回も書かれていたり,矛盾する内容が書かれていたりする.(rc.conf は下の方に書いてある設定が優先されるので見た目で矛盾していても理論的には問題ない)

設定ファイルが汚いままだと人間様が混乱することがあるので,ここらでいったん綺麗にしておこう. 具体的には,スーパーユーザ権限で /etc/rc.conf をエディタで編集する,ということになる.
ただし,今の時点ではエディタといっても emacs などの高級エディタはインストールされていない.

そこで,エディタ vi が使える人は vi を使おう(vi は UNIX の世界では由緒正しい,ほぼいつでも使えるエディタだ).
しかし,vi が使えない人もいるだろうから,そういう人は ee を使えばよい. これはヘルプが画面上に出ていて,マニュアル無し経験無しでもすぐに使える軽量エディタだ.

&ref(./03-11.png);
ee を起動した例. 上側に操作方法を示すヘルプが表示されている.
ちなみに,^ は「Ctrl キーを押しながら」という意味で,例えば Ctrlキーを押しながらn キーを押す(^n ということ)と,next line 機能,即ち,次の行へ行く,ということになる.
また,編集したファイルを保存するとか,ee を終了するなどの目的には,menu すなわち ^[ とするとよい.

* 日本語関係ツールをインストール [#y444b782]

日本語にあわせて作られた/調整されたソフトウェアがこまごまとあり,これらを使うと何かと快適である.
このタイミングでインストールしておこう.

** package でのインストール [#l2ca09ef]

Package の扱いの練習を兼ねて,Package でまずはインストールしてみよう(Package とは何かはまた後の授業で説明する).
個々は練習も兼ねてネットワークから持ってきてインストールしてみよう.
一度にアクセスすると多少迷惑をかけることになるが,幸い? 各人の作業進行状況にバラツキがあるのでまあ許容範囲だろう.

&ref(./03-13.png);
sysinstall  → Configure → Packages → FTP として,
&ref(./03-14.png);
Japan のいずれかの ftp サイトを選択する. 選択基準は,前回の授業の最初の方で述べているのでそこを参照しよう.

&ref(./03-15.png);
の画面は単なる確認画面なので先へ進もう.

&ref(./03-16.png);
の画面になったら, 日本語関係のソフトが集められているカテゴリである
&ref(./03-17.png);
Japanese を選ぶ.

&ref(./03-18.png);
の中から,とりあえず次のものを選ぼう((安全を期すため,かなり古めのもので固めてある. 詳しい人は新しめのものにチャレンジしてもよい.)).

- ja-FreeWnn-server (日本語変換サーバ機能)
- ja-ipa-ttfonts (綺麗な日本語フォント)
- ja-kinput2 (日本語変換機能を X window system で使う)
- ja-kterm (日本語が使えるターミナル)
- ja-less (日本語が使える less)
- ja-man (日本語マニュアルコマンド)
- ja-man-doc (日本語マニュアル)
- ja-nkf (漢字コード変換コマンド)

あとはメッセージに沿うだけで,ネットワークから既にコンパイル済みのファイルを持ってきてくれる.
インストールが終わったら,コマンド検索パスをリフレッシュするために
  rehash
とコマンドをうっておこう.

これで日本語マニュアルなどが使えるようになっているはずだ.

** 設定 : OS に日本語変換機能を付け加える(jserver) [#pa4dcd29]

今 日本語変換サーバソフトである FreeWnn をインストールしたので,それが有効になるように
/etc/rc.conf に 

  wnn_enable="YES"

という一行を加え,再起動しておこう.

** ports でのインストール [#ufb38454]

Ports の扱いにも慣れておくことを目的として,Ports を用いて日本語用ソフトをインストールしてみよう(Ports についても後述とする). 

といっても,portupgrade が使えればまず問題ない.
というわけで,まずは portupgrade をインストール,設定しよう.

*** ports データを念の為に更新しておく. [#m20390c5]

スーパーユーザで

  portsnap fetch   ← データを取ってくる
  portsnap extract ← 今ある ports データを全部消して新しいものを展開する

としておこう. こうすると Ports データが最新のものになる.
portsnap extract は時間がかかる作業だが,この一回だけやればよいので我慢しよう.

なお,次からはデータが変わった部分だけ「更新」すればよい.その場合は

  portsnap fetch   ← データを取ってくる
  portsnap update ← 今ある ports データと違う部分だけ更新する

とする.

**** portsnap がうまく動かない場合 [#uf15d785]

マシンの調子が悪い,ネットワークの調子が悪いなどで portsnap のデータがおかしくなり,portsnap が動かなくなってしまったというケースは次のチェック,作業を行ってみよう.

- /var/db/portsnap 以下の,serverlist, serverlist_full というファイルが空になっていないかチェックする.
これが空になっている場合は,エディタで編集して

  1 10 portsnap1.FreeBSD.org
  1 10 portsnap2.FreeBSD.org
  2 10 portsnap4.FreeBSD.org

と書きこんでおこう(両方同じ内容で良い).
- date というコマンドを打ち込んで結果を見てみて,コンピュータの日時設定がおかしくなっていないかチェックしよう.
日時がおかしいと,当然ながらデータの更新がうまくいかない.
こうした場合は,この date コマンドを用いてだいたいの時間を合わせよう.
具体的には,例えば 2009年10月16日10時25分にあわせたければ

  date 0910161025

と打ち込めばよいはずだ.詳しくは man date としてマニュアルを読もう.
- 上の二つは問題ないという場合は,portsnap が持っているデータそのものがおかしくなっている可能性が高いので,それを無視させよう.
具体的には,

  cd /var/db/portsnap
  mv INDEX INDEX.old

などとしてから,portsnap を試してみよう.
なお,この場合は念の為に portsnap extract の方で作業しよう.


*** Portupgrade のインストール [#o575ab3a]

portupgrade が使えればとても楽になるので,インストールしよう.
これには,以下のような ports 本来の作業が必要だ.
ゆっくり読みながら,慎重に作業しよう.

まず,

  cd /usr/ports/ports-mgmt/portupgrade
  make configure

とすると,オプション選択画面
&ref(./03-20.png);
になるが,これはそのまま OK でよい.

同様に,次々とオプションを聞かれるので,次のようにしておこう.

&ref(./03-20-1.png);
は,(面倒なので)全てのオプションを外しておこう.

&ref(./03-20-2.png);
は,そのままオプション無しですすめてよい.

&ref(./03-20-3.png);
は,そのまま(画像の通り)のオプションですすめよう.

後は,
portupgrade というソフトウェアのインストール「作業」に必要なソフトがないかチェック→あればそれもコンパイル&インストール→さらにそのソフトウェアに必要なソフトがないかチェック→以下同文
という繰り返しを自動的にしてくれる.

これが終了したら,

  make
  make install

とする. すると,インストールして portupgrade を動かすのに必要なソフトがないかチェックしてそれらもインストールしてくれた上で portupgrade がインストールされる.

この作業の流れはよく
make configure → make → make install
と言われる.

しかし,portupgrade をいったんインストールすればこの手間も不要となり,これ以降は portinstall というコマンド一つでこの作業が可能になる.

*** portupgrade の設定 [#lcabdbcc]

portupgrade は Ports の管理作業をかなり自動化してくれる有難いツールだ.
しかし,なにかトラブルがあったときのためにやはりログをとっておこう.

そのために,まずログファイルの置き場を用意する.

  cd /var/log; mkdir ports

次に,portupgrade の設定を書き換えておく. 具体的には,/usr/local/etc/pkgtools.conf ファイルのほぼ最後にある行を

  PORTUPGRADE_ARGS = ENV['PORTUPGRADE'] ||  \
   '-v -L /var/log/ports/%s::%s.log'

などと修正しておこう(portupgrade のマニュアル(man portupgrade でみられる)にいろいろ書いてあるので,それをみて最後の行は好みに応じて変えてもよい).
こうしておけば,これからは portupgrade, portinstall などのログが /var/log/ports 以下に置かれるようになるので少し安心だ.

** Ports を使ってソフトウェアをインストール [#b71dd54a]

Ports を使って,エディタ emacs をインストールしてみよう.
//のうち,日本語を使うのに便利なようにパッチが当たっているバージョンである emcws((emacs21相当だ. emacs23 にすれば,フォントにアンチエイリアスが効くので,がんばってそちらをインストールしてもよい.でも,FreeWnn と繋がるかどうかは知らないぞ.)) を Ports を使ってインストールしよう.
スーパーユーザで,portinstall(これは portupgrade の一部)を使えばよいので,具体的には以下のようにする.

  cd /usr/ports
  setenv PACKAGEROOT "ftp://ftp.jp.freebsd.org"
  portinstall -P editors/emacs-devel  ← 新しいものを入れる.また,packages があればそれを使って楽をしよう…

例えば次のように質問されるが,基本的にはそのまま進めてよい.
&ref(./03-53.png);
&ref(./03-54.png);
&ref(./03-55.png);
&ref(./03-56.png);
(ただし,Anthy サポートは入れておくと楽ではあるので,設定の手間を惜しまない人は入れておくのもよい)


あとは黙ってみていればインストールまで自動的に済むはずだ.
これが済むと,高機能エディタである emacs が使えるようになる.

*** portinstall -P が失敗する場合 [#la7245e0]

依存関係の問題で,portinstall -P では失敗する場合がある.
他の依存関係を「完全に綺麗にする」手もあるが,相当に時間が掛る可能性が高いので,そうした場合は次の二つの方法のいずれかを試すのがよいだろう.

**** portinstall -PP を使う [#afc48def]

  cd /usr/ports
  setenv PACKAGEROOT "ftp://ftp.jp.freebsd.org"
  portinstall -PP editors/emacs-devel

とする方法だ.Packages を入れることに相当する.

**** sysinstall 経由で Package を使う [#od47250f]

CD からか,ftp するかで少し結果が違うので両方書いておこう.

まず, 簡単で早い CD からの方法だ.
CD を入れておいてから sysinstall を立ち上げて,Configure -> Packages -> CD/DVD として,editors -> emacs-22.3 を選択してインストールする方法でもよい(少し古い emacs になってしまうが).
所要時間としてはこれが一番短いだろう.

次に ftp によるものもほぼ同様で,sysinstall を立ち上げて,Configure -> Packages -> ftp として,editors -> emacs-23.0.92 を選択してインストールする方法となる.こちらの方法だと様々な選択肢が豊富にあるのが利点である.

** 設定 : ユーザが日本語変換機能を使う設定(一般) [#te350b5e]

使用するシェルによって設定が異なるので,まあ一般的に二通り書いておこう.
ただし,今の状態では皆は csh 系だ.

- Tcsh (csh 系シェルの代表的なもの)を使う場合は,ユーザのホームディレクトリの .cshrc というファイル(なければ作る)に
 setenv LANG ja_JP.eucJP
 setenv JSERVER localhost
と書いておく.

- Bash (sh 系シェルの代表的なもの)を使う場合は,ユーザのホームディレクトリの .bashrc というファイル(なければ作る)に
 export LANG=ja_JP.eucJP
 export JSERVER=localhost
と書いておく.

この設定に問題が無いか,「ログアウトしないで念の為にチェックしておく」ことを忘れないようにしよう. 
具体的には Alt+F2 などで他の仮想端末に切り替えてログインしてみて,大丈夫か様子を見る. 
大丈夫ならばそちらはログアウトして,Alt+F1 で戻ってくればよい.

** X サーバの設定 [#j8848dd9]

ほとんどの Unix では X Window system というシステムがグラフィックシステムの任を負う.
ただし,設定はそれなりに(初心者には特に)大変に感じるかもしれない. 丁寧にみていこう.

*** マウスとキーボードを X 7.4 でのデフォルト設定にあわせよう [#nb570c33]

Xorg は 7.4 からマウスとキーボードの取扱のデフォルト設定が変わった.
それにあわせて,マウスとキーボードの設定をいったん新しい方法しておこう(だめなら古い方法に戻す).

**** /etc/rc.conf を編集する [#b785213b]

具体的には,スーパーユーザーで /etc/rc.conf を編集して,まず,

  moused_enable="YES"

を

  moused_enable="NO"

に修正しよう.それから,

  moused_nondefault_enable="NO"
  dbus_enable="YES"
  hald_enable="YES"

の3行をその下に書き足しておこう.
なお,この最後の2行の順序を変えるとおかしくなるので注意しよう.

**** 日本語キーボードが使えるようにする [#z8e8c861]

このままだとキーボードは英語キーボードとして認識され,X を使っているときはいろいろと困る.

そこで,次の内容で /usr/local/etc/hal/fdi/policy/keyboard-jp106.fdi というファイルを作ろう(多分ファイル名は適当でよい).

  <?xml version="1.0" encoding="UTF-8"?>
  <deviceinfo version="0.2">
  <device>
  <match key="info.capabilities" contains="input.keyboard">
  <merge key="input.x11_options.XkbRules" type="string">xorg</merge>
  <merge key="input.x11_options.XkbModel" type="string">jp106</merge>
  <merge key="input.x11_options.XkbLayout" type="string">jp</merge>
  </match>
  </device>
  </deviceinfo>


この二つの作業が済んだら,この修正を反映させるために,リブートをしておこう.

*** 標準設定で動かないか試してみる [#u6a16d51]

まず,なにはともあれ標準設定で X が動かないか試してみよう.動けば苦労が少ない.
それには,

  startx 

と打ち込むだけでよい.
すると,設定が妥当ならば,次のような画面になって,X window systemが動いたことが分かる.
&ref(./03-42.png,75%);

なお,この画面になった場合,"login" と表記のある文字端末上で "exit" とすると X が終了し,これまでのコマンドラインに戻ってくる.
マウスやキーボードが有効に機能しない場合は,この下にある「X を起動したら操作できない状態になった場合」を参照して窮地を脱してから,すぐ下の「画面は出るがマウスとキーボードが動かない場合」を読もう.

*** 画面は出るがマウスとキーボードが動かない場合 [#pdc5a6cf]

画面は出るがマウスとキーボードが動かないという人はまずは /etc/rc.conf が正しく書き換えられていて,かつ,書き換え後にリブートしたかどうか確認しよう.
/etc/rc.conf の設定に問題がないという場合は,マウスとキーボードを取り扱う新しい仕組みがうまく機能しないということなので,古い方法に戻すことになる.
具体的には,次の作業をスーパーユーザにて行う.

まず,/etc/rc.conf を書き換えて,

  moused_enable="NO"

を

  moused_enable="YES"

に戻そう.それから,

  moused_nondefault_enable="NO"
  dbus_enable="YES"
  hald_enable="YES"

の3行を無効にしておこう(行頭に # を書けば,その行は無効になる).
それから,いったんリブートが必要だ.

その後,/etc/X11/xorg.conf を編集(なければ作って)して,まず,"ServerFlags" セクションに
  "AllowEmptyInput" "off"
  "AutoAddDevices" "false"
の二つのオプションを追加する(このセクションがなければ作る).
例えば,作った場合は

  Section "ServerFlags"
        Option       "AllowEmptyInput" "off"
        Option       "AutoAddDevices" "false"
  EndSection

という記述が増えることになる.

あと,/etc/X11/xorg.conf の "InputDevice" セクションの Driver "mouse" となっている項目をチェックする.マウスが PS/2 接続ならば Option "Device" が "/dev/psm0" と,USB 接続ならば Option "Device" が "/dev/ums0" となっているか確かめよう.

こうしてから,再び X を起動してマウスやキーボードが動くかどうか確かめよう.


*** X を起動したら操作できない状態になった場合 [#qcc6f4cb]

画面は出るがキーボードやマウスが操作できない,画面が真っ黒になるだけで何もできなくなった,などという場合は, Ctrl + Alt + F2 などとして,別のコンソールからログインして,スーパーユーザで X を叩き落とそう.
具体的には,スーパーユーザになってから

  ps -axuww | grep X

として,

  root  825     ...   X -config /root/xorg.conf.new

という感じになっている情報を探して,この場合は 825 という Process ID を覚えておいて,

  kill -9 825

とやると,このプロセスが死んで,もとのコンソールに戻っているはず.
Ctrl + Alt + F1 として確認してみよう.

*** 標準設定では画面が真っ黒になるだけ,の場合 [#m709455c]

さて,真っ黒くなって画面が出てこない場合は,設定があっていないということなので,設定にとりかかる.

手順としては,「設定ファイルを自動生成」させて,それで問題なければよし,それでもダメなら設定ファイルを手で直すということになる.

以下, スーパーユーザ(root)で「グラフィック環境設定ファイルの自動作成」を次の手順で行う.

  cd home
  Xorg -configure

すると,環境が自動的に調査され,/root/xorg.conf.new という設定ファイルが作られる.
ただし,結果はあんまり信用できない(^-^)

とりあえずこの設定ファイルで動くかどうか,

  X -config /root/xorg.conf.new

として試してみよう.
うまくいくなら問題ない.

さて,真っ黒くなって画面が出てこない場合は,「主にグラフィックドライバの設定があってない」場合がほとんどなので,グラフィックチップが何かをきちんと調査して,設定ファイルの Section "Device" の Driver を妥当なものに直して,X -config ... に再チャレンジだ.
何が妥当かは,グラフィックチップ名と,/usr/ports/x11-drivers/ の下のディレクトリ名を眺めるとなんとなくわかってくる.

さて,ちなみに,ハードウェアをきちんと調査するには,前回の授業で示した

- 他の OS で調べる
- BIOS をみる
- PC を開けてみる

方法の他に,

- ファイル /var/run/dmesg.boot (起動時のメッセージが保管されている)を読んでみて,VGA 関連の部分を探して知る.

という方法がある. この方法だとうまく行けば,グラフィックボードのメモリ容量もわかったりする.
例えば,とある(古い)マシンで dmesg をみると,次の部分がグラッフィック関連のメッセージで

  agp0: <Intel 82865G (865G GMCH) SVGA controller> port 0xec00-0xec07 mem 0xf0000000-0xf7ff
  ffff,0xffe80000-0xffefffff irq 16 at device 2.0 on pci0
  agp0: detected 32636k stolen memory
  agp0: aperture size is 128M

というあたりがみつかる.
この場合はどうやら 
- Intel 82865 というチップらしい
- メモリは 32636K ほど(メインメモリから)持ってきているらしい

ということがわかる. つまり,(結果論だが)この場合は driver としてもっとも近そうな intel を選択(グラフィック用メモリの大きさも設定したければ 16384K を選んでおけばよい)ということになる(色深度も 24bit にできる).

*** X サーバがうまく動くことの確認 [#ad3465bc]

さて,新しく作った設定ファイル xorg.conf.new でうまく動くようだったら,設定ファイルを正式な場所に置いておこう.
次のようにする.

  cd /etc/X11
  mv xorg.conf xorg.conf.ORG ←すでにあるのならばバックアップしておく.
  mv /root/xorg.conf.new ./xorg.conf

これでよい.

** Gnome 環境のインストール [#u2f66518]
現在の二大デスクトップ環境である Gnome, KDE のうち,ここでは Gnome を使ってみよう. 
インストールはやはり Packages からが楽なのだが,一応両方の方法を紹介しよう.

*** Ports による方法 [#w52d2b54]

まず,下準備をしよう.具体的には以下のような手順になる.
スーパーユーザになってから次の手順で作業する.

最初に,これからの作業時に「参照したいが入ってない」と文句を言われる可能性のあるユーザランドのソースファイルを入れよう.
具体的には,
  sysinstall
で Configure → Distribution とすると
&ref(./03-46.png);
という画面になるので,ここで "src" を選ぶ. すると,さらに細かく指定しろ,として
&ref(./03-47.png);
という画面になるので,ここで
- etc
- include
- lib
- libexec
- bin
- sbin
- share
- sys
- ubin (usr.bin)
- usbin (usr.sbin)

を選択して,あとは戻っていって OK. なお,ファイルをどこから持ってくるかは CD からでもよいし,FTP からでもよいだろう.

その後,事前にいくつか小さな設定をしてから,gnome2 にとりかかる.
Ports のみだと数日間! かかる可能性があるので,時々 Packages を利用することにしよう.
具体的には,

  setenv BATCH yes
  setenv PACKAGEROOT "ftp://ftp.jp.freebsd.org"
  cd /usr/ports
  portinstall -P gnome2
  portinstall x11/gnome-session
  portinstall x11/gnome-panel
  portinstall x11/gnome-screensaver
  portinstall x11-fm/nautilus
  portinstall x11-wm/metacity 

などとすればよい.これでとりあえず必要最小限のものはインストールされる.
ただし,
  x11/gdm
  x11/gnome-applets
  x11/gnome-desktop
  x11/gnome-menus
  x11/gnome-terminal
  sysutils/gnome-control-center
なども入れておくと便利だとは思うので,そのあたりは好き好きで(これぐらい多くなると,最初から Packages で入れてしまった方が早くて楽かも).
なお,既にインストールされているものは再インストールしなくてよい.

なお,cairo の ports によるインストール過程で python の ver. 2.5 と 2.6 の違いによりインストールが停まる場合がある.
インストーラの矛盾/バグとも言えるが,とりあえず
  cd /usr/local/lib/python2.5/site-packages
  ln -s ../../python2.6/site-packages/cairo .
としておけばしのげる.

// また,metacity などは(gnome2 のインストール過程で)既にインストールされているかもしれないので,
//  pkg_info | grep -i metacity 
// して事前に確かめよう(インストールされていれば情報が出てくる).

なお,全体に,相当大量の作業が行われるため時間がかかるので覚悟しておこう.

*** Packages による方法 [#jb029999]

こちらは御気軽だ.

スーパーユーザで,
sysinstall -> COnfigure -> Packages として,CD/DVD でも ftp でも好きな方を選んで,出てくる一覧の中の x11 を選択して,

  gdm-2
  gnome-applets
  gnome-desktop
  gnome-menus
  gnome-panels
  gnome-screensaver
  gnome-session
  gnome-terminal
  gnome2

を新たに選択に追加して,インストールすればよい.
ただし,CD/DVD を選んだ場合は,disc2 が必要となる.

インストール後に,gnome の設定メニューがすくないなあと思う向きは,

  gnome-control-center

を追加でインストールすればよい(package のどこにあるかは調べてみよ).


** 設定 : ユーザが日本語変換機能を使う設定(デスクトップ用) [#i798f4be]

- ユーザのホームディレクトリの .xinitrc というファイル(無ければ作る)に
 export XMODIFIERS="@im=kinput2"
 export GTK_IM_MODULE="kinput2"
 export XIM_PROG="kinput2"
 kinput2 -wnn +ximp -ccdef ccdef.kinput2.egg &
 exec gnome-session
と書いておく(最後の行は,Gnome を使う為の設定).
- ユーザのホームディレクトリの .Xdefaults というファイル(なければ作る)に
 KTerm*VT100*kanjiMode:euc
 *inputMethod:kinput2
と書いておく.

** 確認 [#aa634277]
普通のユーザとして,
 startx
としてみよう. これまでの設定が正しければ自動的に "X が起動 → Gnome が起動" となり,下のような画面になるはずだ.
&ref(./03-57.png,75%);

うまく Gnome が起動したら,次のように他の確認もしておこう.
+ アプリケーション → アクセサリ → 端末 として Gnome仮想端末を起動.
+ Gnome端末内で 
 emacs &
として Emacs が起動するのを確認.
+ emacs 内で Ctrl-\ として,日本語モードを起動. 何か日本語を打って変換できることを確認する. 
// 日本語変換を初めて行ったときに辞書を作成するかどうか聞かれるので全て「はい」としておく.
+ Gnome端末内で 
 kterm &
として日本語対応仮想端末が起動するのを確認.
+ kterm 内で Shift+Space として日本語モードが起動できることを確認. 
ただし,漢字コードを EUC にしておかないといけないかも.
それには,Ctrl を押しながらマウスの中ボタンを押すと出るメニュー "VT Options" で,Japanese EUC Mode を選んで有効にすればよい.
+ Gnome端末内でも kterm 内でもよいので,
 jman man
として日本語マニュアルが読めることを確認.

*** 日本語変換がうまくできない場合 [#deaa29ea]
たいていは,設定にミスがあるか,Jserver が起動していないケースだろう.
次の順序でチェックしよう.
+ 設定を注意深く見直す.特に,Gnome 端末内で 
  env
として,設定が反映されているかチェックしよう.
+ Jserver が起動しているか確認する.方法としては,lsof というコマンドをインストールしておいてから,
  lsof -i4
として,jserver が待ち受けているかみるのが良いだろう.
もしも jserver が待ち受けていなければ,X を落してからスーパーユーザ権限で
もしも jserver が待ち受けていなければ,X を落してからスーパーユーザ権限でおかしそうなプロセスを殺してから(kinput2 とかが固まったままになっている可能性が高い),
  /usr/local/etc/rc.d/wnn stop
  rm -f /tmp/jd_sockV4
  /usr/local/etc/rc.d/wnn start
としてから,もう一度 startx してみよう(リブートしないとダメかも知れない).  
として,もう一度 startx してみよう(リブートしないとダメかも知れない).  

** Web ブラウザについて [#d7cd66d1]

どうやって gnome2 を入れたのかに依存するが,Web ブラウザがまだインストールされていないかもしれない.
その場合は,自分の好きな web ブラウザを Packages/Ports のいずれかの方法でインストールしてみよう.

* (おまけ) さらなるアカウントの作成 [#lfeb78ba]
自分のアカウント以外のアカウントを作成し,ログインできるようにしてみる. 具体的には,両隣りあたりの人に希望するアカウント名を尋ね,そのアカウントを自分の管理している PC に作成する.  ただし, この時にそのパスワードはその人自身に入力してもらうこと.

なお,アカウント作成には(内部的にはやっていることは同じだが)見掛け上はいくつかの方法がある. 
- sysinstall → Configure → User management → User とする方法. 次の adduser を呼び出すだけであるのだが.
- adduser と入力する方法.
- vipw を始めとする様々なコマンドを駆使する方法.
いずれにせよ最終的には最後の方法が使えないと困る場面が出てくるだろうが,最初は二番目のadduser コマンドから慣れるのが良いだろう.

* ラッキーにもここまで出来たら今日の作業は終了 [#caf3d813]

- Gnome 環境が立ち上がり,この授業用 web( http://www.cas.cmc.osaka-u.ac.jp/~paoon/Lectures/2009-8Semester-AppliedMath8/ )がfirefox で閲覧できることを確認せよ. そして,firefox のブックマークに登録せよ. 
- 両隣りあたりの人のアカウントを作成し,その人にその人のマシンから ssh でログインして貰い,ログインできることを確認せよ.
- furihata というアカウントを作成せよ. このアカウントのパスワードは授業時に口頭で伝える.

* レポート [#naeeac8c]
本日行った作業について furihata あっと cmc.osaka-u.ac.jp にメールで報告せよ.
もちろん各自の

+ 所属(学部,学科)
+ 学籍番号
+ 学年
+ 氏名
+ 日時
+ 肝心のレポート内容(得た知見,作業について気づいたこと等)

を書くのを忘れないように.

* おまけ [#k9651834]
自宅でももちろん同じように FreeBSD を PC にインストールすることができるので試してみたい人もいるだろう. ただその際,余っている PC が無いと出来ないというのでは,なかなか難しい.
しかし,vmware player などの仮想環境を用いると,普段使っている MS Windows 上でこの FreeBSD そのものを使うことが可能になったりする. 意欲のある人は試してみよう.
//&br;&br;
//(MS Windows 上に VMware Player で今回と同じ作業を行って Gnome 環境まで構築した例)&br;
//&ref(./FreeBSDonVmware.png,20%);