ライン

ポイント:USBメモリーからFreeBSDを導入することができる

ライン

 はじめに

FreeBSDメモ

 1ページに満たないメモを書くページとしました。

 FreeBSDのメディアの作り方

ISOファイルの入手

 今回から、USBメモリよりの導入メディアも配布されています。
このページでは、CD-R/DVD-R/USBメモリースティックによるライティングについて記述します。

 FreeBSDの導入メディアは、雑誌などの付録、インターネットからの購入、ネットワークからのダウンロードなどの方法があります。
 今回は、ネットからダウンロードする部分を詳細にメモするページにしました。CD-Rなどに焼く(ライティング)するといっても、普通に焼いてもバックアップしただけの形になってしまいます。パソコンを起動した時に、CD-ROMなどから起動するメディアになっている必要があるのです。
 (ブータブルなメディアといういい方をしたりします)
 FreeBSDで配布しているファイルはISO形式(〜.iso となっているトラックイメージファイル)でその形になっています。
 (img形式とかトラックイメージとかいい方はページにより違います)
 ダウンロードは、普通にIE(インターネットエクスプローラ)などを使ってデスクトップなどに落としてくれば良いです。
普通の1ファイルとしてPCに一時置き場としてダウンロードすることが第1ステップです。
CD-Rなどに焼き込みを行う際には、ISOイメージであることを前提として焼く必要があります。前にも書きました通り、普通に焼いてはダメです。
 Windows 7なら、ISOイメージのライティングに対応していますが、Windows XPなどではお使いのライティングソフトにその機能があれば、それを。なければフリーウェアの導入などで対応しましょう。

 まず、ISOイメージの入手は、
< ftp://ftp2.jp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/8.0/ >
などからダウンロードできます。
 ftpの後に続く数字を変える(1-9)ことにより、ダウンロード元が異なります。
自分の加入しているISPと相性の良いサイトを指定することが必要です。(日本に限らず、世界中にダウンロードする元があります)
(わからなければ、ftp のみのサイトで受信することで問題はないでしょう)

ftp jpix.ad.jp
ftp1
ftp2 iij.ad.jp
ftp3 sakura.ad.jp
ftp4 mex.ad.jp
ftp5 uec.ac.jp
ftp6 jaist.ac.jp
ftp7 jpix.ad.jp
ftp8 sakura.ad.jp
ftp9 mex.ad.jp
[日本のミラーサイト] [ダウンロードイメージ]

●CD-R/DVD-Rに焼くための説明
 8.0-RELEASE-i386-disc1.iso をクリックし、ダウンロードすることにします。(CD-R用としての説明)
 フレッツ光で2分40秒ほどでダウンロードは完成しました。デスクトップ上にでも一時的に保存してください。
 DVDも同様ですが、ダウンロードするファイルは大きくなります。また、 8.0-RELEASE-i386-dvd1.iso.gz のように、.gzとgzipによる圧縮がされている状態のファイルのなので、ダウンロードに解凍する必要があります。DVD用のメディアは、多くのパッケージのバイナリも入っているので、便利です。高速回線を持っていて、DVD-Rのメディアの方を持っているという方はそちらを選択しましょう。
 なおgzで圧縮は、Lhaplusなどにより解凍してから利用することになります。単純にダウンロードしたファイルのダブルクリックで解凍されるだけなのでこの辺りはイメージなどは準備しません。
 ちなみに、Perlなどの一般的なパッケージ物は、CD版にも入っていますのでご安心を。

●USBメモリースティックの説明
 USBメモリーのWindowsでの作成方法を以下に書いてみました。
 ただし、USBメモリーからブートできるPCじゃないと動きませんし、PCによりブートシーケンスなどの指定により、USBメモリーを刺した状態で起動しただけでは起動して来ないかも知れません。頑張ってググってください。
 (DELLのPCとかだと[f12]キーでメニューを選択し、USB Flash Deviceなりの選択ができるメニューが表示されるので、カーソルを上下キーであわせエンターキーで押すことで起動することができるはずです。フロントのUSBに刺しても動かないなら、リア面(裏側)のUSBで試しましょう。)
 8.0-RELEASE-i386-memstick.img は、前著のUSBメモリーなど用途のものです。1GBに収まるように作られているようです。
