授業資料/第04回 の変更点

Top / 授業資料 / 第04回

** 復習および追い付き [#o6ea99b6]
これまでの授業に作業が追い付いていないという者は急いで追い付こう.

** これからの作業環境 [#q356cab6]

*** 文字端末 [#y2e768ec]
とりあえず X (Gnome環境) が使えるようになったので,その上で Terminal Emulator を用いるのがなにかと便利である. よってこの方法を主として使っていくことにしよう((もちろん,X を立ち上げない状態のコンソールを使っても構わない)).

Gnome の場合,デフォルトでは「アプリケーション」→「アクセサリ」→「GNOME端末((デフォルトで入っているものだが,性能は今一つ. 日本語マニュアルと相性が悪い.))」とするととりあえず基本的な文字端末エミュレータが立ち上がるはずである. 

- 他にも(インストールしてあれば) kterm や rxvt などが文字端末エミュレータとして使える.
GNOME 端末の中で
 kterm &
 rxvt &
などとして立ち上がるか試してみよう(使ってみたいがインストールされていない,というならば後述の「設定の説明」のところを読むべし).
使ってみてそちらが気に入ったのだったら,メニューから使えるようにしておくのもよいだろう.

*** 複数のコンソール [#ud3b88a3]
FreeBSD は起動した後すでに複数のコンソールが立ち上がっている. イメージとしては,モニタとキーボードが複数繋がっていると思えばよい.
具体的にどうなっているかは,
  less /etc/ttys
としてみよ. その中で 4カラム目が "on" になっているものが生きているコンソールであり,デフォルトでは ttyv0〜ttyv7 の8台が既に動いているのが分かる.

実際にはモニタ/キーボードが一組しか繋がっていなくても,これら複数のコンソールを切り替えて使えるようになるとなにかと便利である. それには Alt+F2 などとすればよい((Alt+F2 だと2つめのコンソール,Alt+F3 だと3つめのコンソールになる)). ちなみに,X を立ち上げている状態からは Ctrl+Alt+F2 などとしないといけない.

*** (実習) [#u315c4ba]
上記のコンソール切り替えを試してみよう. そして,元に戻ってみよう(( X に戻るに  は Alt+F9 あたりか)).

*** エディタ [#tbbba8c0]
Unix系 OS の管理の基本はテキスト形式の設定ファイルをエディタで編集する作業と,文字端末でのコマンド入力作業である((最近は管理用の GUI も多いが,たいていのものは「かぶせただけ」である)). そこで,エディタについても触れておく.

Unix でのエディタは基本的に
- Emacs 系(日本語が使いやすいようにパッチが当たっているものは [[Emcws:http://emacs-20.ki.nu/emcws.shtml]] とよばれる)
- Vi 系(実質的には,その後継と目される [[VIM:http://www.vim.org/]] が使われることが多い)

のいずれかを使うことになるだろう(理由は様々あるが).
ただし,いずれもユーザインタフェースの壁が高く初心者にはツライものがあるので,Unix 系 OS の多くは初心者用に緊急避難的なエディタを用意している.
FreeBSD では "ee" という簡易エディタが用意されているので,初心者はこの名前を覚えておくと良いかも知れない.

*** (実習) [#u92dbdd3]
- [[web 上の簡単な資料:http://www.cas.cmc.osaka-u.ac.jp/~paoon/Lectures/2006-7Semester-AppliedMath7/02.html#textfile_editor]]を見て,emacs, vi の両方をとりあえず使ってみよ. 
- ee を起動して一通り使ってみよ. また,jman ee としてマニュアルを読んでみよ.

* これまでやったインストール/設定の説明および確認等 [#jbb10742]

これまで駆け足でまずインストールと基本設定を行ったが,これについて解説を行う.

** プログラム,ファイル等のインストールについて [#a89613fd]

FreeBSD では,ソフトウェアのインストールには以下のようにおおよそ4種類の方法がある.

| インストール方法 | 説明 |h
| /usr/sbin/sysinstall → Configue → Distribution とする | 基本的なソフトウェアセットはこれを用いてインストールするのがよい. X が入っていない!なんて場合はこれを用いて追加するのがよいだろう. 依存関係もきちんと管理される.  ただし,[[FreeBSD Foundation:http://www.jp.freebsd.org/www.FreeBSD.org/ja/]] によって管理されたものしかインストールリストに入っていない.  |
| Package を用いる. 具体的には sysinstall → Configure → Packages としても良いし,バイナリを直接持ってきてから pkg_add コマンドを用いてもよい((ただしこの場合は依存関係は自動的に解決されないはず)). | Package というのは,「コンパイル済みバイナリ」を持ってきてインストールする仕組みないしはそのバイナリ等のことである. 実質的に単なるコピー作業であるので,作業時間は短くて済み,楽である. ただし,コンパイル環境やコンパイルオプション設定が変えられないので,細かい設定を要する場合には不向きである.   |
| ports((実は,ports はソースからコンパイルするための「情報」を集めただけのものである.コンパイルした結果は内部的には Package として扱われてインストールされる.よって,ports からでも Package からでもソフトのインストール後は Package として扱われる. )) を使う. 具体的には,/usr/ports 以下などにある「目当てのソフトウェアの名前のついているディレクトリ」に行き,Makefile を読んで設定を調整した上で make configure → make → make install とコマンドを打つのが典型的な作業である.  ただし,portupgrade というソフトをインストールしておけば(後述), portinstall という命令だけでインストールできるようになる. | これは「プログラムをコンパイルするのに必要最低限な情報」が集められていて,コンパイルするときにプログラムソースをネットワーク経由で取ってきて自前でコンパイルする仕組みである.必要最低限の情報しかないのでディスクスペースを取らないし,コンパイルに当たって細かい設定が出来るのが利点である.ソースからコンパイルするのでそのソフトウェアの最新版が利用可能なところも利点だ.慣れてきたら Package よりも Ports を使うようにしたい. ports が入っていない場合,sysinstall → Configure → Distributions で ports を選べばインストールできるはずである. |
| ソースを自分でコンパイルする. | かつてはこの方法しかなかった最も原理的なインストール方法である. 今でも無名なソフトウェアや自作ソフトウェアにはこの方法しかないので, 結局できるようにならねばならない.   詳細については [[2006年の応用数理7の授業の該当部分:http://www.cas.cmc.osaka-u.ac.jp/~paoon/Lectures/2006-7Semester-AppliedMath7/11.html]]((linux を使っているが基本は一緒.)) でも読んで欲しい. |

*** (実習) [#pf5caf1c]
- ports コレクションが /usr/ports 以下にあるかチェックせよ. なければインストールしておけ.
- ports コレクションの中から目当てのソフトウェアを探すにはいろんな方法が考えられるが,一番簡単なのは探したいソフトウェア名が ABC だとして
 (cd /usr/ports; make search name="ABC" )
とする方法だ. 他にもいろいろ考えられるので余力のある者は考えてみよう. 例えば教官は
  #!/bin/csh -f
  grep '^[^|]*'"$1" /usr/ports/INDEX-6 | awk -F\| '{print $1,":",$2,":",$(NF-1)}' | sort
と書いた "ports-find" というシェルスクリプトを作って "ports-find ABD" などとして使っている. make search ... よりも結果がタイトで見易い.

ちなみに,既にインストールされているソフトは Package 扱いなので
  pkg_info -a
で全て情報が出てくる. 
ただしこれだと見にくいので,例えばシェル(csh の場合)で
  alias pkglist "pkg_info -a | grep 'Information for' | sed 's/Information for //'"
  alias pkg_list "pkg_info -a | grep 'Information for' | sed 's/Information for //'"
などと設定しておけば,
  pkglist
とするだけで ports/Package によってインストールされているソフトウェアのリストが出てくる.
  pkg_list
というコマンドで ports/Package によってインストールされているソフトウェアのリストが出てくる.

- "fd" というソフトウェアを ports を使ってインストールしてみよう. 
具体的には,fd の名前のディレクトリ(上の方法で探せ)に移動し,
 make configure → make → make install  
としてインストールし,fd コマンドで fd が起動すること("q" で exit できる), man fd, jman fd として各々マニュアルが読めることを確認. その後,
 make clean 
としてコンパイル時にのみ必要だったファイルを削除,という作業になる.なお,
 Read the document files in /usr/local/share/doc/fd, 
 and use the example fd2rc files in /usr/local/etc.
という注意書きが make install 時に出る. こうしたさりげない説明を見逃さないように(一回しか出ないことが多い).
ちなみに,fd の設定等については日本語マニュアルを読めば良く分かる(or 推測できる)が,基本的には /usr/local/etc/fd2rc がシステム共通の設定ファイル,~/.fd2rc が個人用設定ファイルである.
- さらに余力のある者は,同様に rogue を ports からインストールしてみよ.

** ディスク管理 [#u3f48f9d]
(主にハード)ディスクをどう扱うかについては,
: fdisk | ハードディスクのどの部分をどの OS が使うか切り分ける.
: disklabel | FreeBSD 用に確保した部分をどう使うかさらに切り分ける.
: newfs | 上で細かく切り分けた部分(パーティション)に用途に応じたファイルシステムを作り込む
: mount | 上で細かく切り分けた部分をどのディレクトリに割り当てるか /etc/fstab などの情報から決める

というコマンドを駆使する必要がある. 
FreeBSD インストール時にはこれらの準備は対話的に行れ,コマンドは sysinstall が実行してくれるが,「新しく買ってきたハードディスクを増設したい」などの場合はこれらのコマンドを意識した方がよいだろう.

*** (実習) [#x237261d]
 less /etc/fstab 
としてみて,ハードディスクのどの部分がどのディレクトリに割り当てられているか見てみよ.
さらに
 df
としてみよ.
また,jman mount, jman umount としてハードディスクのディレクトリへの割り当てを変えるにはどうしたらよいか推測せよ((よく分からないうちは mount コマンドも umount コマンドも実行しないこと!!)).

** ネットワーク設定 [#fe37c7f8]
ネットワークの設定を見たり,変えたりするには本来は各設定ファイルを閲覧/編集する必要がある.
例えば,
  ifconfig -a 
とするとネットワークの機械的な設定が見られる.
しかし,
sysinstall → Configure → Networking → Interface → (使うネットワークカード: たいてい一番上)
としてから設定することで対話的にも設定でき,たぶんこちらが楽だろう((ただし,/etc/rc.conf は自動的に「追記」され修正されないので sysinstall で設定する度に汚くなる.適当な時期に人間がエディタで綺麗にした方がよいだろう. ちなみに /etc/rc.conf の記述は下の方ほど優先順位が高い.)). 
各設定内容についてまずざっと述べよう.

*** IPv6 ? [#l6fb9b9f]
IP version 6 を用いるかどうかの設定. われわれが通常用いている IP は version 4 である. 2007年現在では,まだ IPv6 でなければならない,というネットワークは多くないだろう. 通常は No で構わない.

*** DHCP ? [#pabc6363]
Dynamic Host Configuration Protocol の略で,そのマシンのネットワーク設定情報をネットワーク自身から貰うか? という設定.
これはそのネットワークの管理者の設定/ポリシーに依存するので,管理者に尋ねておかないといけない((例えば,VMwarePlayer では NAT + DHCP 設定にするのが楽だろう,など.)).
計算機室では No である.
有効にした場合は,/etc/rc.conf に
  ifconfig_(ネットワークカード名)="DHCP"
と記述される.

*** Host name [#fc37bebf]
ネットワーク上でそのマシンが名乗る名前. テキスト形式であり,人間向けの情報である.
DHCP 有効の場合は設定不要なことが多い.
計算機室での設定については先週の資料を参照のこと.
主に /etc/rc.conf で
  hostname="..."
と書かれて設定される(書かれている部分の最初のドットまで).

*** Domain [#p5a57b35]
そのマシンが属するネットワークそのものの名前. 
家で言えば住所のようなもの.
DHCP 有効の場合は設定不要なことが多い.
計算機室での設定については先週の資料を参照のこと.
主に /etc/rc.conf で
  hostname="..."
と書かれて設定される(書かれている部分の最初のドット以降).

*** Gateway [#f070b3b9]
属するネットワークの外への出口(中継場所).
IP で記す.
DHCP 有効の場合は設定不要.
計算機室での設定については先週の資料を参照のこと.
主に /etc/rc.conf で
  defaultrouter="..."
と書かれて設定される.

*** Name server [#udfa2057]
ホスト名と IP Address の変換情報をどのサーバに尋ねればよいか,という情報.
これが無いと他のマシンへのホスト名でのアクセスができない((逆に言えば,IP Address が分かっていれば Name server へ聞かなくてもアクセスできる. 不便だが.)).
DHCP 有効の場合は設定不要.
計算機室での設定については先週の資料を参照のこと.
主に /etc/resolv.conf で
  nameserver ...
と書かれて設定される.

*** IP Address [#q8caa5b2]
マシンがネットワーク上で持つ番号. 数字で表され,機械向けの情報.
ネットワークの相互の実際のアクセスは IP Address を使ってされるため,少なくとも属するネットワーク上では IP Address は唯一でないといけない.
DHCP 有効の場合は設定不要.
計算機室での設定については先週の資料を参照のこと.
主に /etc/rc.conf で
  ifconfig_(ネットワークカード名)="inet ....  netmask ...."
と書かれた inet .... の部分で設定される.


*** Netmask [#n8d61698]
自分の IP を記したときに,どこまでがネットワークの持つ番号で,どこからが自分のマシンが(そのネットワークのなかで)持つ番号かを区別するために使う情報.
二進数表示したときに "1" になるところまでがネットワークの情報で "0" になるところがマシン別用の情報ということになっている.
"." で区切って10進数で表すか,0x を頭につけて 16進数で表す.
DHCP 有効の場合は設定不要.
計算機室での設定については先週の資料を参照のこと.
主に /etc/rc.conf で
  ifconfig_(ネットワークカード名)="inet ....  netmask ...."
と書かれた netmask .... の部分で設定される.

*** (実習) [#t1aa6df7]
- 上のネットワークの設定をファイル(/etc/rc.conf, /etc/resolv.conf)を読んで確かめよ.
- 実際に
  ifconfig -a
としてみて,ネットワークの設定と照合せよ.

** その他細かい設定 [#k5bf905d]

*** inetd ? [#db067a88]
ネットワークサービスの総合受付である inetd を準備しておくか? という設定である.
必要ならば /etc/rc.conf に
  inetd_enable = "YES" 
と書けばよい. 

*** sshd ? [#b5e2f11f]
データが暗号化されたログイン経路である ssh の受付をするか? という設定である.
有効にしておくのがよい.
/etc/rc.conf に
  sshd_enable = "YES" 
と書けばよい. 

*** NFS server ? NFS client ? [#p430df3d]
ネットワーク経由でハードディスクを使えるようにするか? という設定である.
server は「ハードディスクを持っている側」,client は「それを利用する側」である.
NFS の仕組みは重要だが,そのソフトウェアはやや使いにくい. 使うには各々 /etc/rc.conf に
  nfs_server_enable = "YES" 
  nfs_client_enable = "YES" 
と書けばよい. 

*** Console キーボードの設定 [#l6d89627]
繋がっているキーボードをコンソールでつかう場合,キーボードを合わせておくとよい.
英語キーボードならば特に何もする必要はないが,日本語キーボードの場合は /etc/rc.conf に
  keymap="jp.106"
ないしは
  keymap="jp.106x"
と書いておく(後者は Ctrl キーと Caps キーの機能を交換して使う場合).

*** mouse の利用 [#w9318c9a]
マウスを使わない! という場合は少ないだろうからまあ設定しておくのがよいだろう.
/etc/rc.conf に
  moused_enable = "YES" 
と書いておく.

*** (実習) [#p24c3213]
上の設定が今現在どうなっているか,/etc/rc.conf を見て確かめよ.

** アカウント管理 [#xcacf995]
Unix系 OS ではユーザアカウントは以下のような情報で管理される.

: アカウント名,ログインid | テキストで構成されるアカウント名. 唯一である必要アリ.
: uid | そのアカウントを区別するための背番号的なもので単なる数字. システムの様々な権限があるかどうかは uid で区別される.ただし,ログインシステムやシェルはアカウント名でアカウントを区別する((つまり,同じ uid だがアカウント名が異なるアカウント(別名アカウント)を作成することが可能.使い方によってはとても便利だが,よく分かって無い人にとっては混乱のもとか.)) sysinstall, adduser コマンドなどでは自動的に候補が作成される.
: Group | そのアカウントが主に属するグループ名. システムの様々な権限はより正しくは uid と所属グループで区別されるので,どのグループに属するかは重要だが,「主に」属していなくてもよいので,実はここは適当でもよい. sysinstall, adduser コマンドなどでは自動的に候補が作成される.
: Password | ログイン時などに必要なパスワード. 後でユーザが
  passwd
として変更できる. 管理者は全アカウントのパスワードを自由に設定できる.
: Full name | フルネーム. 人間用情報なので,実は何を書いてもよい.
: Member group, Other group | 他に属しているグループ名. これは重要. あとで管理者になるべき人が使うアカウントはとりあえず wheel, operator としておくべし.  wheel に属していると管理者になる権限が,operator に属していると様々な特殊なコマンドを使う権限が手に入る.
: Home directory | そのアカウントユーザが固有で使えるディレクトリ. 通常は /home/アカウント名 とすることが多い. sysinstall, adduser コマンドなどでは自動的に候補が作成される.
: Login Shell | ログイン時から使うシェル. /etc/shells にリストアップされているものの中からしか選べないので注意((使いたいシェルが /etc/shells に書いてなければ root で書き込んでおくこと)). ただし,"nologin" は特別で,これを選ぶとログインできなくなるようになっている. 後でユーザが
  chsh -s /bin/tcsh
などとして変更できる.

さて,これらの情報の設定方法は主に以下の3通りである.
ただし,管理者(root,スーパーユーザ)でないと出来ない作業であることは言うまでもない.

| 方法 | 解説 |h
| adduser コマンドを使う(新規時) |  お気楽. 間違えたら Ctrl-C で止めればよいし,後で(後述のコマンドを使って)修正も効く.  ただし,「変更」には使えない.  |
| sysinstall → Configure → User Management とする方法 | より気楽. ただしこれも「修正」には使えない. |
| コマンドを使う | 最終的にはこれが必要. &br;&br; ''vipw'' … アカウント名,uid, 主グループid, フルネーム, ホームディレクトリの指定, ログインシェルを設定するコマンド. 具体的には,エディタ((どのエディタが呼ばれるかは環境変数 "EDITOR" の設定による. 設定してないと vi が出てくる))で /etc/passwd ファイルを「正しく」呼び出す.このコマンド以外の方法でこのファイルを編集することは意味がないので要注意だ.&br;&br; /etc/group ファイル… 普通にエディタで編集可. グループの作成,編集,アカウントの所属を自由に編集できる. &br;&br;あと,adduser や sysinstall を用いない場合はホームディレクトリが自動的に作られるわけではないことにも注意が必要だろう. |

*** アカウントチェンジ [#j061e8cb]
権限があるならば,ログインした状態で他のユーザになりかわることができる.
例えば,スーパーユーザが "hogehoge" というユーザになりかわりたければ
  su hogehoge
とすればよい.
逆に,普通のユーザがスーパーユーザになりかわりたい場合は
 su
とすればよい(ただしスーパーユーザのパスワードを知らない場合と権限がない場合は拒絶される).

*** (実習) [#v429ff9a]
- 両隣りあたりの人,二人のアカウントを作成せよ. そして,まずは普通にコンソールからログインできることを確認せよ. 次に,その人にその人のマシンから ssh でログインして貰い,ログインできることを確認せよ. なお,ssh でのログインは  
  ssh 相手マシンでの自分のアカウント名@相手マシンのホスト名
とする.
- furihata というアカウントを作成せよ. このアカウントのパスワードは授業時に口頭で伝える.

* レポート [#ra079c7e]
本日行った作業について furihata あっと cmc.osaka-u.ac.jp にメールで報告せよ.
もちろん各自の「所属,学年,学籍番号,氏名」を書くのを忘れないように.