Ядро операционной системы

Программа ufsboot, которая была описана в предыдущем разделе, загружает ядро операционной системы. Специфичное для данной компьютерной платформы ядро операционной системы, используемое программой ufsboot, называется /platform/' uname -m ' / kernel/unix.

Ядро операционной системы инициализирует само себя и начинает загружать модули, используя программу ufsboot для чтения файлов. После того, как ядро операционной системы загрузило достаточное количество модулей для монтирования корневой файловой системы, оно лишает управления программу ufsboot и продолжает работу, используя собственные ресурсы. Ядро создает пользовательский процесс и запускает процесс /sbin/ init, который, в свою очередь, запускает другие процессы путем считывания файла /etc/ inittab.

Ядро операционной системы Solaris 8 является динамически конфигурируемым. Оно состоит из небольшого статического ядра и множества динамически загружаемых модулей. Модуль ядра - это аппаратный или программный компонент, который используется для выполнения какой-нибудь конкретной задачи в данной системе. Типичным примером загружаемого модуля ядра служит драйвер устройства, который загружается, когда данное устройство становится доступным. Драйверы, файловые системы, модули STREAMS и другие модули загружаются автоматически по мере того, как в них возникает необходимость, либо в процессе запуска системы, либо во время выполнения. После того, как модули перестают использоваться, они могут быть выгружены из памяти. Модули сохраняются в памяти до тех пор, пока эта память не потребуется для других целей. Информацию о модулях, которые в настоящее время загружены в память системы, можно получить с помощью команды modinfo.

Когда ядро операционной системы загружается, оно считывает файл /etc/system, в котором сохраняется информация по системной конфигурации. Этот файл модифицирует параметры ядра и обращение с загружаемыми модулями. В частности, этот файл управляет следующими аспектами:

- Маршрутом поиска модулей, подлежащих загрузке по умолчанию в процессе загрузки системы, а также модулей, которые не будут загружены в процессе загрузки системы

- Модулями, которые будут принудительно загружены во время загрузки системы,

а не при первом обращении к ним

- Типом и именем корневого устройства

- Новыми значениями, предназначенными по умолчанию для переопределения параметров ядра операционной системы Ниже приведен пример взятого по умолчанию файла /etc/system:

*ident "0()system 1.18 97/06/27 SMI" /* SVR4 1.5 */

*

* SYSTEM SPECIFICATION FILE

*

* moddir:

*

*Set the search path for modules. This has a format similar to the *csh path variable. If the module isn't found in the first directory

*it tries the second and so on. The default is /kernel /usr/kernel *

¦Example:

*moddir: /kernel /usr/kernel /other/modules

root device and root filesystem configuration:

The following may be used to override the defaults provided by the boot program:

rootfs: Set the filesystem type of the root.

rootdev: Set the root device. This should be a fully

expanded physical pathname. The default is the physical pathname of the device where the boot program resides. The physical pathname is highly platform and configuration dependent.

Example:

rootfs:ufs

rootdev:/sbus01,f8000000/esp@ 0,800000/sd@ 3,0:a

(Swap device configuration should be specified in /etc/vfstab.) exclude:

Modules appearing in the moddir path which are NOT to be loaded, even if referenced. Note that "exclude' accepts either a module name, or a filename which includes the directory.

Examples:

exclude: win exclude: sys/shmsys

forceload:

Cause these modules to be loaded at boot time, (just before mounting the root filesystem) rather than at first reference. Note that forceload expects a filename which includes the directory. Also note that loading a module does not necessarily imply that it will be installed.

Example:

forceload: drv/foo

set:

Set an integer variable in the kernel or a module to a new value. This facility should be used with caution. See system(4).

Examples:

To set variables in 'unix'

* set nautopush=32

* set maxusers=40

*

*To set a variable named ' debug1 i,n the module named ' test module'

* set test module:debug = 0x13

Файл /etc/systein содержит команды в следующей форме:

set parameter=value

... V.

Команды могут быть длиной не более 80 символов, а строки комментариев должны начинаться с символа "звездочка" (*) и заканчиваться символом newline (новой строки).

Например, установка параметра ядра операционной системы MAXUSERS выполняется в файле /etc/system с помощью следующей строки:

set maxusers = 40

Команды, которые воздействуют на загружаемые модули, имеют следующую форму:

set module:variable=value

Если системному администратору необходимо изменить какой-нибудь настраиваемый параметр в файле /etc/system, то для проверки правильности внесенных изменений может использоваться команда sysdef. Команда sysdef выводит на экран список все аппаратных и системных устройств, загружаемых модулей, а также значения выбранных настраиваемых

