по большому счету cобирать своё ядро особой необходимости нет. практически все можно загрузить модулем. если у вас не стоит задачи сражаться за каждый килобайт вам возможно всего этого и не надо. как правило на серверах из ядра выбрасывают все ненужное, что бы по максимум сэкономить память.
сборка ядра потребует от вас дополнительных знаний о версии системы, названии архитектуры, присутствующих в системе устройствах, что кстати можно посмотреть.
для начала магических действий нужно знать, что исходный код системы хранится в git. установите соответствующий пакет.
далее вот что. надо знать как обзываются ветки в git. релизы в названии имеют 2-3 цифры и так и называются например releng/12.2 . это выпуск системы версии 12.2 . кроме того существуют ветки с стайбл например stable/14 она одна на все выпуски 14.X или 14.X.X . в стейбл обычно вливаются хорошо проверенные изменения, так что минимум неожиданностей я предпочитаю пользоваться соответствующей веткой стайбл. есть еще ветка current - это основная разрабатываемая ветка. именно из этой ветки обкатаные решения переносятся в stable.
кстати на моём домашнем компьютере нет оптического диска лет 20. как я выкручиваюсь? довольно просто. я качаю установочный образ для флешки. записываю на флешку и загружаюсь с неё. таким же образом ставлю систему на сервера - очень удобно. но мы договорились больший акцент делать на десктоп.
вот вы поставились, предварительно настроились - фактически нужно настроить только интернет. установили гит. если у вас корень был в RO не забудьте его перемонтировать в RW до установки пакетов. дальше получаем исходный код системы и делаем это немного не по правилам:
> git clone -b stable/14 --depth 1 https://git.freebsd.org/src.git /usr/src
прикол в -b stable/14 --depth 1 ключ b задаёт конкретную ветку. --depth 1 ограничивает историю последним изменением. т.е. мы просто качаем значительно меньше.
после того как вы клонировали репозиторий долить в него последние изменения можно командой:stable
> cd /usr/src/ && git pull
теперь вам надо знать на какой аппаратной архитектуре вы работаете, что в общем-то уже должно быть известно - какой установочный образ вы скачали, а они разные для каждой архитектуры сейчас наиболее распространённая amd64 (ia64). видно в
FreeBSD uh1 14.2-STABLE FreeBSD 14.2-STABLE stable/14-859e098fd187 MY amd64
далее идем в директорию с конфигурационным файлом ядра и копируем конфиг стандартного яра в любое приятное вам название:
открываем конфиг в удобном вами текстовом редакторе.
приведите в порядок идентификатор ядра:
....
cpu HAMMER
ident MY
....
ну что вам может понадобится на десктопе? я обычно добавляю файрвол, с не давних пор нужен диверт: добавьте так что бы это выглядело логично и легко было найти, кроме того пригодится файловая система в адресном пространстве пользователя и символьные устройства там же:
......
options FUSEFS # File system in user space
......
# Make an SMP-capable kernel by default
options SMP # Symmetric MultiProcessor Kernel
......
# Firewall
options IPFIREWALL
options IPDIVERT
......
# Pseudo devices.
......
device cuse # Userland Character Device
......
а теперь в общем-то нужно выбросить все лишнее и чтобы нам за это ни чего не было. например можно выбросить все скази контроллеры - скорей всего у вас их нет, не забудьте оставить классы устройств:
....
# Floppy drives
#device fdc
# ATA controllers
device ahci # AHCI-compatible SATA controllers
device ata # Legacy ATA/SATA controllers
#device mvs # Marvell 88SX50XX/88SX60XX/88SX70XX/SoC SATA
#device siis # SiliconImage SiI3124/SiI3132/SiI3531 SATA
# SCSI Controllers
#device ahc # AHA2940 and onboard AIC7xxx devices
#device ahd # AHA39320/29320 and onboard AIC79xx devices
#device hptiop # Highpoint RocketRaid 3xxx series
#device isp # Qlogic family
#device ispfw # Firmware for QLogic HBAs- normally a module
#device mpt # LSI-Logic MPT-Fusion
#device mps # LSI-Logic MPT-Fusion 2
#device mpr # LSI-Logic MPT-Fusion 3
#device sym # NCR/Symbios Logic
#device isci # Intel C600 SAS controller
#device ocs_fc # Emulex FC adapters
#device pvscsi # VMware PVSCSI
# ATA/SCSI peripherals
device scbus # SCSI bus (required for ATA/SCSI)
#device ch # SCSI media changers
device da # Direct Access (disks)
#device sa # Sequential Access (tape etc)
#device cd # CD
device pass # Passthrough device (direct ATA/SCSI access)
#device ses # Enclosure Services (SES and SAF-TE)
#device ctl # CAM Target Layer
# RAID controllers interfaced to the SCSI subsystem
#device arcmsr # Areca SATA II RAID
#device ciss # Compaq Smart RAID 5*
#device ips # IBM (Adaptec) ServeRAID
#device smartpqi # Microsemi smartpqi driver
#device tws # LSI 3ware 9750 SATA+SAS 6Gb/s RAID controller
.....
так же поступаем со всеми неиспользуемыми устройствами. тут главное не закоментировать что-то лишнего: например без mii бесполезно оставлять драйвер re:
.....
device miibus # MII bus support
#device ae # Attansic/Atheros L2 FastEthernet
#device age # Attansic/Atheros L1 Gigabit Ethernet
#device alc # Atheros AR8131/AR8132 Ethernet
#device ale # Atheros AR8121/AR8113/AR8114 Ethernet
#device bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet
#device bfe # Broadcom BCM440x 10/100 Ethernet
#device bge # Broadcom BCM570xx Gigabit Ethernet
#device cas # Sun Cassini/Cassini+ and NS DP83065 Saturn
#device dc # DEC/Intel 21143 and various workalikes
#device et # Agere ET1310 10/100/Gigabit Ethernet
#device fxp # Intel EtherExpress PRO/100B (82557, 82558)
#device gem # Sun GEM/Sun ERI/Apple GMAC
#device jme # JMicron JMC250 Gigabit/JMC260 Fast Ethernet
#device lge # Level 1 LXT1001 gigabit Ethernet
#device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet
#device nfe # nVidia nForce MCP on-board Ethernet
#device nge # NatSemi DP83820 gigabit Ethernet
device re # RealTek 8139C+/8169/8169S/8110S
#device rl # RealTek 8129/8139
....
впрочем страшного ничего не случится. просто сборка остановится и система матюкнется на неизвестное определение.
кроме того возможно вам стоит избавиться от всей виртуализаци: имхо только тормозит. запускать другие ОС, используя вашу систему как хост, и наоборот ваша система как гость - функционал сомнительной востребованности.
запускаем сборку ядра
> cd /usr/src
> make -j5 buildkernel KERNCONF=MY
-j5 определяется количеством ядер CPU обычно n+1 и влияет только на скорость сборки - какое количество задач можно пускать одновременно. как ядро собралось, установите ядро командой (я предполагаю что вы еще в /usr/src)
> make installkernel KERNCONF=MY
при этом обращаю ваше внимание на installkernel это даст возможность выбрать старое ядро если что-то пойдет не так. делается это в минюшке загрузки. поэтому ставить ядро по ssh вообще говоря бед айдия, хотя я это делал не раз.
если нужно загрузить старое ядро перейдите в командный режим загрузчика и загрузите старое ядро из директории /boot/kernel.old/ чтение команд загрузчика оставлю на самостоятельное изучение/
конфиг моего ядра можно взять от сюда, но я не рекомендую его бездумно использовать.
вообще говоря если вы производите обновление системы то полезно собрать мир и использовать ещё etcupdate, смотрите документацию.