|
Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение. |
Запуск и остановка системы
Файлы и каталоги, используемые при загрузке
Только для компьютеров x86 (до Solaris 10 1/06 включительно):
Замечание о загрузке систем UltraSPARC
Некоторые старые компьютеры SPARC технически способны работать с 64-битной версией Solaris, но им может требоваться обновление firmware для того, чтобы эта работа стала в действительности возможной. Если вы обладаете как раз такой системой и установили 64-битный Solaris, то при загрузке этот факт будет обнаружен и вы получите сообщение о том, что firmware следует обновить, вслед за этим загрузчик выберет 32-разрядное ядро и загрузка продолжится.
Процессоры UltraSPARC-1 с частотой 200 MГц и меньше имеют ошибку в микрокоде, из-за которой на компьютерах с такими процессорами пользователь может запустить 64-битную программу, вызывающую остановку процессора посредством выполнения известной комбинации команд. Чтобы избежать этой неприятности, при работе на таких компьютерах Solaris при загрузке выбирает 32-битное ядро, так как 64-битное приложение не сможет запуститься при работе с 32-разрядным ядром.
Компания Sun утверждает, что комбинация команд, вызывающая нештатную остановку процессора, не может быть сгенерирована компилятором языка высокого уровня, и более того, даже практически не может встретиться в написанных на ассемблере программах, если только эта программа не написана специально для того, чтобы вызвать эту ошибку.
В тех системах, где вероятность запуска такой зловредной программы мала, а пользователи работают только с обычными приложениями, полученными из надежных источников или собранных из исходеных текстов языка высокого уровня типа С, администратор может явным образом потребовать у загрузчика выполнять загрузку 64-разрядного ядра при старте системы. Для этого потребуется изменить файл политики загрузки /platform/platform-name/boot.conf:
ALLOW_64BIT_KERNEL_ON_UltraSPARC_1_CPU=true
Инициализация ядра
После того, как ядро загружено в память и ему передано управление, ядро начинает загрузку модулей. В этот момент оно еще не умеет читать файлы с файловой системы UFS, так как драйвер файловой системы еще на загружен. Поэтому для чтения модулей ядро использует ufsboot. После того, как загружено достаточно модулей для монтирования корневой файловой системы и самостоятельного продолжения загрузки, ядро выгружает ufsboot и выполняет остаток загрузки. Оно монтирует указанные в /etc/vfstab файловые системы и запускает процесс /sbin/init для перехода к рабочему режиму системы. Процесс /sbin/init, в свою очередь, запускает те программы и скрипты, которые перечислены в /etc/inittab, и передает управление службе svc.startd.
До Solaris 9 включительно режим работы по умолчанию указывался в /etc/inittab с меткой initdefault. Начиная с Solaris 10 рабочий режим определяется установками подсистемы SMF, а именно тем, какой этап системы требуется загрузить. По умолчанию происходит загрузка этапа milestone/multi-user-server. Конкретный набор служб, запускаемых для перехода к этому этапу, указан в профиле /var/svc/profile/generic.xml, или, если этот файл существует, в /var/svc/profile/generic_open.xml. Более подробно о профилях SMF рассказано в лекции 13 курса "Системное администрирование ОС Solaris 10".
В Solaris ядро настраивается динамически, т.е. изменить параметры ядра можно как при перезагрузке системы (изменив заранее файл конфигурации /etc/system ), так и во время работы, на лету. Поэтому ядро называется динамическим. Оно состоит из небольшой статической части и множества модулей, которые загружаются по мере необходимости. Многие модули загружаются автоматически при старте системы, в то время как другие, например, драйверы устройств, загружаются, когда они понадобятся ядру, т.е. в момент первого обращения к ним. Когда модуль уже не нужен, он может быть выгружен из памяти. Фактически, ядро выгружает модуль тогда, когда он не нужен, а память, которую он занимает, наоборот, нужна.
Чтобы узнать, какие модули загружены в настоящий момент, следует выполнить команду
modinfo
Модули ядра хранятся в каталогах /kernel и /usr/kernel, специфичные для аппаратной платформы модули лежат в каталогах /platform/`uname –m`/kernel и /platform/` uname –i`/kernel (если такие есть).
Специфические указания, какие модули загружать при старте системы, следует разместить в файле /etc/system, который считывается ядром при загрузке. В этом файле можно также указать дополнительные параметры, которые надо передать модулям при загрузке.
В частности, /etc/system используют, чтобы указать:
- путь к каталогу, где следует искать модули, загружаемые при старте системы;
- модули, которые надо загрузить сразу, а не ждать, пока они потребуются;
- тип и имя устройства, с которого производится загрузка (корневое устройство);
- параметры ядра, которые следует установить в значения, отличные от принятых по умолчанию.
Стандартный файл /etc/system в Solaris 10 выглядит примерно так (незначимые для данного примера строки не показаны):
* 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:/sbus@1,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 'debug' in the module named * 'test_module' * * set test_module:debug = 0x13
Важно!
Всегда делайте резервную копию любого файла конфигурации перед внесением изменений! Дать команду cp /etc/system /etc/system.bak – дело двух секунд, зато это действие сохранит вам нервы и время – проверено поколениями сисадминов!
Никогда не вносите в файлы конфигурации изменений, если не уверены, что это надо делать или сомневаетесь в том, что должно получиться в результате.
Если правилом (2) вы пренебрегли вопреки голосу разума, то неверный файл /etc/system может вызвать ошибку при загрузке и система не загрузится. Если это случилось, то:
- используйте команду загрузчика boot –a для интерактивной загрузки;
- когда загрузчик спросит имя файла system, укажите имя резервной копии (например, /etc/system.bak );
- если правило (1) вы тоже проигнорировали (похоже, в этом случае сегодня не ваш день!) и никакой резервной копии не имеется, то в качестве имени файла system указывайте /dev/null – тогда все значения будут приняты по умолчанию.
Как видно из приведенного примера, настройки в /etc/system часто выглядят так:
set параметр=значение
Например, параметр ядра MAXUSERS устанавливается в значение 50 следующей командой:
set maxusers = 50
Обратите внимание на то, что параметры статической части ядра (фактически, файла unix) устанавливаются без ссылки на модуль, а параметры, применимые к модулям, – с указанием имени модуля:
set модуль:параметр=значение
Длина команды в файле /etc/system не должна превышать 80 символов, строки, начинающиеся со знака звездочки "*" или решетки "#", интерпретируются как комментарии.
Чтобы проверить, какие значения имеют настраиваемые параметры ядра, следует использовать команду sysdef, которая показывает список обнаруженных устройств, системных устройств, загруженных модулей и значения настраиваемых параметров ядра (вывод программы сокращен, так как это очень подробная информация – более 20 страниц):
sysdef
*
* Hostid
*
0930edc1
*
* i86pc Configuration
*
*
* Devices
*
scsi_vhci, instance #0
isa, instance #0
i8042, instance #0
keyboard, instance #0
mouse, instance #0
motherboard (driver not attached)
asy, instance #0
lp, instance #0
asy, instance #1
pit_beep, instance #0
pci, instance #0
pci1025,10a (driver not attached)
pci1002,5a34, instance #0
display, instance #0
pci1002,5a36 (driver not attached)
pci1002,5a37 (driver not attached)
pci1002,5a38 (driver not attached)
pci1002,5a39, instance #4
pci1468,422, instance #0
pci-ide, instance #0
ide, instance #0
cmdk, instance #0
ide (driver not attached)
pci1025,10a, instance #0
pci1025,10a, instance #1
mouse, instance #2
pci1025,10a, instance #0
device, instance #0
pci1025,10a (driver not attached)
<...>
*
* Loadable Objects
*
* Loadable Object Path = /platform/i86pc/kernel
*
kmdb/amd64/cpu.generic
kmdb/amd64/cpu_ms.AuthenticAMD.15
kmdb/amd64/pcplusmp
kmdb/amd64/unix
kmdb/amd64/uppc
kmdb/cpu.generic
kmdb/cpu_ms.AuthenticAMD.15
kmdb/pcplusmp
kmdb/unix
kmdb/uppc
drv/amd64/xsvc
drv/xsvc
drv/amd64/cpc
hard link: sys/amd64/cpc
drv/cpc
hard link: sys/cpc
misc/amd64/cpr
misc/cpr
drv/amd64/nxge
drv/nxge
drv/amd64/pci-ide
drv/pci-ide
amd64/unix
cpu/amd64/cpu.generic
cpu/amd64/cpu_ms.AuthenticAMD
cpu/amd64/cpu_ms.AuthenticAMD.15
cpu/amd64/cpu_ms.GenuineIntel
<...>
*
* Loadable Object Path = /usr/kernel
*
drv/ncall
drv/nsctl
drv/nskern
drv/sdbc
drv/amd64/sv
drv/sv
drv/amd64/pool
drv/pool
drv/amd64/zcons
drv/zcons
drv/amd64/winlock
drv/winlock
drv/amd64/ii
drv/ii
drv/amd64/ipf
drv/ipf
misc/spuni
misc/amd64/spuni
drv/amd64/pm
drv/pm
<...>
*
* System Configuration
*
swap files
swapfile dev swaplo blocks free
/dev/dsk/c0d0s1 102,1 8 4209016 4036480
*
* Tunable Parameters
*
32006144 maximum memory allowed in buffer cache (bufhwm)
24426 maximum number of processes (v.v_proc)
99 maximum global priority in sys class (MAXCLSYSPRI)
24421 maximum processes per user id (v.v_maxup)
30 auto update time limit in seconds (NAUTOUP)
25 page stealing low water mark (GPGSLO)
1 fsflush run rate (FSFLUSHR)
25 minimum resident memory for avoiding deadlock (MINARMEM)
25 minimum swapable memory for avoiding deadlock (MINASMEM)
*
* Utsname Tunables
*
5.11 release (REL)
solaris node name (NODE)
SunOS system name (SYS)
snv_79a version (VER)
*
* Process Resource Limit Tunables (Current:Maximum)
*
0x0000000000000100:0x0000000000010000 file descriptors
*
* 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 module is not loaded
*
*
* IPC Shared Memory
*
* The IPC Shared Memory module no longer has system-wide limits.
* Please see the "Solaris Tunable Parameters Reference Manual" for
* information on how the old limits map to resource controls and
* the prctl(1) and getrctl(2) manual pages for information on
* observing the new limits.
*
*
* Time Sharing Scheduler Tunables
*
60 maximum time sharing user priority (TSMAXUPRI)
SYS system class name (SYS_NAME)
