Взял сегодня список добрых дел, читай todo-лист, в котором описано чего хочу сделать за год и увидел "Перейти на FreeBSD" и подзадачу "Научиться оптимизить, компилить, тестить и ставить новое ядро". Именно этим сегодня и занялся.
Итак, исходные данные:
Ну а дальше я скомпилировал и одноразово загрузился с этого ядра:
Вывод: Новое ядро след. раз буду компилировать только если захочу новую фичу и она не появится без добавления этой опции в конфиг ядро с последующей перекомпиляцией. Ну а так, чего-то пока смысла не увидел!
ЗЫ:
VMwar-ный файл жесткого диска, жутко разбух где-то около 3.12 ГБ и архивация по LZMA2 дает вместо прежних 333МБ уже 477MБ. Так что виртуалка в коллекции вм-образов будет больше места занимать, что совсем не радует!
Итак, исходные данные:
- VMWare workstation, созданная гостевуха на базе i386 архитектуры, с отключенным floppy, sound, COM1-портом;
- Установленная FreeBSD 8.2 i386 RELEASE, без иксов;
Читая Майкла Лукаса про "Absolute FreeBSD" 2nd edition понял, что мне куда ближе следующий путь компиляции ядра:
- Создание нового конфига ядра(# vi /sys/i386/conf/SYSDEVKERN );
- Включение GENERIC( include GENERIC);
- Дальнейшее отключение ненужных мне девайсов, процессоров и опций(nocpu, nodevice, nooptions);
Кто-то может возразить "Нафига так мудрить? Куда проще скопировать GENERIC в MYKERN и убрать оттуда не нужное". Но! У этого метода есть изъян:
В будущем GENERIC может включать в себя все более новые фичи. Вы будете вынуждены скопировать очередной раз и удалить не нужное повторно!В моем же случае, это не обязательно будет делать. То чего нет, не отключится! А то что нужно так и останется быть включеным! Даже то чего я еще не знаю. )))
Как видно я отрубил IPv6 и множество Wireless-устройств, RAID-контроллеров и USB-устройств, ну и исторические процы 486 и 586.
В результате родился такой вот конфиг:
include GENERIC
ident SYSDEVKERN
# VMware has Intel Core duo(I686_CPU class)
nocpu I486_CPU
nocpu I586_CPU
nooptions INET6
nodevice eisa
nodevice fdc
nodevice ataraid
nodevice atapifd
nodevice ahb
nodevice ahc
nodevice AHC_REG_PRETTY_PRINT
nodevice ahd
nodevice AHD_REG_PRETTY_PRINT
nodevice amd
nodevice hptiop
nodevice isp
nodevice ispfw
nodevice ncr
nodevice sym
nodevice trm
nodevice adv
nodevice adw
nodevice aha
nodevice aic
nodevice bt
nodevice ncv
nodevice nsp
nodevice stg
nodevice amr
nodevice arcmsr
nodevice asr
nodevice ciss
nodevice dpt
nodevice hptmv
nodevice hpttrr
nodevice iir
nodevice ips
nodevice mly
nodevice twy
nodevice aac
nodevice aacp
nodevice ida
nodevice mfi
nodevice mlx
nodevice pst
nodevice twe
nodevice de
nodevice igb
nodevice ixgb
nodevice le
nodevice ti
nodevice txp
nodevice vx
nodevice miibus
nodevice ae
nodevice age
nodevice alc
nodevice ale
nodevice bce
nodevice bfe
nodevice bge
nodevice dc
nodevice et
nodevice fxp
nodevice jme
nodevice lge
nodevice msk
nodevice nfe
nodevice nge
nodevice nve
nodevice pcn
nodevice re
nodevice rl
nodevice sf
nodevice sge
nodevice sis
nodevice sk
nodevice ste
nodevice stge
nodevice tl
nodevice tx
nodevice vge
nodevice vr
nodevice wb
nodevice xl
nodevice cs
nodevice ed
nodevice ex
nodevice ep
nodevice fe
nodevice ie
nodevice sn
nodevice xe
nodevice wlan
nooptions IEEE80211_DEBUG
nooptions IEEE80211_AMPDU_AGE
nooptions IEEE80211_SUPPORT_MESH
nodevice wlan_wep
nodevice wlan_ccmp
nodevice wlan_tkip
nodevice wlan_amrr
nodevice an
nodevice ath
nodevice ath_hal
nodevice AH_SUPPORT_AR5416
nodevice ath_rate_sample
nodevice ral
nodevice wi
nodevice wl
nodevice vlan
nodevice ukbd
nodevice ulpt
nodevice ums
nodevice urio
nodevice u3g
nodevice uark
nodevice ubsa
nodevice uftdi
nodevice uipaq
nodevice uplcom
nodevice uslcom
nodevice uvisor
nodevice uvscom
nodevice aue
nodevice axe
nodevice cdce
nodevice cue
nodevice kue
nodevice rue
nodevice udav
nodevice rum
nodevice uath
nodevice ural
nodevice zyd
options INCLUDE_CONFIG_FILE # Include this file in kernel
Ну а дальше я скомпилировал и одноразово загрузился с этого ядра:
# make KERNCONF=SYSDEVKERN INSTKERNNAME=kernel.sysdevПоследняя команда патчит настроечные файлы так, чтобы загрузиться с этого ядра только один раз! Думаю это весьма полезно при удаленной отладке ядра. Ну а когда загрузился с ядра, то убедившись в работоспособности удалил старое и переименовал это в новое:
# nextboot -k /boot/kernel.sysdev
# rm -rf /boot/kernelОпирался в основном на результаты:
# mv /boot/kernel.sysdev /boot/kernel
dmesg | grep -i <тут че-нить>Но как ни странно /sys/i386/conf/LINT мне ни в чем не помогло. Мне там нифига не понятно ))
pciconf -lv
atacontrol -list
kldstat -v
Вывод: Новое ядро след. раз буду компилировать только если захочу новую фичу и она не появится без добавления этой опции в конфиг ядро с последующей перекомпиляцией. Ну а так, чего-то пока смысла не увидел!
ЗЫ:
VMwar-ный файл жесткого диска, жутко разбух где-то около 3.12 ГБ и архивация по LZMA2 дает вместо прежних 333МБ уже 477MБ. Так что виртуалка в коллекции вм-образов будет больше места занимать, что совсем не радует!
Комментариев нет:
Отправить комментарий