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

東急ハンズ 宜野湾コンベンションシティ店
沖縄で多店舗展開しているサンエーの新店が 宜野湾コンベンションシティ で、7/5 にオープンします。# "サンエーはイトーヨーカドーみたいな感じ" と言うと、ないちゃーは大抵理解し
エチオピア 本店 1F 入口
ここ最近はすっかり豆カレーがお気に入りで、辛さ 40 – 50 倍も試しています。三鷹の森ジブリ美術館 (Part 1) は祭日に行きましたが、その前にわざわざエチオピアに行ってしまう程。
海鮮天丼 (3)
ここ最近の出張では必ず訪れるランチスポットの 1 つが 海鮮食堂 太陽 (ティーダ) です。片手で収まらない程来ているのに、今だ "エビだけ天丼" しか食べたことがないことにふと気
桜香るあんぱん (3)
久しぶりに ローソン (朝ごパンセット) を買い求めて訪れると、そろそろ桜が咲く時期を想い出させてくれる 桜香るあんぱん が目に入りました。プライベートブランドのパンは、実は製造元が敷島製パンだったり
Lavender
現在の東京オフィスでは、健康診断が毎年 2 月にあります。おそらく今年初めてだったとは思いますが眼底検査というものを行い、緑内障の疑いがあると診断されました。ショックでした。腰痛に歯痛、今度は眼ですか
ESXi 5.1 Install (5)
VMware ESXi 5.1 Install (Boot image is corrupted) では予期しないエラーに出くわし、インストールがどの程度時間を要するか把握出来なかったので、別環境にイ
沖縄ちゃんぽん
すばや (ゆし豆腐そば) の時は、沖縄ちゃんぽんのつもりで訪れましたが、偶然にもお店の都合により中止していました。今回はリベンジです。入口に三線が飾ってあることに気が付きました。夜の居酒屋タイムの時は
ルフージュ (5)
久しぶりに 沖縄本島 (No. 47 – ジャッキー ステーキハウス) でステーキを堪能して昼寝した後は、ある facebook グループのメンバーとの飲み会に向けて安里に向かいました。私
My DeskTop (Side)
linux-firefox 19 で起動せず轟沈しましたが、ふといくつかアプローチを思いついて再起動をしました。操作している機器は My DeskTop のデスクトップ (M/B ASUS P8P67
アジフライ定食 (ライス 大)
柏や (豚肉生姜焼定食) の続きです。今日はアジフライ定食と決めていました。到着した時間がお昼真っ只中 12:30 頃だったので、さすがに座れないかなと思いきや、昨日の様にほぼ満席でありながらも座れま
Valid HTML5 Valid CSS3 Another HTML Lint