ダウンロードは4分程度でした。FreeBSDから導入用のUSBメモリーの作り方はリリース文の中に見かけますので、見ている方も多いと思います(dd if=8.0-RELEASE-amd64-memstick.img of=/dev/daX bs=10240 conv=sync とやるとだけ書かれている)が、Windows系から作成する例を書いているはまだ少ないようです。

 実験マシンがUSBブートできない時代の古いものなので試す気にはなっていませんが、単純に "dd for windows" でつっこんであげるのが簡単そう。dd-0.5.zipをc:\temp などで解凍。
 USBメモリーが、ここでは[E]ドライブの例を書いてみます。

C:\temp>dd --list
rawwrite dd for windows version 0.5.
Written by John Newbigin <jn@it.swin.edu.au>
This program is covered by the GPL.  See copying.txt for details
Win32 Available Volume Information
\\.\Volume{3e0e07c4-bef7-11de-9a5a-806e6f6e6963}\
  link to \\?\Device\HarddiskVolume1
  fixed media
  Not mounted

\\.\Volume{3e0e07c5-bef7-11de-9a5a-806e6f6e6963}\
  link to \\?\Device\HarddiskVolume2
  fixed media
  Mounted on \\.\c:

\\.\Volume{3e0e07c6-bef7-11de-9a5a-806e6f6e6963}\
  link to \\?\Device\HarddiskVolume3
  fixed media
  Mounted on \\.\d:

\\.\Volume{3a01a2a3-dc7a-11de-871d-000a798afe80}\
  link to \\?\Device\HarddiskVolume4
  removeable media
  Mounted on \\.\e:

\\.\Volume{3e0e07ca-bef7-11de-9a5a-806e6f6e6963}\
  link to \\?\Device\Floppy0
  removeable media
  Mounted on \\.\a:

\\.\Volume{3e0e07c9-bef7-11de-9a5a-806e6f6e6963}\
  link to \\?\Device\CdRom0
  CD-ROM
  Mounted on \\.\w:


NT Block Device Objects
\\?\Device\CdRom0
  size is 2147483647 bytes
\\?\Device\Floppy0

Virtual input devices
 /dev/zero   (null data)
 /dev/random (pseudo-random data)
 -           (standard input)

Virtual output devices
 -           (standard output)

\\.\Volume{3a01a2a3-dc7a-11de-871d-000a798afe80}\
がEドライブに該当するとわかるので、

dd if=8.0-RELEASE-i386-memstick.img of=\\.\e: bs=10240 --progress

 のように指定することで可能になります。いっぱい文字を入力するよりも短くて済むので、上記のように \\.\e: のような方法でも問題ありません。
 秋葉原で買ってきたpqiの4GBのUSBメモリー(税込:960円)で実行してみました。約3分程度での実施終わりました。
 日本語で書かれたDD for Windowsというのも同時に試してみました。MD5のチェックもできるし、GUIかつ日本語なので便利です。
