Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Лёгкий переход на бесплатные UNIX


Информационный Канал Subscribe.Ru

ProUNIX.h12.Ru
ProUNIX.lrn.Ru

"Портал документации UNIX-систем"
Информационный портал по установке, настройке и использованию UNIX
Множество статей, электронных книг и online помощь MAN.

Здравствуй, уважаемый подписчик!

Это пятый выпуск рассылки Лёгкий переход на бесплатные UNIX . Я надеюсь, эта рассылка поможет Вам в освоении и первом знакомстве с ОСями семейства UNIX.

В этом выпуске рассылки я постараюсь рассказать о перекомпиляции ядра, т.е. о создании ядра именно под свою машину.

Для компиляции собственного ядра прежде всего необходимы исходники этого самого ядра. Чтобы проверить установлены у Вас исходники или нет посмотрите директорию /usr/src/sys. Если она пустая - запустите sysinstall и в меню добавления пакетов выберите исходные тексты. Посе того как исходники установлены, переходим в директорию /usr/src/sys/i386/conf. Здесь должны лежать 2 файла: GENERIC и LINT. Это два файла конфигурации ядра. Первый представляет конфигурацию умолчального ядра, ну а второй максимального (в него включено всё, что только можно включить). Для своего ядра потребуется свой конфигурационный файл. Если у Вас нет экзотического железа, перекомпиляция ядра сведется к удалению из него всего лишнего, для этого надо скопировать файл GENERIC:

cp GENERIC MyKernel
Откроем этот файл текстовым редактором:
vi MyKernel
И можно переходить к удалению всего лишнего.

Чтобы разобраться, что является обязательным, а что -нет, смотрите пример файла с комментариями:

#Группа опций описания архитектуры и процессора.
# Архитектура, обязательно
machine  i386

# Тип процессора, одна из опций обязательна.
cpu  I486_CPU
cpu  I586_CPU
cpu  I686_CPU

# Идентификатор ядра, произволен, но обязателен
ident  GENERIC

#To statically compile in device wiring instead of /boot/device.hints
#hints  "GENERIC.hints"  #Default places to look for devices.

# Сборка ядра с отладочной информацией.
#makeoptions DEBUG=-g

#Важные общие опции

options  SCHED_4BSD  #4BSD scheduler
options  INET   #Поддержка протокола IPv4
options  INET   #Поддержка протокола IPv6
options  FFS  #Поддержка файловой системы FFS (обязательна)
options  SOFTUPDATES #Поддержка механизма Soft Updates
options  UFS_ACL  #Поддержка ACL (access control lists)
options  UFS_DIRHASH #Improve performance on big directories
options  MD_ROOT  #MD (memory disk) как возможное загрузочное
     #устройство
options  NFSCLIENT  #Поддержка файловой системы NFS
     #(клиент)
options  NFSSERVER #Серверная сторона NFS
options  NFS_ROOT #Загрузка с NFS (по сети)
options  MSDOSFS #Поддержка файловой системы MSDOS (доступна в виде
     #модуля, так что не обязательна)
options  CD9660  #Поддержка файловой системы ISO 9660
options  PROCFS  #Поддержка файловой системы процессов procfs
     #(ныне обязательной не считается,
     #требует опции PSEUDOFS)
options  PSEUDOFS  #Поддержка псевдофайловых систем
     #(требуется для linprocfs)
options  COMPAT_43  #Совместимость с BSD 4.3 (обязательно)
options  COMPAT_FREEBSD4 #Совместимость с FreeBSD4
options  SCSI_DELAY=15000 #Пауза (в ms) перед пробой SCSI-устройств
options  KTRACE  #Поддержка ktrace (трассировка процессов ядра)

#Групп опций поддержки особенностей SysV.
#Желательна при использовании оконной системы X.

options  SYSVSHM   #разделяемая память в стиле SYSV
options  SYSVMSG   #Сообщения в стиле SYSV
options  SYSVSEM   #Семафоры в стиле SYSV

