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

海鮮サラダ
沖縄本島 (No. 43 – ステーキハウス四季) -> 沖縄本島 (No. 44 – タコス専門店メキシコ) とハシゴランチした後は、那覇に移動しました。久しぶりに国際
Dr. コトー診療所 (入口)
与那国島 (No. 6 – 久部良 ? 比川) の続きです。さて、診療所の正面に周ってようやくご対面です。ドラマで何度も見た光景。天気に恵まれて良かった♪ドラマでは海岸に打ち上げられていた
劇団セット 初夢 (本まぐろ 5 カンセット)
すし銚子丸 (紅白すし合戦 Part 1) の続きです。すでに 10 皿近くをクリアしたところで、まかじきが通りました。自宅 de 与那国産カジキ (Part 2) との区別はつきませんが、カジキと名
Logicool Ultrathin Touch Mouse T630 (5)
VAIO Fit 13A + Logicool Ultrathin Touch Mouse T630 (Part 1) の続きです。取扱説明書通り、Bluetooth 接続を済ませます。Logicoo
ミニストップ 沖縄フェア (7)
ミニストップ (沖縄フェア Part 1) の続きです。出社前にオフィスに近い神田美土代町店を訪れた後、お昼休みを利用して神田錦町 1 丁目店を訪れました。神田錦町 1 丁目店の方が、店内飲食スペース
伊江島 (6)
沖縄本島 (No. 4 – 瀬底大橋) の続きです。出発して 15 分弱で肉眼でもはっきりと伊江島が迫ってくるのが分かります。普通に写真を撮っている様に見えるかもしれませんが、風がものすご
県産まぐろのユッケ丼 卵のせ
石垣島 (No. 1 ? ユーグレナモール・ゆいロード) の続きです。ゆいロードを八重山郵便局方面にしばらく行くと、初めは雑貨屋さんかと思いましたが島ごはん まかない屋 に魅かれました。"栄
白米 (2)
長谷園 eco かまど (三合炊き – 白米二合) の続きです。次の日は白米一合を試してみました。180ml の米を研ぎ、水切り水 220ml で 20 分浸水中強火で 7 分炊く20 分
FreeBSD Logo
sshd や popd に対する brute force attack (総当たり攻撃) が原因で、サーバ側の負荷が急増し、ホームページ参照やメール受信に支障を来すケースが散見されています。sshd
radserv ope 04
これは、radserv X (T8100) のハードディスクの換装作業のショットです。納品時は 1TB x 2 でしたが、2TB x 2 に換装しています。では、手術風に。正中切開します。 
Valid HTML5 Valid CSS3 Another HTML Lint