У меня от Gentoo Linux привычка осталась компелить ядро на свой лад.
Приступим.
Информации взята из этой статьи, Удаленное обновление мира на FreeBSD.
для начало нам нужно по минимум с конфигурить файл настроек для компиляции пакетов
/etc/make.conf # Основная цель make.conf это контроль компиляции,
KERNCONF=MY # мое ядро #Опции компиляции ядра CPUTYPE?=core2 CFLAGS=-O2 -pipe COPTFLAGS=-O2 -pipe DOC_LANG=en_US.ISO8859-1 ru_RU.KOI8-R #Поддерживаемые кодировки для документации MAKE_IDEA=true #Алгоритм шифрования #Дома мне эта поддержка не нужна, в домашних условиях подымать сервер ldap :D , так что отказываемся MAKE_KERBEROS4=false MAKE_KERBEROS5=false NO_PROFILE=true # Обход построения библиотек для профилирования NO_CPU_CFLAGS=false # Говорим что флаги включать обязательно NO_CPU_COPTFLAGS=false FORCE_PKG_REGISTER=yes PERL_VERSION=5.10.1 OVERRIDE_LINUX_NONBASE_PORTS= f10 OVERRIDE_LINUX_BASE_PORT= f10 LINUX_DIST_SUFFIX= -f10 WRKDIRPREFIX=/mnt/x11/ # рабочая директория для компиляции портов. PACKAGES=/mnt/packages # Склад бинарных пакетов DISTDIR=/mnt/distfiles # Держим отдельно distfiles SUP_UPDATE= SUP= /usr/bin/csup SUPFLAGS= -g -L 2 -z SUPHOST= cvsup3.ru.FreeBSD.org SUPFILE= /etc/supfiles
Полный список параметров .
/etc/src.conf # опции компиляции программного обеспечения. NO_BIND=true NO_SENDMAIL=true NO_GAMES=true WITH_THREADS=true WITH_GECKO=xulrunner WITHOUT_IPV6=YES WITHOUT_GAMES=yes WITHOUT_BLUETOOTH=YES
Полный список параметров .
Теперь конфиг ядра, это конфиг от домашней машины.
cat /usr/src/sys/i386/conf/MY
machine i386 cpu I686_CPU ident MY maxusers 0 options SCHED_ULE # ULE scheduler options PREEMPTION # Enable kernel thread preemption options INET # InterNETworking options SCTP # Stream Control Transmission Protocol options FFS # Berkeley Fast Filesystem options SOFTUPDATES # Enable FFS soft updates support options UFS_ACL # Support for access control lists options UFS_DIRHASH # Improve performance on big directories options UFS_GJOURNAL # Enable gjournal-based UFS journaling options MSDOSFS # MSDOS Filesystem options CD9660 # ISO 9660 Filesystem options PROCFS # Process filesystem (requires PSEUDOFS) options PSEUDOFS # Pseudo-filesystem framework options GEOM_PART_GPT # GUID Partition Tables. options GEOM_LABEL # Provides labelization options COMPAT_43TTY # BSD 4.3 TTY compat [KEEP THIS!] options COMPAT_FREEBSD4 # Compatible with FreeBSD4 options COMPAT_FREEBSD5 # Compatible with FreeBSD5 options COMPAT_FREEBSD6 # Compatible with FreeBSD6 options STACK # stack(9) support options SYSVSHM # SYSV-style shared memory options SYSVMSG # SYSV-style message queues options SYSVSEM # SYSV-style semaphores options P1003_1B_SEMAPHORES # POSIX-style semaphores options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions options KBD_INSTALL_CDEV # install a CDEV entry in /dev options ADAPTIVE_GIANT # Giant mutex is adaptive. options STOP_NMI # Stop CPUS using NMI instead of IPI options AUDIT # Security event auditing options INCLUDE_CONFIG_FILE # Include this file in kernel # To make an SMP kernel, the next two lines are needed options SMP # Symmetric MultiProcessor Kernel device apic # I/O APIC # CPU frequency control device cpufreq # Bus support. device eisa device pci # Floppy drives device fdc # ATA and ATAPI devices device ata device atadisk # ATA disk drives device atapicd # ATAPI CDROM drives options ATA_STATIC_ID # Static device numbering # SCSI Controllers device ahb # EISA AHA1742 family device ahc # AHA2940 and onboard AIC7xxx devices options AHC_REG_PRETTY_PRINT # Print register bitfields in debug # output. Adds ~128k to driver. device ahd # AHA39320/29320 and onboard AIC79xx devices options AHD_REG_PRETTY_PRINT # Print register bitfields in debug # output. Adds ~215k to driver. # SCSI peripherals device scbus # SCSI bus (required for SCSI) device ch # SCSI media changers device da # Direct Access (disks) device cd # CD device pass # Passthrough device (direct SCSI access) # atkbdc0 controls both the keyboard and the PS/2 mouse device atkbdc # AT keyboard controller device atkbd # AT keyboard device kbdmux # keyboard multiplexer device vga # VGA video card driver device splash # Splash screen and screen saver support # syscons is the default console driver, resembling an SCO console device sc # Add suspend/resume support for the i8254. device pmtimer # Serial (COM) ports device sio # 8250, 16[45]50 based serial ports # Parallel port device ppc device ppbus # Parallel port bus (required) device ppi # Parallel port interface device # PCI Ethernet NICs that use the common MII bus controller code. # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs! device miibus # MII bus support device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet device re # RealTek 8139C+/8169/8169S/8110S # Pseudo devices. device loop # Network loopback device random # Entropy device device ether # Ethernet support device pty # Pseudo-ttys (telnet etc) device bpf # Berkeley packet filter # USB support device uhci # UHCI PCI->USB interface device ohci # OHCI PCI->USB interface device ehci # EHCI PCI->USB interface (USB 2.0) device usb # USB Bus (required) device ugen # Generic device uhid # "Human Interface Devices" device ukbd # Keyboard device ulpt # Printer device umass # Disks/Mass storage - Requires scbus and da device ums # Mouse # FireWire support device firewire # FireWire bus code device sbp # SCSI over FireWire (Requires scbus and da) #fireval options IPFIREWALL options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=100 options IPFIREWALL_FORWARD options IPDIVERT options DUMMYNET options IPFIREWALL_DEFAULT_TO_ACCEPT #samba support options NETSMB #SMB/CIFS requester options LIBMCHAIN #mbuf management library options LIBICONV options LIBICONV options SMBFS #color console options VGA_WIDTH90 options VESA options SC_PIXEL_MODE options SC_KERNEL_CONS_REV_ATTR="(FG_BLACK|BG_RED)" options SC_KERNEL_CONS_ATTR="(FG_LIGHTBLUE|BG_BLACK)" options SC_NORM_REV_ATTR="(FG_BLACK|BG_GREEN)" options SC_NORM_ATTR="(FG_LIGHTGREEN|BG_BLACK)" #Sound device sound device snd_hda #ntfs options LIBICONV options NTFS options NTFS_ICONV serv0#
Так, приступим к собранию мира и ядра и в дальнейшем утсвноки их.
cd /usr/src/ && rm -rf /usr/obj/ make -j6 buildworld # собраем мир не забываем перед этим обновить дерево портов. Как собиреться начинаем компилить ядро. make -j6 buildkernel KERNCONF=MY # Компелим ядро, как с компелиться ядро , устанавливаем его. make installkernel KERNCONF=MY # Ставим только не забываем , что при уставноки дяра не вкоемслучае нельзя указывать параметр -jn .
Дальше переходим в однопользовательский режим:
boot -s
Или
Или перегружаемся и при выборе параметров загруски системы выбираем 4-й пункт single user mode
Подмантируем FS
# mount -u / # mount -a -t ufs # swapon -a
mergemaster поможет нам в определении разницы между нашими конфигурационными файлами в каталоге /etc и конфигурационными файлами из дерева исходных текстов /usr/src/etc.
# mergemaster -p # Данная команда будет сравнивать только те файлы, которые необходимы для успешного выполнения целей buildworld или installworld, включая /etc/make.conf
Ставим мир
# cd /usr/src # make installworld
После утсвноки мира обновляем конфигурационные файлы
# mergemaster
Проверяем, что изменилось в системе. Команда сравнивает существующие файлы конфигурации с теми, которые нужно установить в новой версии системы. О всех различиях сообщается на экране. В начале сообщения указывается имя файла, в котором есть различия существующего файла от нового, а ниже собственно сами различия. «Минусом» помечаются строки, которые будут удалены, а «плюсом» – которые будут добавлены. Программа предлагает варианты действий со стороны пользователя:
* d – оставить существующий файл без изменений, а новый удалить * i – Ставим новый файл, переписав старый! * m – Сравниваем построчно новые файлы с существующими. * v – Смотрим различия в файлах еще раз.
Чаще всего нажимаем i, Осторожно, обращение этой опцией может обернуться тем, что мы потеряем конфигурационные файлы, а точнее в место своих конфигурационных файлов получим стандартные. Если не уверены в отношении какого-либо файла, нажимайте m и сравниваем. В этом режиме программа покажет нам построчно оба файла, слева показана версия старого файла, справа – новая версия файла. Нажатии на Enter, программа спросит о действии:
* l – Использовать вариант с левой стороны. * r – Использовать вариант с правой стороны.
После, программа закончит сравнение и она снова спросит:
* i – Установить получившийся файл. * r – Повтор сравнение снова. * v – Просмотр получившегося файла.
Внимание, также с новой версией ОС появляются новые файлы. В таком случае программа предлагает только два варианта:
* d – Удалить новый файл и оставить старый. * i – Установить новый файл, удалив старый.
Теперь удалим старые файлы.
cd /usr/src yes|make delete-old
Перезагружаемся
shutdown -r now
Заходим в готовую систему и удаляем старые бибилотеки .
cd /usr/src/ && make delete-old-lib
Вот и все! Следующим действием будет обновленияе пакетов с помощью portupgrade , но это другая история.
[…] в этой статье я не буду описывать, вот статья про то как пересобраять ядро в freebsd Дабавим поддержку к нашей […]
[…] после не забываем изменить руту пароль. Вот тут более подробно о пересборке мира и ядра. Удалим старые […]