#Группа опционального микста

options  _KPOSIX_PRIORITY_SCHEDULING #для совместимости с
   # системами реального времени Posix P1003_1B
options  KBD_INSTALL_CDEV # установка CDEV в каталог /dev
options  AHC_REG_PRETTY_PRINT # Print register bitfields in debug
     # output.  Adds ~128k to driver.
options  AHD_REG_PRETTY_PRINT # Print register bitfields in debug
     # output.  Adds ~215k to driver.

#Группа опций, связанных с отладкой.

#options  DDB   #Enable the kernel debugger
#options  INVARIANTS #Enable calls of extra sanity checking
options  INVARIANT_SUPPORT 
#Extra sanity checks of internal structures, required by INVARIANTS
#options  WITNESS  #Enable checks to detect deadlocks and cycles
#options  WITNESS_SKIPSPIN
#Don't run witness on spinlocks for speed

#Группа опций, связанных с поддержкой многопроцессорности.

# To make an SMP kernel, the next two are needed
#options  SMP   # Symmetric MultiProcessor Kernel
#options  APIC_IO  # Symmetric (APIC) I/O

Множество опций поддержка всяких устройств. Большинство - очень важные.

Поддержка всяких шин.

device  isa  #ISA - обязательно, даже если таковой нет.
device  eisa  #EISA - не актуально
device  pci  #PCI - практически обязательна.

Поддержка флоппи-приводов. Актуальность утрачивает.

device  fdc

Поддержка устройств ATA

device  ata # ATA-устройства вообще. Практически обязательно.
device  atadisk # ATA-диски. Обязательна.
device  atapicd # ATAPI CDROM. Обязательна.
device  atapifd # Накопители типа Zip и LS-120 на IDE.
device  atapist # ATAPI-стриммеры
options  ATA_STATIC_ID # Статическая нумерация дисков.

#Поддержка SCSI-контроллеров.

# SCSI Controllers

Поддержка SCSI-RAID. Аналогично сказанному выше.

# RAID controllers interfaced to the SCSI subsystem

#Поддержка SCSI-устройств.

# SCSI peripherals
device  scbu  # Общая поддержка SCSI-интерфейса
     # (практически необходима)
device  ch  # SCSI media changers
device  da  # Устройства прямого доступа (сиречь диски);
     # Необходимо для USB-драйвов и т.д.
device  sa  # Устройства последовательного доступа
     # (типа стриммеров); вряд ли актуально
device  cd  # CD. Требуется, если использовать cdrtools
device  pass  # Прямой доступ к SCSI, необходимо для того же,
     # что и da
device  ses  # SCSI Environmental Services (and SAF-TE)


# RAID controllers


#Здесь начинаются опции, имеющие отношение к поддержке консоли.

#Группа опций поддержки клавиатуры и мыши. 

device  atkbdc # контроллер AT-клавиатуры
device  atkbd # сама AT-клавиатура
device  psm  # мышь PS/2 (при USB-мыши не нужна)

#Поддержка экранной части консоли.

device  vga  # Стандартный VGA-адаптер.
     # Необходимо при любой карте.
device  splash # Поддержка скринсейвера.


#Консольный драйвер по умолчанию.

device  sc  #syscons (необходимо).

#device  vt  #Драйвер pcvt
#options  XSERVER  # support for X server on a vt console
#options  FAT_CURSOR # start with block cursor
device  agp  # поддержка AGP (практически необходима)

#Поддержка сопроцессора - необходима в любом случае.

device  npx

#Поддержка управления питанием.

#device  apm
device  pmtimer

#Поддержка PCMCIA - у кого есть, сам разберется.

device  cbb  # cardbus (yenta) bridge
#device  pcic # ExCA ISA and PCI bridges
device  pccard # PC Card (16-bit) bus
device  cardbus # CardBus (32-bit) bus

