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

あっちゃんの塩 80g
先日お友達から あっちゃんの塩 をいただきました。おそらく 沖縄本島 (No. 30 ? ハンバーグとパンケーキのお店 うるり) でも口にしたはずですが、塩そのものより他のメニューや素材の美味しさに目
牛すき鍋膳 肉二倍盛 (1)
吉野家 (ロース豚丼 十勝仕立て) や 吉野家 (牛カルビ丼) のために通い始めてから、牛すき鍋膳 も気になり始めています。販売開始から 4 ヶ月で 1,000 万食を突破したそうで、牛丼とはまるで別
純生讃岐うどん (9)
うどん本陣 山田家 (純生讃岐うどん Part 1) の続きです。1 回目初回は冷やかけうどんをイメージしたので、だしは先に用意して冷ましておきました。実はうどん用のどんぶりがないので、片手ハンドルの
FreeBSD Logo
POODLE (Padding Oracle On Downgraded Legacy Encryption) と呼ばれる攻撃方法を回避するために、SSL 3.0 の無効化が推奨されました。apach
Labeling Completed
サーバをラッキングした後、電源ケーブル, LAN ケーブルを配線した後に、L2 スイッチにはたくさんの LAN ケーブルが集合するため、一目見てどのサーバからのケーブルかが特定出来るためにラべリングし
ザ・プレミアム・モルツ (3)
ザ・プレミアム・モルツ <初摘みホップ> の売り切れ後、気が付くと ザ・プレミアム・モルツ <初仕込> が並んでいました。普段飲んでいる ザ・プレミアム・モルツ とデザインが似
久部良漁港から西崎灯台方面
与那国島 (No. 3 – 祖納 ? 久部良) の続きです。カレー屋ユキさんちを出て郵便局の前を過ぎると、すぐに久部良漁港が見えます。おぉ、漁労長の重さんや剛利さんがいそうです。ドラマで見
辛つけ麺 (大盛 500g)
東京オフィスから神保町方面に 4, 5 分靖国通り沿いを歩くと、つけ麺さとう があります。ランチ時に限りませんが、入口手前の慣れないと見落とすところにトッピング無料券があります。味玉温野菜ネギ中に入っ
タコライス 材料 (LAWRY'S タコミックス)
自宅 de タコライス (OLD EL PASO タコ・シーズニング Part 2) で、ようやく OLD EL PASO タコ・シーズニング + チェダーチーズ + Pace ピカンテソース の組み
辛つけ麺 (中) + 半熟玉子
三田製麺所 (つけ麺) で開店間もない御茶ノ水店を訪れて 1 週間も空けずに再び訪れました。辛つけ麺が気になっていたからです。つけ麺さとう (辛つけ麺)つけ麺屋やすべえ (辛味つけ麺)近場にすでにある
Valid HTML5 Valid CSS3 Another HTML Lint