Где проводится профессиональная переподготовка "Системное администрирование 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)