#Поддержка COM-портов (необходима при использовании модема).

device  sio  # 8250, 16[45]50 базовая поддержка COM-портов


#Поддержка параллельного порта и устройств на нем.

device  ppc
device  ppbus # Parallel port bus (required)
device  lpt  # Printer
device  plip # TCP/IP over parallel
device  ppi  # Parallel port interface device
#device  vpo  # Накопители на параллельном порту,
     # требуется scbus и da

#Тут идет перечень сетевых карт

device  miibus# Требуется для любого сетевого соединения
    # (хоть через COM-порт)
device  ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards
     
#Псевдоустройства - большинство необходимы.

device  random # Генератор случайных чисел (?)
device  loop  # Network loopback
device  ether # Ethernet support
device  sl # Поддержка SLIP (вряд ли понадобится)
device  ppp # Поддержка PPP (необходимо для DialUp).
device  tun # Packet tunnel.
device  pty # Pseudo-ttys (необходимо для telnet и
    # эмуляторов терминалов в Иксах)
device  md # Memory "disks" - необходимо для RAM-дисков,
    # использования mfs, монтирования iso-образов
device  gif # IPv6 and IPv4 tunneling (не нужно)
device  faith # IPv6-to-IPv4 relaying (translation - не нужно)

#Берклианская пакетная фильтрация.

device  bpf  # Berkeley packet filter

#Поддержка USB.

device  uhci  # UHCI PCI->USB interface
device  ohci  # OHCI PCI->USB interface

#несколько общих опций.

device  usb  # Поддержка USB-шины
#device  udbp  # USB Double Bulk Pipe devices
device  ugen  # Generic
device  uhid  # "Human Interface Devices" - необходимо для
     # мышей, клавиатур и т.д.

#Поддержка конкретных устройств

device  ukbd  # Клавиатура
device  ulpt  # Принтеры
device  umass # USB-накопители (флэш-драйвы
     # Требуют поддержки SCSI - scbus and da
device  ums  # Мыши
device  urio  # Mpeg-плеер Diamond Rio 500
device  uscanner # Сканеры


#Сетевые USB-соединения, требуется mii.

device  aue  # ADMtek USB ethernet
device  axe  # ASIX Electronics USB ethernet
device  cue  # CATC USB ethernet
device  kue  # Kawasaki LSI USB ethernet

Поддержка устройств FireWire.

device  firewire # FireWire bus code
device  sbp  # SCSI over FireWire (Requires scbus and da)
device  fwe  # Ethernet over FireWire (non-standard!)

Отредактировав файл, можно переходить собственно к компиляции ядра. Введем команду:

config MyKernel
Эта команда создаст необходимые для компиляции файлы, а если в файле конфигурации была ошибка, то она сообщит, где её искать. Если ошибок не было и все прошло нормально, переходим в каталог /usr/src/sys/compile/MyKernel и набераем команды:
 
make depend 
make all   
Процесс компиляции может занять немного времени (порядка 10-20 минут). Когда компиляция закончится, ядро надо будет установить:
make install
В результате этой команды старое ядро будет переименовано в kernel.old, а новое станет kernel и займёт своё место в корневом каталоге.

Теперь можно перезагружаться и смотреть на новое ядро. Можете заметить, что машина грузится быстрее, а памяти занято поменьше, что особенно видно на старых машинах. Ну а если ядро вдруг оказалось неработоспособным, всегда можно загрузить старое, указав загрузчику в качестве параметра: kernel.old .

Ну вот и всё - новое ядро готово. Желаю удачи в создании компактного ядра.

Полезные ссылки:

Раздел freeBSD на сайте Prounix - здесь можно прочитать общую документацию по установке, настройке и использованию FreeBSD, а также найти авторские статьи.
Российский сайт FreeBSD - русское зеркало сайта системы.

Copyright © ProUNIX.h12.Ru


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.othos.unix
Отписаться

В избранное