フリーで利用できてしまいますので、どちらか好きな方を使ってみてください。導入作業は不要で、バイナリの実行のみです・
 Windows 7だと管理者として実行にすることが必要なので忘れずに。これに関するページは、2つ以上の説明ページが見つけることができるので、本ページの中でのメモは省略。
 キャプチャーだけ出すと、

 という感じでした。どっちでも動作することは確認できていますので、お好きな方でどうぞ〜。

 電源を起動して、ちゃんと導入画面になったでしょうか。導入が終わったらそのメディアを保管する必要がなければ、元通りに戻せば他に使うことができます。CD-RやDVD-Rのようにはならないのでいい感じですね。ISOイメージのDVDの焼き方も気にせずで済んでしまいますし。

 USBメモリーがFreeBSD用になっているのを普通のUSBメモリーに戻す方法についても少し書いておきます。Windows のマイコンピュータ(Windows 7なら「コンピュータ」を右クリック、管理→記憶域→ディスクの管理 で該当するディスクのドライブをクリック。右クリックでボリュームの削除。これを実施することで復活します。
 その際に、思っているのと異なるサイズでの表示がされているかと思いますが気にせずに作業してください。間違えてハードディスクを消してしまわないように細心の注意が必要です。間違えても責任は持てませんので自己責任の中で実施してください。レジストリいじる並に確認して実施しないと失うものが大きいですから。
 ボリュームの削除後は、当初のサイズを表示できたと思います。クイックフォーマットをして使えるメディアに戻しましょう。
うまくいったでしょうか。

●メディアの焼き方(ライティング)の前準備
 さて、DVDメディア版をダウンロードした例で書いておきます。
ダウンロードは、フレッツ光で7分30秒ほど。解凍はLhaplusで行いましたので、ダブルクリックで終わり。

解凍を実施します。

 これでISOファイルが整いました。

-Rメディアに焼く

 メディアにライティングすることにします。
現在使っているWIndowsがWindows 7でしたら、そのままクリックで書き込みすることができてしまいます。
それ以外のWindows OSでしたら、フリーの「DVD Decrypter」を導入し、書き込めば完了します。
 この手のソフトの使い方は、他のホームページを参照いただき、ここでは割愛します。

 メディアが作成されました。後は導入するだけ。
導入に関するページは、本ホームページにもありますが、わかりやすく書かれたページも多くありますので、ご参照ください。

 シングルユーザモードに落ちた障害(小さなメモ)

The following disk sectors could not be dead

 昨日まで普通に動作していたのに、いきなり今日になってマシンが落ちてしまいあがってこない。
コンソール上は、シングルユーザモードになって止まっています。

# fsck -f -y

 ダメセクターがあるといってきていて、/usr のfsckを何度もリランさせられるが、復旧せず。

ad4: FAILURE - READ_DMA status=51<READY,DSC,ERROR> error=40<UNCORRECTABLE> LBA=56934863
g_vfs_done():ad4s1f[READ(offset=20618444800, length=16384)]error = 5

 こんなのがいくつも並びだした。
 まだ取得していない変更ファイルなどがあるのに。
 とりあえず、USBメモリーに必要なものがバックアップしたいな、と思う。

mount -u -o rw /
mount -f -o ro /usr
/usr was not properly dismounted
mount /var
mount /tmp

これでなんとか見えた。USBメモリーを刺して設定ファイルをコピーしておこう。

# mount -t msdosfs /dev/da0s1 /mnt
# cp -pr (必要なファイルのあるフォルダ) /mnt 

 なんとか、これでハードディスク更新しても現状の設定をキープできそう。
でも、この状態だと次回起動時にまたダメになってしまうので、

# cd /etc
# cp -p fstab fstab.20101024
# vi fstab
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad4s1b             none            swap    sw              0       0
/dev/ad4s1a             /               ufs     rw              1       1
/dev/ad4s1e             /tmp            ufs     rw              2       2
/dev/ad4s1f             /usr            ufs                  ro 0       0
/dev/ad4s1d             /var            ufs     rw              2       2
/dev/acd0               /cdrom          cd9660  ro,noauto       0       0

という小手先な変更を実施。これでrebootしてマルチユーザモードであがってきたことを確認。

 もう設定変更を /usr/local/etc 以下には入れられないけど、他に必要なバックアップもできそうです。
ディスクはいつ平気で故障するかわからないので、バックアップは重要と思います。

 sshやsftpをrootで接続したい(小さなメモ)

使うときにだけ変更

 通常、FreeBSDではrootによるリモート接続はデフォルト offになっているのでエラーになります。
バックアップなどで手軽に、Windows環境でsftpで一挙にバックアップしたいときなどに、便利です。
/etc/ssh/sshd_configで

PermitRootLogin yes

のように指定し、sshdの再起動で利用できます。 

# /etc/rc.d/sshd restart

作業が終了したら、設定を戻して、sshdを再起動します。

 メールサーバの移転後に残ったMBOXファイルを送付

事後処理

 メールサーバを他に移転していったはずなのに、未受信のMBOX形式のファイルが残っていました。
一応届けておくことに。
 ウェブ検索して、以下で実施。

# cat ACCOUNT_ID | formail -A "Precedence: bulk"  -s /usr/sbin/sendmail -f エラー時に戻る際のアドレス 転送先のアドレス

というのを採用。

 ソースを展開

csup

 現在のページ上には記述が少ないけれど、cvsupではなくcsupで更新する方法のメモを取り直し。

# cp /usr/share/examples/cvsup/stable-supfile /usr/local/etc/stable-supfile

として設定ファイルのサンプルを取得。

/usr/local/etc/stable-supfile を編集。

# $FreeBSD: releng/9.0/share/examples/cvsup/stable-supfile 219858 2011-03-22 04:31:35Z glebius $
#
#       cvsup -g -L 2 stable-supfile
#
*default host=cvsup.jp.FreeBSD.org
*default base=/var/db
*default prefix=/usr
# The following line is for 8-stable.  If you want 7-stable, 6-stable,
# 5-stable, 4-stable, 3-stable, or 2.2-stable, change to "RELENG_7",
# "RELENG_6", "RELENG_5", "RELENG_4", "RELENG_3", or "RELENG_2_2"
# respectively.
*default release=cvs tag=RELENG_9_0
*default delete use-rel-suffix

# If you seem to be limited by CPU rather than network or disk bandwidth, try
# commenting out the following line.  (Normally, today's CPUs are fast enough
# that you want to run compression.)
*default compress

## Main Source Tree.
#
# The easiest way to get the main source tree is to use the "src-all"
# mega-collection.  It includes all of the individual "src-*" collections.
# Please note:  If you want to track -STABLE, leave this uncommented.
src-all

こんな感じにする。FreeBSD 9のソースを追っかけた例なのでタグは必要なものに変更する。

 実行するには、

# csup -g -L 2 /usr/local/etc/stable-supfile &

とかやっておけば完了する。

 その他

CDやDVDのマウント

 FreeBSDは Linuxの多くのディストリビューションのように、気の利いたことはやってくれない。
メモをいろいろと。

# mount -t cd9660 /dev/cd0 /mnt
# umount /mnt

などでCD等をマウントする。

9.1→9.2へのアップグレード

 バグがあったはずだけど、とりあえずいつも通りに更新。

# freebsd-update -r 9.2-RELEASE upgrade

で開始します。以下のようなメッセージが来ますが、yにしかならないので、先に進めます。

Looking up update.FreeBSD.org mirrors... 5 mirrors found.
Fetching metadata signature for 9.1-RELEASE from update5.freebsd.org... done.
Fetching metadata index... done.
Fetching 1 metadata files... done.
Inspecting system... done.

The following components of FreeBSD seem to be installed:
kernel/generic src/src world/base world/lib32

The following components of FreeBSD do not seem to be installed:
world/doc world/games

Does this look reasonable (y/n)?y
..
To install the downloaded upgrades, run "/usr/sbin/freebsd-update install".
# freebsd-update install
Installing updates...
Kernel updates have been installed.  Please reboot and run
"/usr/sbin/freebsd-update install" again to finish installing updates.
# shutdown -r now

上記の流れにより、リブート後に再度同じコマンドの投入を要求されます。

# freebsd-update install
Installing updates...
Installing updates... done.
# shutdown -r now

これで完了です。
起動は問題なかったですが、sshdが起動してくれなくなりました。
VMware上で動作させているので、ログインはして状況は見れますが、これはこれで面倒です。
確認してみたところ、ssl関連のconfに修正漏れがあり、これが影響していた模様。これを修正することであがってきました。
configの修正部分は注意しないと無駄に時間がかかります。

# cp -pr /etc /etc-backupYYYYMMDD

などを入れることを忘れずにしておくことが必要だったのを忘れていました。

 ESXiのゲストの死活監視と自動再起動のメモ

ゲストのFreeBSDがセグメントフォルトしてしまった時

 ESXiのゲストOSで動作していたFreeBSDが以下のようにパニックしてしまうと、自動再起動されないのでこのままになってしまいました。
(見ての通りで)9日前にも発生していて、外出時に停止時間が長いのには問題がありました。

 他の環境で動作しているFreeBSDのマシンから親のESXiの疎通があるのに、ゲストOSの疎通がない場合に、強制で落としてあげるスクリプトを回して対応する暫定対処を行うことにしました。

#!/bin/sh
MAILTO=foo@example.org
SUBJECT="HOST.example.com is DOWN!!"
/sbin/ping -W 1 -q -c 1 (ESXi自身のIPアドレス) > /dev/null
if [ $? -eq 0 ]
    then
        /sbin/ping -W 1 -q -c 1 (ゲストOSのIPアドレス) > /dev/null
        if [ $? -eq 0 ]
                then
                        exit 0
                else
                        /usr/bin/logger -p local0.notice -t ALERT "HOST.example.com is DOWN!!"
                        echo "HOST.example.com is DOWN!!" |/usr/bin/mail -s $SUBJECT $MAILTO
                        /bin/sh /usr/local/bin/reboot-esxi-guest-freebsd.sh
        fi
else
        exit 0
fi
exit 0

こんな感じで、10分おきなど死活監視(ユーザのcrontab -e)をしておいて、条件にマッチする状態になったところでメール通知とリブート用のスクリプトが動作します。

作成している小さなスクリプトは、

#!/bin/sh

/usr/bin/ssh -l (ESXiのログインユーザ) (ESXi自身のIPアドレス) 'vim-cmd vmsvc/power.off 3'
sleep 60
/usr/bin/ssh -l (ESXiのログインユーザ) (ESXi自身のIPアドレス) 'vim-cmd vmsvc/power.on 3'
/usr/bin/logger -p local0.notice -t INFO "HOST.example.com START!!"

みたいな感じです。
動作させているマシンがloggerだけでは /var/log/messagesに出力されなかったため、local0.noticeを指定していますが、通常指定しないで大丈夫です。local0.noticeなどを指定した場合には、/etc/syslog.confに出力されるように編集と有効化が必要になります。

crontab -eで記載しているのは、

*/45 * * * * /bin/sh /usr/local/bin/check-esxi-guest-freebsd.sh 1> /dev/null 2>&1 /dev/null

のような記述です。
スクリプトは、実行権をつけないで置いているので、スクリプトではshで動作させています。
※45分毎にしているのは、おかしな状態で終了したために、上がってくるまでの時間が20分以上必要なことが分かっていますので、これぐらいの時間毎実施にしています。

ESXi側のアカウントは、sshログインできるように作成することと、監視している側のユーザの公開鍵認証で入れるように事前準備をしておく前提になります。

 FreeBSDのIDパスワードを他のFreeBSDに設定する

単純に、/etc/groupの差分コピー等

 FreeBSDマシンを他のマシンでも利用させたい場合で、LDAPなどの機構を準備するまでもなかったりする場合にいつもこんな感じで移行しています。

まず/etc/groupですが、双方で

# sort -k 3,3 -n -t ":" /etc/group|grep -v "^#"

のように実行して、差分で必要な内容を加えています。

 パスワードですが、vipwで一括更新させたいため、元ホストで vipwで表示されたユーザを全選択コピーして、移行先ホストで仮ファイル、password.tmpにコピペします。
 コマンドは上記に同様ですが、パッケージの有無などで差はあるとは思いますが、ユーザのUIDの範囲はルールを持って付けているかと思うので、その部分を抜き出します。
 移行側ホストでvipwで起動されたエディタ上で、その抜き出した物を付け加えます。

 これで、新しい側のホストでもこれまでのパスワードでログイン等ができるようになりました。
ホームディレクトリなどは元ホストより必要に応じ、tar.gzなどで固め持ち込みして展開すれば大丈夫です。
UIDもGIDもそのままなので、すぐに利用できます。
※ちなみに、ミスをしてrootを削除してしまったことがあり、シングルユーザモードから復活をさせたことがあります。
 チェックはちゃんとしないと怖いです

 シングルユーザモードの入り方

FreeBSD 9.3

 OSが起動する際に以下のような画面になります。ここで10秒間のカウントが開始しますので、ここで「2」を入れます。

 /bin/sh な表示になったら、エンターしてコマンド入力できるモードになります。

# mount -u /

 と入力し、作業を行います。終わったら、

# exit

 で通常にマルチユーザで立ち上がり、状態を確認して完了です。

【改訂履歴】作成:2009/11/29 更新:2014/12/31
【参考リンク】



Copyright © 1996,1997-2006,2007- by F.Kimura,