Freebsd збірка власного ядра, rtfm linux, devops і системне адміністрування

Для початку, треба переконатися, що є вихідні коди системи:

Каталог порожній - значить, треба їх отримати. Варіанта два - або за допомогою sysinstall. якщо є диск з такою ж версією FreeBSD і ви біля сервера, або за допомогою cvsup з будь-якого сервера FreeBSD. Ми будемо качати.

Насамперед - треба знайти найшвидший сервер. Як це зробити - описано тут >>>.

Знаходимо найзручніший сервер cvsup:

# Fastest_cvsup -c ua -Q
cvsup5.ua.freebsd.org

Створимо каталог для supfile -ів:

Створимо сам supfile:

Впишемо такий вміст:

* Default host = cvsup5.ua.FreeBSD.org
* Default base = / var / db
* Default prefix = / usr
* Default release = cvs tag = RELENG_8_2
* Default delete use-rel-suffix
* Default compress
src-sys

У рядку default host вказуємо сервер, який будемо використовувати.

ВАЖЛИВО. в рядку default release потрібно вказати вашу поточну версію FreeBSD. наприклад:

Теги svn для конкретної версії можна подивитися тут >>>.

Інші варіанти supfile

Для поновлення портів:

* Default host = cvsup5.ua.FreeBSD.org
* Default base = / var / db
* Default prefix = / usr
* Default release = cvs tag =.
* Default delete use-rel-suffix
* Default compress
ports-all

Для завантаження всіх вихідних кодів системи (буде потрібно при оновленні версії FreeBSD з вихідного коду):

* Default host = cvsup5.ua.FreeBSD.org
* Default base = / var / db
* Default prefix = / usr
* Default release = cvs tag = RELENG_8_2
* Default delete use-rel-suffix
* Default compress
src-all

ВАЖЛИВО. якщо це перший раз, коли ви завантажуєте вихідні коди для ядра (src-sys), то спочатку треба завантажити ВСІ файли (src-all).

Тепер запустимо завантаження файлів:

# Csup -g -L 2 / etc / csup / src-sys
Parsing supfile "/ etc / csup / src-sys"
Connecting to cvsup5.ua.FreeBSD.org
Connected to 109.106.1.244
...

Shutting down connection to server
Finished successfully

Перевіримо наявність файлів:

# Cd / usr / src / sys /
# ls
Makefile compat geom libkern netinet6 nfs4client pci tools
amd64 conf gnu modules netipsec nfsclient powerpc ufs
arm contrib i386 net netipx nfsserver rpc vm
boot ddb i4b net80211 netnatm nlm security x86
bsm dev ia64 netatalk netncp opencrypto sparc64 xdr
cam fs isa netgraph netsmb pc98 sun4v
cddl gdb kern netinet nfs pccard sys

Все, вихідні коди завантажені, можна приступати до конфігурації власного ядра.

Переходимо в каталог / usr / src / sys / i386 / conf /.

ВАЖЛИВО - каталог залежить від архітектури вашої системи. Для i386 (або x32) це буде каталог / usr / src / sys / i386 / conf /. Якщо х64 - то / usr / src / sys / amd64 / conf /.

Створимо копію конфігурації дефолтного (GENERIC) ядра, і назвемо його нашим ім'ям - з цього файлу конфігурації і буде збиратися наше ядро:

# Cp GENERIC COREIKARI1

ВАЖЛИВО. встановіть в рядку:

ім'я вашого ядра.

Інші параметри - за бажанням, але будьте обережні.

Наприклад, треба тільки додати підтримку IPFW. для цього будуть додані рядки:

options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT = 50
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_FORWARD
options IPFIREWALL_NAT
options LIBALIAS
options DUMMYNET

Зберігаємо файл, переходимо в каталог / usr / src і починаємо збірку ядра:

# Cd / usr / src
# Make buildkernel KERNCONF = COREIKARI1

Можливі помилки при складанні ядра

Якщо у вас на початку збірки помилки такого плану:

/ Usr / src / sys / i386 / conf / yourkern: unknown option "STOP_NMI"

можливо завантажені вихідні коди не вашою версією ОС, перевірте рядок default release = cvs tag = RELENG_8_2 в файлі / etc / csup / src-sys (або / etc / csup / src-all якщо качали все).

Якщо помилка такого плану:

# Make buildkernel KERNCONF = yourkern
make: do not know how to make buildkernel.Stop

переконайтеся, що команда builtkernel запускається з каталогу / usr / src. Якщо так, перевірте вміст каталогу / usr / src - чи присутній в ньому файл Makefile.

Якщо немає - можливо не завантажені ВСЕ вихідні коди - виконайте спочатку:

# Csup -g -L 2 / etc / csup / src-all

або встановіть за допомогою sysinstall. при наявності диска і доступу до сервера, або з FTP-сервера FreeBSD:

Configure> Distributions> Src>

Base, Sys> Ok> Ok> Select Internet> FTP Main (або CD / DVD)

і запустіть установку.

Чекаємо закінчення складання нового ядра. Нарешті, отримуємо повідомлення:

Тепер пора встановити нове ядро:

# Make installkernel KERNCONF = COREIKARI1
---------------------
>>> Installing kernel
...
kldxref / boot / kernel

Тепер можна перезавантажувати сервер. Дуже бажано, щоб до нього вже був підключений IPKVM. якщо ви далеко.

Після перезавантаження перевіримо:

Ось воно, нове ядро: COREIKARI1 i386.

Якщо завантаження нового ядра невдала - можна завантажити старе (GENERIC) ядро. Для цього, в меню завантаження вибираємо Boot to loader promt (6). Потрапляємо в командний рядок, і вивантажуємо нове ядро:

Тепер завантажимо наше старе ядро:

OK load /boot/kernel.old/kernel

Чекаємо, поки ядро ​​завантажиться в пам'ять, і вводимо:

Freebsd збірка власного ядра, rtfm linux, devops і системне адміністрування

Почався процес завантаження системи зі старим ядром.

Ядро GENERIC i386 - наше старе ядро.

Тепер, що б повернути завантаження з цим ядром постійно, виконуємо:

Про всяк випадок - зберігаємо наше "невдале" ядро:

# Mv kernel kernel.bak

Повернемо на місце копію старого ядра GENERIC:

# Mv kernel.old kernel

Все, тепер система буде завантажуватися тільки з ним, поки не розберемося в чому помилка в новому ядрі.

Схожі статті