Збірка ядра і можливі проблеми при складанні
Збірка ядра і можливі проблеми при складанні.
А навіщо взагалі потрібно збирати власне ядро? Зі стандартним ядром - GENERIC працює більшість залізяк, все програми. Але - в GENERIC немає підтримки файрволла, воно неоптимізованими для Ваших потреб. Та й залозок зайвих там занадто багато, навіщо вам секція стосується SCSI контролерів якщо у Вас їх немає? А майже два десятка моделей мережевих плат, коли у на серваке коштують лише дві-три, та ще й однієї моделі? Купа різних процесорів - від i386 до P-IV і AMD K7 - реально щось варто тільки один проц. Ще ядро треба збирати заново при виявленні нових вразливостей. Відбувається це не так часто, але помиляються всі. В тому числі і ті, хто роблять FreeBSD.
Так, звичайно, не виключена можливість, що згорить мама і доведеться хард переставляти на іншу машину - тоді будуть проблеми - якщо стара машина була P-III і з ядра були викинуті всі інші процесори, то на іншій мамі - наприклад під K7 фря може навіть неможливо завантажитися, не кажучи вже про нормальну роботу. Та й якщо виникне необхідність замінити, наприклад мережевої, на іншу модель - доведеться збирати заново ядро. Але - ядро на сучасних машинах збирати заново хвилин 5, максимум 7. Та й надбавка до швидкодії машини варто того, щоб один раз задурити і оптимізувати ядро.
Отже. Для пересборки ядра у Вас повинні бути встановлені його вихідні тексти. перевіряємо:
Якщо спостерігаємо таку картину, то все є. Якщо в папці / usr / src нічого немає - треба їх доставити з інсталяційного диска. Робимо це таким чином:
Тепер, коли вихідні кодя ядра встановлені, приступаємо з правці файлу конфігурації ядра.
Якщо у Вашої машини конфігурація i386 - а це 80386, 80486, 80586 (перші пні), P-II, P-III, P-IV, AMD K5, AMD K6, AMD K6-II, AMD K6-III, AMD K7 ( Duron, Athlon, Sempron) то робите те ж що і я. Якщо архітектура відрізняється - тоді в директорії / usr / src / sys / шукаєте архітектуру, яка у Вас і робите там схожі дії :) Архітектуру можна подивитися, після завантаження таким чином:
Детальніше про архітектури можна дізнатися на www.freebsd.org або в файлі /etc/defaults/make.conf. До нього, до речі, ми ще повернемося. Напевно, виникло питання, навіщо я так викривлено копіював файл GENERIC - щоб не забути дату коли я його робив. Ось мій файл конфігурації ядра:
Після закінчення інсталяції заглянемо в /
Ядро стало менше майже втричі. Перезавантажуємося командою shutdown -r now. і перевіряємо чи все працює нормально. У мене все чудово підчепити не рахуючи лайки окремих додатків на зниклий протокол IPv6 - на цю тему треба копати їх конфіги, або просто забити (але це невірний метод!).
Тепер розглянемо варіант, що у вас щось неполучілось. У простих випадках, наприклад, не працює мережа - треба просто змінити конфіг і пересобрать ядро. Для цього можна і локально попрацювати недовго :) В більш складному варіанті - фря не вантажиться взагалі - таке цілком можливо, якщо Ви на гарячу руку ампутували щось потрібне - наприклад подержку SCSI-контролера на якому висять гвинти, або взагалі ампутували файлову систему з ядра :) Буває і таке. Теж не треба втрачати голову, проблема вирішується порівняно просто - треба завантажитися зі старим ядром і заново пересобрать нове. На момент завантаження, коли йде 10-секундний зворотний відлік часу (у мене, до речі, 2-х секундний :)) треба зробити те, що він просить - натиснути будь-яку клавищи, крім [Enter], я, наприклад, тисну 'Esc' :
Як підсумок ми отримуємо запрошення завантажувача. Раджу ознайомиться зі списком команд - їх зовсім мало, і часу це трохи займе. Тепер, вивантажуємо нове ядро з пам'яті, завантажуємо туди GENERIC (або Ваше старе ядро, якщо на машині якийсь нестандартний набір заліза), і завантажуємо ОС:
Після завантаження збираємо нове ядро і знову пробуємо.
порстроіл 2 сервака спасибі lissyarе тільки прикрутив IPFW і все шляхом бігає тепер вночі сплю спокійно
#options ATA_STATIC_ID #Static device numbering
nbsp nbsp nbsp nbsp nbsp # статична нумерація пристроїв
nbsp nbsp nbsp nbsp nbsp # (я все думав, що вона завжди
nbsp nbsp nbsp nbsp nbsp # статична)
не зовсім так. наприклад є 2 гвинта, 1-й підключений на першому контролері майстром, 2-й на другий контролер майстром.
відповідно перший бедет ad0xx. а другий ad2xx.
вчора ось натрапив на такі граблі, воно мені зробило по-порядку, стало ad0xx, ad1xx
і чомусь гвинт. який став замість ad2xx -> ad1xx, неможливо було ні пріментіровать, ні fsck пройтися. додав ту галку в ядрі, пересобран, стало все ок.
Извеняюсь за ламерскій питання. Як подивитися яка мережева карта встановлена в системі або який вона відповідає в конфіги ядра.
При завантаженні проскакувала якась PCI Net, але в файлі такої карти не було тому я закоментіл все мережевої. Після всіх маніпуляцій ця карта пропала, і мережа перестала працювати. Перекручується під VMWare з 6.2.
ну взагалі мона глянути ifconfig
на вмваре у мну lnc0
а ще dmesg багато чого інетерсного виводить;)
У FreeBSD 6.x треба ще
device random # Entropy device
залишити, тому що не буде працювати ssh
prng is not seeded
> Тільки що зіткнувся з трабблой - пересобран ядро - а він> лається. Старе не завантажується. Виявилося що в fstab> написано / dev / ad4s1b а після перекомпіляції> стало / dev / ad0s1b
> #options ATA_STATIC_ID #Static device numbering
> nbsp nbsp nbsp nbsp nbsp # статична нумерація пристроїв
> nbsp nbsp nbsp nbsp nbsp # (я все думав, що вона завжди
> nbsp nbsp nbsp nbsp nbsp # статична)
Призвело до описаної помилку
Починаючи від
# PCI Ethernet NICs.
до
# Pseudo devices - the number indicates how many units.
Не у всіх же Aironet WiFi карти. ;)
device psm0 at atkbdc? irq 12 nbsp nbsp # PS / 2 миша
Краще включити і додати
options SC_TWOBUTTON_MOUSE
Тоді мишка в консолі може виділяти, копіювати і вставляти текст.
У статті чомусь не вказано, як збирати ядро, якщо встановлені вихідні не всієї системи, а тільки ядра.
cd / usr / src / sys / i386 / conf
1.
Запустіть config (8) для того, щоб згенерувати вихідні тексти ядра.
Перейдіть в каталог, в якому буде збиратися ядро. Запущений як показано вище config (8) виведе ім'я цього каталогу.
Для FreeBSD версій раніших, ніж 5.0, замість цього використовуйте:
# Make depend
# make
Встановіть нове ядро.
# Make install
Взято з хендбука, але зараз вони це звідти з незрозумілих причин прибрали, хоча актуально. Ну не хочеться мені трафік витрачати і з інету викачувати всі вихідні, та й п'яту точку від стільця відривати, щоб з диском до серверної дійти ламає.
Все зробив як написано в статті, але після складання:
# Cd / boot
# Ls -l | grep kern
drwxr-xr-x 2 root wheel 9728 Jul 26 16:57 kernel
drwxr-xr-x 2 root wheel 9728 Jul 26 15:54 kernel.GENERIC
drwxr-xr-x 2 root wheel 9728 Jul 26 12:32 kernel.old
Чомусь менше не стало.
Менше стало в 2 рази
> Я не побачив рядки в розділі
> #Pseudo devices
> Device random
Процедуру описано для 4.х гілки
Рандома з'явилися пізніше
Для 6-ий гілки подивитися б якісь фічі. Третій день вже конфиг пишу, детальніше почитати хотілося б про деякі опції, та й може побачив би нове щось, що в GENERIC немає за замовчуванням. ) Може хто поділитися ссилочку?
Респект і уважуха :)))))
Молоток лісяра ти крутий чувак, побільше б таких сайтів і життя початківця адміна була б легше.
Я тільки приєднуюсь до лав free і мені сайт дуже допомагає.
Супер тільки що зібрав ядро.
Дерзай далі лісяра
Переустнавлівал систему віддалено, по SSH.
Перед тим як піти в перевантажити, треба додати в налаштування firewall-а дозвільно правило дя себе, ну а я тільки вчуся, тому для початку для 6.2 в rc.conf зробив його відкритим.
це якщо ядро збирати заново з підтримкою фаєри ..
ще варто звернути увагу на / etc / fstab
зокрема, якщо система після установки отдетектіла гвинти як / dev / ad4 s. то після пересборки ймовірно вони вже будуть як / dev / ad0 s.
У 7ю гілку
options nbsp TCP_DROP_SYNFIN nbsp
вже вбудована за замовчуванням.
#device atapifd # ATAPI floppy drives
nbsp nbsp nbsp nbsp nbsp # флопповоди підключаються до ATA
nbsp nbsp nbsp nbsp nbsp # контролера (перший раз про таких
nbsp nbsp nbsp nbsp nbsp # дізнався саме з конфіга ядра)
Це магнітооптика - всякі там ZIP-и і т.д. Стикався з такими і заводив їх на фр (Кажим саме на четвірці).
Хтось про мережевої в VMWare српшівал - у фр 7.0 (може і в 6.3) lnc вже немає. Її замінила le.
> Ядро на сучасних машинах збирати заново хвилин 5, максимум 7
на пне4 1,5 ГГц компілювати ядро generic без редагування в рази довше зазначеного.
в хандбуке написано "Якщо ви хочете оновити ядро швидше або побудувати тільки певні модулі, то вам потрібно відредагувати файл /etc/make.conf перед початком процесу складання ядра".
очевидно тут копати треба.
хто з гуру пояснить новачкові під фр потолковее.
# Full version is /usr/share/examples/etc/make.conf
#
#
CFLAGS = -O2 -pipe
#
# MODULES_WITH_WORLD = yes
CPUTYPE? = I686
# COMPAT4X = yes
#
# Для заборони збірки деяких частин базової системи:
NO_ATM = true # do not build ATM related programs and libraries
NO_BIND = true # не збирається BIND
# NO_BLUETOOTH = true # do not build Bluetooth related stuff
NO_FORTRAN = true # не збирається g77 і відповідні бібліотеки
NO_GAMES = true # do not build games (games / subdir)
NO_I4B = true # не збирається пакет isdn4bsd
NO_INET6 = true # do not build IPv6 related programs and libraries
NO_IPFILTER = true # do not build IP Filter package
NO_LPR = true # не збирається lpr і відповідні програми
NO_NIS = true # do not build NIS support and related programs
NO_OPENSSL = true # do not build OpenSSL (implies NO_KERBEROS / NO_OPENSSH)
# NO_PF = true # do not build PF firewall package
# NO_PROFILE = true # Чи не компілювати бібліотеки для профайлера
NO_RCMDS = true # do not build or install BSD r * commands (rsh, etc).
NO_SENDMAIL = true # do not build sendmail and related programs
NO_UUCP = true # не збирається uucp і подібні програми
# Use OPENSSL from port, not from base
WITH_OPENSSL_PORT = yes
# Set wget instead of fetch
FETCH_CMD = / usr / local / bin / wget -c --tries = 3 --timeout = 60
# FETCH_CMD = / usr / bin / fetch -a
DISABLE_SIZE = yes
У мене собстевнно проблема чому валіЦо ця error
Помагите хто знає! freebcd 7.0
Stop in / usr / src.
*** Error code 1
Додам корисну примочку для установки ядра (для менших проблем з роботою на віддалених серверах)
make installkernel KERNCONF = test INSTKERNNAME = kernel.test
nextboot -k /boot/kernel.test
для того щоб ядро поставити в /boot/kernel.test/ а не перезаписувати робоче.
cd / usr / src / sys / amd64 / conf /
cp GENERIC ROUTER
ee ROUTER
ok
cd / usr / src /
pwd
/ Usr / src
ok
make buldkernel KERNCONF = ROUTER
make: do not know how to make buldkernel. Stop