FreeBSDセットアップ「つまみぐい」その7 雑多な注意点 ################################################################## ###事態がさらに悪化する危険性があるので、転んでも泣かない人専用### ################################################################## http://pohwa.adam.ne.jp/you/freebsd/memo.html も参照。 起動に失敗する http://www.jp.freebsd.org/QandA/HTML/464.html http://www.jp.freebsd.org/QandA/HTML/336.html まずは起動に失敗した画面をよく見て、どこでコケているのか見当をつけ、 どうにかして電源を切断する(なるべく危険の少ない方法で)。 # あとでログを見直せばよいので、必須な作業ではない # というか、わざわざこの画面を再現するようなことはしない 再起動時にBIOSの画面が消えてから、 Hit [Enter] to boot immediately, or any other key for command prompt. という指示が消えるまでの間にエンター以外のキー(スペースが一般的らしい)を押し、 boot -s とタイプしてエンター。これでシングルユーザーモードが立ち上がる。 # 5.x系以降ではシングルユーザーモードを選ぶだけ。「 Enter pathname of shell という指示には何も入力せずエンター(/bin/shが立ち上がる) # 次の項目でも触れるが、可能なら/bin/tcshあたりを使った方が楽。 # ただし、tcshが立ち上がらないときはいったんCtrl+Dで抜けて改めてshを起動する。 # (コケたシェルからはいったん抜けないと次以降の作業が進まない) /var/log/以下にあるファイルを参考に、どこでコケたのかを追及 ここで原因がわかればそれを修正。原因が不明なら以下のステップへ。 /etc/rc.conf、/etc/fstab、/boot/loader.confあたりを見直して編集 # よくわからなければとりあえず全行コメントアウトするが、 # fstabだけは最低限の設定が必要なので注意。 # fstabはとくにトラブルが多いので重点的に見直す。 リブートしたのち改めて設定を見直す。 それでも起動できなければ、あとはひたすらログファイルを検証。 行き詰まったら、コンソール画面やログファイルに残ったエラーメッセージで Web検索してみるのも有効。 トラブルがあってシングルユーザーモードで起動したが、どうしてよいかわからない ブート直後(4.x系なら起動画面でboot -s を入力した直後、5.x系ならデーモン君の AAが出る画面で4番を選択した直後)にログインシェルを聞かれるので、そのまま エンターを押すと/bin/shで起動する。 まず確認すべきはマウント状態なのだが、このコマンドはオプション省略が多い。 > mount # 情報表示たんに引数なしで実行してもよい。 > mount / # 読み直し(いわゆるリマウント)。 > mount -w / # 読み書き可能にする といった操作をすることが多いが、情報表示は省略なしだと-pオプションだったり、 読み直しは-uフラグが絡んでいたりと、基本コマンドの割に動作がイマイチ明瞭でない。 必要に応じて他のパーティションも読み込んでいくが、 > mount -a として一気にマウントすることも可能。 # 必要なパーティション以外には触らない方がよいと思う。 ファイルシステムのチェックも重要度が高いが、ディスクにエラーがあることが わかっているときなどは、fsckをかけずに他システムからのマウントなどを 試みた方がよいこともある。基本的には > fsck -p でめぼしをつけて、 > fsck -y /dev/xxxxxx などと自動修正することが多い(多いだけ)。 # わりと危険なコマンドなのだが、筆者はイマイチわかってなかったりする shでの作業はけっこうつらいので、/bin/tcshあたりを起動できると楽になる。 当然だが、ディスクエラーなどで/usrが読めない状態だと/usr/bin/配下の コマンドなどは実行できない。 5.x系以降では、/bin配下のコマンドに他パーティションのプログラムへの ダイナミックリンクが設定されているものがある。/しか見えていない状況だと これらのコマンドは実行できないのだが、/rescue以下にスタンドアロン版 (スタティックリンクを利用している)が用意されているのでそちらを使う。 そもそもブート画面まで到達しない システムが壊れていて復旧作業が行えない場合や、カーネルが読めず ブートしない場合はFreeBSDのインストールCDから起動して各パーティションを マウントしていくとよいが、FreeSBIE、DragonFly BSD、funyuppixといった FreeBSDベースのLiveCDもあるので、そちらを利用した方が便利かもしれない。 http://www.freesbie.org/ http://www.dragonflybsd.org/ http://funyuppix.ex-tra.net/ ディスクがマウントできたら、とりあえず> fsck を実行してデータが 壊れていないか確認する。必要なら、この時点でバックアップを取っておく。 もちろん、正常に動くFreeBSD環境をもうひとつ用意して、そこに問題のある ディスクを接続してやるのもひとつの案。ディスクのマウントすらできない場合、 ハードウェアの故障が考えられる。マザーボードやディスクが破損していた場合 ほぼお手上げになるが、IDEケーブルの断線(意外とよくある)程度であれば、 交換すればすぐ直る(いや、マザーボードだって交換すれば直るのだが)。 その他、筆者は触ったことがなく評判も知らないものだが、Frenzyという パッケージやg4uというディスクイメージツール(こちらはNetBSDベース)もある。 http://frenzy.org.ua/eng/ http://www.feyrer.de/g4u/ ディスクが正常なのに起動しない場合、恐らくブートシーケンスでコケているので 下記のページなどを参考に設定を見直す。 http://nobumasa-web.hp.infoseek.co.jp/boot_hdd.html 周辺機器(とくに、IDEとかSCSIとか、ホットプラグでないもの)に接触不良などの 故障がある場合もあるので、最小限のハードウェア以外はすべて取り外して テストしてみるとよい。また、コネクタ類の差し込みはしっかり確認すること。 # 筆者自身、オンボードLANチップの熱暴走(起動後数分で強制終了)、 # SCSIカードの接触不良(ブートしない)、サウンドカードの漏電(感電した) # などを経験している。 BIOSの画面すら出ない場合は、マザーボードが壊れている(もしくはマザーボードの ファームウェアに異常がある)可能性があるので、可能なら別のマシンに ディスクをつないでテストしてみる。 # モニタの電源が入っていない、ケーブルが外れているなど、笑えない # ヒューマンエラーの可能性も捨てきれないため、慌てず騒がず対応したい。 ここで最も怖いのは、電源が故障>接続している機器に過電流が流れて故障 というパターンで、テストのために接続した予備の機器まで壊れかねないため、 慎重を期すならテスト用に予備の電源を確保しておいた方がよい。 ディスクがBIOSから見えなくなった場合、ディスク、マザーボード、コネクタ あたりのいずれかが故障している可能性があるので、組み合わせを変えながら テストを行う。この場合もコネクタの接続はしっかり確認する。ディスクを つなぎ換えた直後なら、ジャンパピンの設定も確認すること。 ディスクのエラーでOSのインストールができない インストール予定の領域全体を、いったん削除>基本領域として確保>完全に初期化 # Win9x系の起動ディスクからなら、 # A:\>fdisk /mbr>Fdiskで空きスペースを作る>一応リスタート(A:\>restart) # Fdiskで基本領域確保>リスタート # A:\>format ドライブ名 # A:\>sys ドライブ名 したうえで、すでに動いているシステム(もしくは起動ディスクで 起動したDOSなど)からスキャンディスクを実行しておく。 上記を行った上で、すでに動いているシステムからディスクを覗いてみて、 きちんと認識されていることを確認し、改めてFreeBSD用の領域確保を行う。 MBRに手を入れていた場合、初期化されてしまうので忘れずに復旧しておく。 とくに、以前BSD系のOSを入れていたディスクに改めてFreeBSDを インストールする場合は、念入りに初期化しておいた方が無難。 ディスクのデータ領域を0で埋めるソフトウェアなども公開されている。 メッセージが速すぎて目で追えない コマンド実行時に > command > comand.log などとしてファイルに出力しておき、あとからじっくり読む。 Makeが失敗する 足りないとか古いとか言われたソフトウェアをインストールしてみる いったん> make deinstall してから改めて入れる /etc/.make.confを名前変更して、デフォルト設定でやってみる あきらめてpackagesを使う Makeのオプション http://yang.amp.i.kyoto-u.ac.jp/~yyama/FreeBSD/application/ports-j.html http://www.f-bell.net/FreeBSD/cvsup.html /etc/make.confに MASTER_SITE_BACKUP?= \ ftp://サーバ名/pub/FreeBSD/distfiles/ MASTER_SITE_OVERRIDE?= \ ftp://サーバ名/pub/FreeBSD/distfiles/ とか MASTER_SITE_BACKUP?= \ ftp://サーバ名/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/ MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP} などと書いておくとよいらしい。 あまり関係ないが、makeは、カレントだけでなくすべてのサブディレクトリで 実行されるため、 > cd /usr/ports > make install などとやると楽しいことになる。 cvsupに失敗する 引数がおかしい、というエラーが出る場合、コマンドを絶対パスで指定してみる (単にcvsupではなく/usr/local/bin/cvsupとする)。 portsdbやprotupgrade -a に失敗する http://www.pochi.cc/~sasaki/diary/?0325 http://blog.unknown.jp/mt/archives/000291.html http://d.hatena.ne.jp/dnsystem/20040707 http://taku.ath.cx/index.php?FreeBSD まずはportupgrade自体のバージョンを最新にする それでだめなら、 > pkgdb -aF > pkgdb -fu > pkgdb -aF > pkgdb -F まだだめなら、cvsupのrefuseファイルを名前変更(コメントアウトは無効らしい)して > cvsup > portsdb -uU portsdb -uUにも失敗したら、最初に戻ってpkgdbを実行してからやり直してみる。 /etc/make.confでWITH_LDAPをdefineしていると、portsdb -Uがエラーになるらしい。 # mail/tpop3d, mail/xfmailのldap対応が古いためだそうだ 追記: [Updating the pkgdb in /var/db/pkg ... /var/db/pkg/pkgdb.db: unexpected file type or format -- Invalid argument; rebuild needed] [Rebuilding the pkgdb in /var/db/pkg .../var/db/pkg/pkgdb.db: unexpected file type or format --Invalid argument: Cannot update the pkgdb!]: のようなエラーが出た場合は、root権限で > rm /var/db/pkg/pkgdb.db /usr/ports/INDEX*.db とすればよい(/usr/ports/UPDATE参照)。 ソースからmakeしてインストールしたが、設定ファイルのサンプルが欲しい Linux用のパッケージがあるなら、そこから設定ファイルを抜き出せばよい。 rpmファイル(cpio.gz)にしろdeb(ar)ファイルにしろ、圧縮ファイルであることには 変わりがないので、アーカイバで解凍してしまえば問題ない。 rpm2cpioのほか、Windowsで動くXacRettというソフトウェアもあるようだ http://www.kmonos.net/ congigureをやり直したい /var/db/ports/パッケージ名/optionsに保存されているcongigure情報を削除する。 conflictするportsをムリヤリインストールしたい /usr/ports/パッケージ名/Makefileを開き「CONFLICTS」の項目を編集する。 sendmailの自動起動を無効化できない http://www.jp.freebsd.org/QandA/HTML/2229.html /etc/rc.confに、sendmail_enable="NO"ではなくsendmail_enable="NONE"と書く。 一時的に別のシェルを使いたい シェルから他のシェルを呼べばよい。たとえばtcshでログインしていてshを使いたい場合、 > sh とすればshにログインする。shを終了(exit)すれば元のシェルに戻る。 FreeBSD5.xでkonを使う場合、 http://iris.homeunix.net/yayoi/freebsd/japanese/konenable.asp /etc/devfs.confの #link ttyv0 vga という行のコメントアウトを解除しなくてはならないらしい。 4.x系で日本語のファイル名を含むDosパーティションをマウント http://www.h4.dion.ne.jp/~hanbei/bibou.htm /boot/loader.confにmsdos_load="YES"と書いておけという解説があるが、 筆者の環境では必要なかった。 文字化けしたファイルを操作する # けっこう危険な操作なので十分な注意が必要 > ls -i でi-node番号を調べて > find -inum i-node番号 -exec 処理 で任意の処理(rmとかmvとか)をする たとえば、 find ./ -inum i-node番号 -exec rm {} \; で削除、 find ./ -inum i-node番号 -exec mv {} 変換後ファイル名 \; で名前変更ができる デーモン君からroot宛てにメールがきている > mail としてから メールを番号で選び、中身を読んだらdとタイプして削除 qもしくはexitでシェルに戻る # > mail あて先 < 送信するテキスト とすれば送信も可能 # (デフォルトではsendmailを使う) Linuxバイナリが動かない http://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/linuxemu-lbc-install.html http://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/linuxemu-mathematica.html まず、Linuxエミュレーションが有効になっているかどうか確認 ついで必要なライブラリがそろっているか確認、 Linux用のELFバイナリファイルには> brandelf -t Linux ファイル名 を実行、 # Executable and Linking Format の略で、独自のヘッダがついている。 /compat/linux/etc/host.confの内容を確認、 ライブラリを最新のものと差し替えてみる。 一部のソフトウェア(特にX上で動くもの)でキー入力がおかしい http://yuki-lab.jp/linux/x41.html http://www.linux.or.jp/JF/JFdocs/BackspaceDelete/ /etc/X11/XF86ConfigのInputDeviceセクション(のキーボードの設定を している方)にOption "XkbDisable"と書いておくと、コンソールの キーボード設定をX起動後も持ち越せる(というか、Xkbの設定が無効になる) delete、backspace、home、endなどのキーの動きがおかしい場合、 キーバインドを調整する Xが起動しなくなった /var/log/以下にある名前にXFree86と入ったファイルを参考に、 どこでコケたのかを追及。ここで原因がわかればそれを修正。 原因が不明なら以下のステップへ。 /etc/X11/XF86Configをバックアップと差し替える # バックアップがない、という事態は避けなければならないが、 # なければ仕方ないので> XFree86 -configure か> xf86configで # 新規に作成する ~/.xinitrcを全行コメントアウトし、 xterm & の1行だけ書いておく # 現在の~/.xinitrcを変名してバックアップし、xterm & と1行だけ書いた # ~/.xinitrcを新規作成してもよい 一応、~/.Xresourcesを変名しておく 上記をやっておけば、たいていの場合> startx できるはず 起動できたら、設定を少しづつ戻していく。 それでも起動できなければ、あとはひたすらログファイルを検証。 行き詰まったら、コンソール画面やログファイルに残ったエラーメッセージで Web検索してみるのも有効。 Xをi810系チップセットで使う http://www.jp.freebsd.org/QandA/HTML/2058.html XF86ConfigのDevice Sectionで、 Option "NoDDC" が必要になる。また、オンボードサウンドはAC97互換でドライバはIntel ICH。 Xの画面が変だ モニタの様子がおかしい場合は、XF86Configをバックアップしてから エディタで開き、解像度や色深度を低くしてみる XFree86-4.xでkinput2を使う場合 ~/.xinitrcで kinput2 & とした直後に sleep 10; などと書いておく。待ち時間は3くらいでもちゃんと起動する(環境によっては 設定しなくても問題ない)が、kinput2がコケると他のアプリが巻き添えをくうので、 安定作動するまでは10くらいでよいだろう。 XFree86からX.orgに乗り換えたい /etc/make.confにX_WINDOW_SYSTEM=xorgと書いて > pkg_delete -f /var/db/pkg/imake-4* /var/db/pkg/XFree86-* > cd /usr/ports/x11/xorg && make install > pkgdb -F だそうだ。新しいシステムだと/etc/make.confはいじらなくてもよいらしいが、 念のため上記のように書いておいて損はないはず。 KDEが終了できない まずはちょっと落ち着いて待ってみる アプリケーション(特に仮想コンソール)を全て終了してみる じっと待っても終了しなければ、もう一度終了ボタンを押す # 3.3以降では改善したっぽい。 KDE上でxim(Kinputなど)の動きがおかしい http://www.omronsoft.co.jp/SP/support/pcunix/wnn7/faq/xwnmo.html # 3.3以降では改善したっぽい。 QTのOn the spot は実装が不完全らしい。 諦めてOver the spot を使うなら、 > qtconfig Interface>XIM Input Styleと選んでOver the spot を選択 /usr/X11R6/lib/X11/app-defaults/Kinput2の最終行にある、 *OverTheSpotConversion.UseOverrideShellForMode: True という行のコメントアウトを解除する(なければ自分で書く) # ~/.Xresourcesに # Kinput2*OverTheSpotConversion.UseOverrideShellForMode: True # と書いても効果は同じ(多分)。 KDE上だとマルチメディア系のソフトウェアが立ち上がらない http://www.geocities.jp/lev_murakami/kde/ http://www-6.ibm.com/jp/developerworks/linux/010803/j_l-kdei.html # 筆者が使用した限り、3.2.3でこの症状が出たことはない artsdというデーモンがサウンドデバイスを開放してくれないのが原因らしい。 Kmenu>設定>コントロールセンター>サウンド & マルチメディアと選んで アイドル時の自動サスペンドの秒数を短く設定するか、デーモンそのものを止める。 もしくは> artsdsp 起動するソフトウェア -iatv として、artsdsp経由で起動。 # iatvオプションは必要ない場合もあるようだが不明 デバイスのエラーでマルチメディア系のソフトウェアが立ち上がらない http://www2h.biglobe.ne.jp/~hnakamur/technolab/linux/video/mplayer/mplayer.htm ビデオの設定で、xvではなくx11のドライバを使うようにする。 たとえば、mplayerだと下記のようなエラーメッセージが出る Error opening/initializing the selected video_out(-vo) device mplayerで~/.mplayer/subfont.ttfがないというエラーが出る http://d.hatena.ne.jp/kikuzou/20040430 適当なtruetypeフォントを~/.mplayer/subfont.ttfという名前でコピーしてやる。 KDEとBlackboxを併用 http://www.gnome.gr.jp/~ss/bb/ug/ > ./configure の引数に--enable-kdeを追加してコンパイルし、~/.xinitrcの最後を kfm & kpanel & exec blackbox とするとよいらしい。 KDEとKDE-liteの違い バージョン3.2.3では、liteだと以下のソフトウェアが入らない WordNet-2.0 aspell-0.50.5_2 autoconf-2.57_1 automake-1.7.5_1 db4-4.0.14_1,1 gettext-0.13.1_1 glib-2.4.0 gmake-3.80_2 gnupg-1.2.4_1 id3lib-3.8.3_1 imake-4.3.0_2 jasper-1.701.0 jpeg-6b_2 kdeedu-3.2.2 kdepim-3.2.2 kdesdk-3.2.2 kdevelop-3.0.3 koffice-1.3,1 m4-1.4_1 quanta-3.2.2,2 tcl-8.4.6,1 tk-8.4.6,1 ************************************************************ ********** 激しく危険なので           ********** ********** 転んでも泣かない人専用!       ********** ************************************************************ ファイルフラグを変更する http://x68000.q-e-d.net/~68user/unix/pickup?chflags http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=chflags&dir=jpman-5.2.0%2Fman§=0 パーミッションとは別に、ファイルへの操作を制限するフラグを設定することが できる(BSD系の独自機能なんだそうな)。 > chflags フラグ ファイル名 という書式で変更する。/binのログイン関係のファイルなど、消すとシステムが タダの箱になってしまうようなファイルにはデフォルトでschgフラグが立っている。 # ので、rootで> rm -r /* なんてやっても、シングルユーザーモードでは # 起動できる環境が残るかもしれない(あくまで想像)。 もちろん、rootユーザーならschgフラグをキャンセルしてファイルに変更を 加えることも可能だが、本当に危険な作業になるので極力避ける。 WindowsからUFS(FFS)パーティションをマウントする http://ffsdrv.sourceforge.net/ FFS File System Driver for Windows(ffsdrv)というソフトウェア(ドライバ) があり、これを使えばWindows(2000/XP/2003)から直接UFSパーティションに アクセスできる。どうやら「ディスク0、パーティション2、ディスクラベル5」が 「ad0s2e」に対応する模様。