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

ねぎだこ
北千住マルイ は、他のマルイ (丸井) であればアクセサリーや婦人物の品物が揃う 1F にフードコートや食品系の店舗が並ぶ珍しい店舗です。7F に東急ハンズがあるため、たまに訪れた後に 1F で軽く食
オキハム コンビーフハッシュ 140g
銀座わしたショップ 2014/06/13 (コンビーフハッシュ) 以来 1 ヶ月ぶりに訪れる余裕がわずかに出来たので、もう沖縄ホーメルのコンビーフハッシュ (大 135g) が入荷しているだろうと期待
名物チャントン
ここ最近、銀座でランチする時に気になっているお店があります。いさば (日本一美味しいサバの塩焼き) はすでに定番ですが、銀座 いし井 (中華せいろ) との間に挟まれている 元祖 博多チャンポン ハカタ
ワイルドステーキ 300g (2)
銀座 4 丁目に一号店をオープンした いきなり ! ステーキ がオフィスのそばにも出店していると知って、早速訪れました。フードスタジアム — 新・外食ウォーズ — 【新・外食ウ
川平湾 (23)
石垣島 (No. 8 ? 川平湾 Part 2) の続きです。日陰で波とたわむれてまったりした後は、スタート地点から左側 (方位は北) を目指してゆっくり散歩を始めました。着いた直後に川平公園入口で
日替り (特大アジの開き)
3 週間程前にも いさば で 日本一美味しいサバの塩焼き をいただきましたが、今回は浜松から出張中の同僚がいたので、ここぞとばかりに連れていくことが出来ました。"そして日替り" は
本部港 (渡久地地区 1)
沖縄本島 (No. 7 – 宮良そば) の続きです。翌日 10/14 は朝からまた北部を目指しました。まだビーチで泳げるギリギリの季節でしたので、まだ未踏の水納島に行きたかったのです。同じ
きつねうどん (温, 中盛)
うどん 丸香 (改修工事) で久しぶりに訪れた日は、まだ試したことのない温かいきつねうどん (かけ) を試してみました。このどーんと大きなお揚げはうどんの量に関わらず豪快ですが、つゆ同様あっさりして優
Rack Sample 0
Drive Network で運用しているメールサーバ群を紹介します。メールアドレス数が数万規模では一般的な構成と推定しています。概要程度の説明しか記載出来ませんし、テキストアート ? ですがご勘弁く
どなん (1)
先日の出張 (05/27 ? 06/09) でついに初めて飲みました。飲みましたというより、なめました。景色 (久高島) でも触れましたが、与那国島好きな私としては一度は試してみたい泡盛でした。沖縄本
Valid HTML5 Valid CSS3 Another HTML Lint