параметров ядра операционной системы. Ниже приведен вывод, созданный командой sysdef:

*

* Hostid

*

80а26382 *

sun4m Configuration *

*

* Devices

*

packages (driver not attached)

terminal-emulator (driver not attached) deblocker (driver not attached) obp-tftp (driver not attached) disk-label (driver not attached) SUNW,builtin-drivers (driver not attached) sun-keyboard (driver not attached) ufs-file-system (driver not attached) chosen (driver not attached) openprom (driver not attached)

client-services (driver not attached) options, instance #0 aliases (driver not attached)

memory (driver not attached) virtual-memory (driver not attached) pci, instance #0

pci, instance #0

ebus, instance #0

auxio (driver not attached) power, instance #0 SUNW,pll (driver not attached) se, instance #0 su, instance #0 su, instance #1 ecpp (driver not attached) fdthree, instance #0 eeprom (driver not attached) flashprom (driver not attached) SUNW,CS4231 (driver not attached) network, instance #0 SUNW,m64B, instance #0 ide, instance #0

disk (driver not attached) cdrom (driver not attached) dad, instance #0 sd, instance #0 pci, instance #1

pci (driver not attached)

pcil08e,1000 (driver not attached) SUNW,qfe (driver not attached) pcil08e,1000 (driver not attached) SUNW,qfe (driver not attached) pcil08e,1000 (driver not attached) SUNW, qfe (driver not attached) pcil08e,1000 (driver not attached) SUNW,qfe (driver not attached) SUNW,uitraSPARC-IIi (driver not attached) pseudo, instance #0

clone, instance #0 ip, instance #0 ip6, instance #0 tcp, instance #0 tcp6, instance #0 udp, instance #0 udp6, instance #0

•«Truncated output> *

* Loadable Objects?

* Loadable Object Path = /platform/SUNW,Ultra-5_10/kernel

*

misc/platmod

misc/sparcv9/platmod *

* Loadable Object Path = /platform/sun4u/kernel

*

dacf/sparcv9/consconfig_dacf

drv/db21554

drv/dma

drv/ebus

drv/fd

drv/ledma

drv/pci_pci

drv/pcipsy

maximum memory allowed in buffer cache (bufhwm)

maximum number of processes (v.v_proc)

maximum global priority in sys class (MAXCLSYSPRI)

maximum processes per user id (v.v_maxup)

auto update time limit in seconds (NAUTOUP)

page stealing low water mark (GPGSLO)

fsflush run rate (FSFLUSHR)

minimum resident memory for avoiding deadlock (MINARMEM) minimum swapable memory for avoiding deadlock (MINASMEM)

drv/power

*

* System Configuration

*

swap files

swapfile dev swaplo blocks free

/dev/dsk/cOtOdOsl 136,1 16 1048928 976384 *

* Tunable Parameters

*

2482176

1898 99

1893 30 25 5

25 25

*

* Utsname Tunables

*

5.8 release (REL) unknown node name (NODE) SunOS system name (SYS)

Generic_108528-07 version (VER) *

* Process Resource Limit Tunables (Current:Maximum)

*

Infinity:Infinity cpu time

Infinity:Infinity file size Infinity:Infinity heap size 0x0000000000800000:Infinity stack size

Infinity:Infinity core file size 0x0000000000000100:0x0000000000000400 file descriptors Infinity:Infinity mapped memory

*

* Streams Tunables

*

9 maximum number of pushes allowed (NSTRPUSH) 65536 maximum stream message size (STRMSGSZ) 1024 max size of ctl part of message (STRCTLSZ)

*

* IPC Messages module is not loaded

* IPC Semaphores

*

10 semaphore identifiers (SEMMNI) 60 semaphores in system (SEMMNS) 30 undo structures in system (SEMMNU) 25 max semaphores per id (SEMMSL) 10 max operations per semop call (SEMOPM) 10 max undo entries per process (SEMUME) 32767 semaphore maximum value (SEMVMX) 16384 adjust on exit max value (SEMAEM)

*

* IPC Shared Memory

*

1048576 max shared memory segment size (SHMMAX) 1 min shared memory segment size (SHMMIN) 100 shared memory identifiers (SHMMNI)

6 max attached shm segments per process (SHMSEG)

*

* Time Sharing Scheduler Tunables

*

60 maximum time sharing user priority (TSMAXUPRI)

SYS system class name (SYS_NAME)

После запуска системы для подтверждения внесенных изменений также может быть использована команда adb (absolute debugger - абсолютный отладчик), однако пользоваться ею следует крайне осторожно.


Ведете ли вы блог?

Да
Нет
Планирую


Результаты опроса

Новостной блок