Home » FreeBSD » FreeBSD カスタムカーネル 再構築と名称変更 (Tag: )

FreeBSD kernel compile でも紹介した通り、常に kernel 再構築によりカスタムカーネルで稼動させています。

私はカスタムカーネルの名称を `hostname -s` にする習慣があり、

# cat /etc/motd | head -1
FreeBSD 9.1-RELEASE (hs0) #0: Wed Oct 30 16:18:09 JST 2013

# sysctl kern.version
kern.version: FreeBSD 9.1-RELEASE #0: Wed Oct 30 16:18:09 JST 2013
    root@hs0.drive.ne.jp:/sys/amd64/compile/hs0

# cat /var/run/dmesg.boot | head -n 6
Copyright (c) 1992-2012 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 9.1-RELEASE #0: Wed Oct 30 16:18:09 JST 2013
    root@hs0.drive.ne.jp:/sys/amd64/compile/hs0 amd64

上記の例では hs0 ですが、数ヶ所に反映されます。

ホスト名を変更した場合、カスタムカーネルファイルをリネームした後通常通りに

# cd /sys/`uname -p`/conf/
# config `hostname -s`
# cd ../compile/`hostname -s`
# make cleandepend ; make depend ; make ; make install

で再構築すると 30 分程掛かります。機器構成が変わった訳でもなくこの時間と機器への負荷を掛けることに抵抗を感じていましたが、もう少し簡単に変更出来る方法が分かりました。

以下の例では hs0 -> hs1 と名称変更する場合を例とします。

# cd /sys/amd64/compile/
# mv hs0 hs1 ; cd hs1
# sed -i'.s' -e 's/hs0/hs1/g' vers.c
# find ./ -name ".depend" -exec sed -i'.s' -e 's/hs0/hs1/g' {} \;
# make

.depend をすべて書き換えないと、make の時点で必要なファイルがないとエラーが出て失敗します。

# make install
thiskernel=`sysctl -n kern.bootfile` ;  if [ ! "`dirname "$thiskernel"`" -ef /boot/kernel ] ; then  chflags -R noschg /boot/kernel ;  rm -rf /boot/kernel ;  else  if [ -d /boot/kernel.old ] ; then  chflags -R noschg /boot/kernel.old ;  rm -rf /boot/kernel.old ;  fi ;  mv /boot/kernel /boot/kernel.old ;  sysctl kern.bootfile=/boot/kernel.old/"`basename "$thiskernel"`" ;  fi
kern.bootfile: /boot/kernel/kernel -> /boot/kernel.old/kernel
mkdir -p /boot/kernel
install -p -m 555 -o root -g wheel kernel /boot/kernel
install -p -m 555 -o root -g wheel kernel.symbols /boot/kernel
cd ../../../modules; MAKEOBJDIRPREFIX=/usr/src/sys/amd64/compile/hs1/modules KMODDIR=/boot/kernel MACHINE_CPUARCH=amd64 DEBUG_FLAGS="-g" MACHINE=amd64 KERNBUILDDIR="/usr/src/sys/amd64/compile/hs1" SYSDIR="/usr/src/sys/amd64/compile/hs1/../../.." make  install

上記の様に続いて正常に終了する場合は、5 分程度で終了します。デバイス毎にコンパイルされる訳ではないので、負荷もほぼなく終了することを確認しました。

Random Select

デスクトップ (VAIO Type X)
去年までデータセンター作業用に使用していた VAIO Type X は、現在サブマシンとして継続利用しています。電源は On にしたままですが、ふと使用する際にディスプレイを開けると、デスクトップアイ
野菜炒め + タコハッシュ (5)
久しぶりに自分で作った野菜炒めが食べたくなり、ふとキッチンのストックを見ると、先日差し入れでいただいた 【オキハム】タコハッシュ (ロングタコス) 75g と目が合いました。コンビーフハッシュとの組み
瀬底大橋 (2)
沖縄本島 (No. 3 – 本部港 Part 2) の続きです。出発して 2 分程で、あっと言う間に瀬底大橋が迫って来ました。さらにまた 1 分程経過。渡ったことは 2, 3 度ありますが
トロピカルビーチ (4)
沖縄出張時の最近の定宿 ホテル ノア からは徒歩 10 分程度の距離ですので、土曜日に トロピカルビーチ にふらっと散歩に行きました。実はこのビーチには一度来たことがあります。初めての沖縄出張は確か
ESXi 5.1 Install - NG (Boot image is corrupted)
ある日、予備機に VMware ESXi 5.1.0 Update 1 をインストールしました。ISO イメージ自体が 300 MB 強でじわじわと時間が掛かりますが、これからまさにインストーラが起動
FreeBSD Logo
現在、基本環境ではやや古めの ports スケルトンを用いていますが、以下の様なエラーで削除が完了しない場合があります。# rm -r ports/override r-xr-xr-x root/w
黒島研究所 (2)
黒島 (No. 2 – 西表島・小浜島 〜 到着) の続きです。船を降りて外に周ると、黒島船客ターミナルと書かれていました。外に出る前にすでにレンタサイクルやお迎え等の島民が数名見えるのは
松藤 限定古酒 43 度 (3)
沖縄本島 (No. 6 – 打ち上げ) で衝撃を受けた 松藤【限定古酒】43 度 を、東京に戻ってからも飲んでみようと考えていたところ、今も同僚でもある打ち上げのメンバーからプレゼントして
Drive Network Philosophy
POP サーバプログラムもいくつか存在しますが、比較的マイナーなプログラムを使用しています。その名も popd と極めて汎用的な名称ですが /usr/ports/mail/popd/ に用意されていま
東綾瀬公園 (2)
今年は観測史上 2 番目に桜の開花が早いとのことでした。個人的には、ここ 1 年程は実際の気候とカレンダーが 1 ヶ月近くずれ続けている気がしています。それはともかく、自宅の近所には通路と公園を兼ねた
Valid HTML5 Valid CSS3 Another HTML Lint