Прежде всего напомним, что Solaris относится к ветви System V, и
поэтому процедуры его
Solaris отличается также от собратьев по ветви System V наличием
специального /etc/rc0.d, /etc/rc1.d и т.д., а в Linux - в /etc/rc.d/rc0/, /etc/rc.d/rc1/ и т.д. Однако для того, чтобы уточнить
местоположение этих скриптов в любой из систем System V, достаточно
изучить man .
Кроме того, Solaris обладает самой большой коллекцией программ для
изменения shutdown, reboot, halt, poweroff, . В других системах не всегда есть полный набор этих программ,
однако в системах System V обязательно присутствуют программы и shutdown. Они всегда имеют одинаковое назначение, независимо от
названия и поставщика ОС, хотя их ключи могут несколько
отличаться друг от друга.
Повторим еще раз: общие принципы загрузки и man и man shutdown.
В одной и той же компьютерной системе может понадобиться выполнять совершенно разные типы задач. Например, на большом складе компании-поставщика бытовой техники центральный сервер управляет базой данных клиентов и их заказов. Эта работа ведется круглосуточно, за исключением короткой передышки в пятницу поздно вечером. В рабочее время на сервере запущены приложения, которые необходимы для обслуживания запросов: сервер базы данных, web-сервер, модули ядра, отвечающие за работу с сетью, и тому подобное. Во время короткой передышки в пятницу на сервере выполняется совершенно другая работа: полное резервное копирование базы данных и, если надо, установка нового ПО. Для этой работы важно, чтобы никто не обращался к серверу с запросами во время резервного копирования и модификации ПО, и такие приложения, как сервер базы данных, web-сервер, модули ядра, отвечающие за работу с сетью, следует выключить на время проведения еженедельного техобслуживания системы.
Для того чтобы системе было легче переключаться между разными
наборами программ, которые используются для разных типов задач, была
придумана концепция s или S ( s и S - это одно и то же).
/etc/inittab. В этом файле
указываются стартовые скрипты, которые будут автоматически
запускаться при переходе к каждому из уровней выполнения. Эти скрипты
расположены в каталоге /etc, и из них вызываются другие скрипты,
которые лежат в каталогах /etc/rcN.d. ( N - число от 0 до 6 или символ S ).
При переходе к /etc/rc0, к /etc/rc1 и
так далее. Ниже даны описания всех возможных
Режим 0.
Система останавливается, управление переходит к программе из ПЗУ
(
Режим 1.
Административный
Режим s, S.
s (или S ) называется однопользовательским. При переходе в это
состояние все пользовательские процессы останавливаются, а файловые
системы, необходимые для многопользовательской работы, демонтируются.
После этого доступ к системе возможен только с консоли;
регистрационные имена, требующие доступа к пользовательским файловым
системам, употреблять нельзя. Этот s автоматически, когда файловая система /usr повреждена и
не может быть восстановлена без вмешательства администратора. Набор
файловых систем, смонтированных при работе системы в состоянии s, не
всегда один и тот же; то, какие файловые системы смонтированы,
зависит от метода перевода системы в состояние s и настроек системы.
Переход в /etc/inittab, что невозможно для любого другого S из других utmpx (т.е.
запущенные от имени пользователей). Последнее означает, что процессы
типа ttymon и других мониторов портов, запущенные системой SAC, тоже
завершаются при переходе в S.
Режим 2.
Многопользовательский
Режим 3.
Многопользовательский
Режим 4.
Альтернативный многопользовательский
Режим 5.
Режим 6.
Останавливает и перезагружает операционную систему в состояние,
определяемое записью initdefault в файле /etc/inittab. При
необходимости конфигурирует перед перезагрузкой новый загружаемый
образ ядра операционной системы. Для пересборки ядра после
модификации
touch /reconfigure
перед перезагрузкой.
После включения компьютера записанное в ПЗУ программное обеспечение
(
Если тест прошел нормально, то программа автозагрузки пытается загрузить систему, используя имя устройства и имя файла ядра, записанные в ПЗУ.
Эти параметры могут быть изменены программой ok, которую выдаст по завершении
Программа, которая запускается после начального загрузчика,
называется ufsboot, если загрузка происходит с диска, или inetboot,
если выполняется загрузка по сети.
Загрузка по сети может идти с использованием DHCP или RARP/bootparams, в зависимости от настроек, записанных в ПЗУ, и реальной конфигурации сети (для настройки по DHCP в сети должен быть доступен DHCP-сервер).
Команду boot среды OpenBoot (иначе говоря, командной строки
boot net:rarp boot net:dhcp
или полагаясь на выбор
boot net
При этом загрузка осуществляется через тот интерфейс, для которого
определен псевдоним net.
Начальный загрузчик из ПЗУ выполняет ARP-запрос (подробнее об
ARP-запросах см. лекции 2 курса "Администрирование ОС Solaris") и, после получения ответа, посылает
широковещательный запрос в локальную сеть по протоколу TFTP для
загрузки программы inetboot из сети. Загрузив с ответившего
TFTP-сервера программу inetboot, загрузчик передает ей управление, а
она отправляет еще один ARP-запрос, после чего находит файловую
систему в сети, с которой следует произвести загрузку ядра. Для этого inetboot использует протокол bootparams (см. man bootparams для
получения детальной информации о протоколе). После того как файловая
система найдена, с нее по протоколу NFS загружается ядро и ему
передается управление.
При загрузке по сети с использованием DHCP начальный загрузчик из ПЗУ
посылает широковещательный запрос, в котором сообщает MAC-адрес
своего компьютера и его архитектуру, запрашивая в ответ IP-адрес,
параметры загрузки и настройки сети. После получения ответа (детали
протокола DHCP см. в лекции 2 курса "Администрирование ОС Solaris") начальный загрузчик загружает inetboot через сеть, inetboot загружает ядро, которое, в свою
очередь, загружает необходимые ему файлы через сеть, после чего
выгружает inetboot. Стартовые скрипты запускают dhcpagent, который
выполняет оставшуюся часть настроек по DHCP.
При загрузке с диска разделяют два этапа:
Если имя файла ядра указано не как полное имя файла (начинающееся с
символа / ), то такое имя расценивается как относительное и вторичный
загрузчик ищет ядро в каталоге, соответствующем аппаратной платформе
компьютера. Тогда путь к ядру точно будет лежать через каталог /platform/platform-name. Для многих компьютеров SPARC после этого
выполняется поиск в каталоге /platform/hardware-class-name. Если
указано полное имя файла, загрузчик будет пытаться загрузить в
точности тот файл, что указан. После загрузки файла ядра в память
загрузчик передает ему управление.
Если имя файла ядра не указано, и из других настороек непонятно,
какое ядро следует загружать, загрузчик сам решает, какое ядро
требуется, основываясь на том, какое ПО установлено в системе, на
известных свойствах аппаратуры и и на записях в файле
политики загрузки boot.conf. О местоположении и содержимом этого
файла будет сказано ниже, в разделе "Файлы и каталоги, используемые
при загрузке".
В системах с архитектурой SPARC после процедуры самотестирования
компьютера (POST), которую выполняет , запускается загрузчик,
предоставляющий интерфейс среды OpenBoot. В этой среде можно вводить
команды в командной строке в ответ на приглашение среды. Приглашение
среды представляет собой слово
ok
Здесь мы рассмотрим команду boot среды OpenBoot.
Синтаксис команды boot предполагает возможность указания загрузочного
устройства и дополнительных аргументов:
boot [device] [arguments]
Если дать команду boot без параметров, то будет выполнена загрузка с
устройства по умолчанию. По умолчанию загрузка производится с того
устройства, которое указано в переменной boot-device или diag-device
в ПЗУ (boot-device и boot-file используются diag-device и diag-file.
Аргументы команды boot могут быть многострочными, они не
анализируются загрузчиком OpenBoot, а передаются вторичному
загрузчику как есть. Если команде boot переданы какие-нибудь
аргументы, содержимое переменных boot-file и diag-file игнорируется.
Например, если дана команда
boot -s
то подстрока -s расценивается как аргумент, а переменные boot-file и diag-file не принимаются во внимание.
Если команды
boot net
и
boot cdrom
если они даны без аргументов, то они будут использовать содержимое
переменных boot-file и diag-file как путь к файлу ядра. Стало быть,
если boot-file содержит имя 64-разрядного ядра, а вы пытаетесь
загрузиться с CD-ROM командой boot cdrom, то загрузка не состоится,
если на CD-диске имеется только 32-разрядное ядро.
Для загрузки в специфическом boot
соответствующие аргументы, в ответ на приглашение ok вводится
команда:
boot -as - загрузка ядра, используемого по умолчанию, в
однопользовательском boot kernel/unix -as - принудительная загрузка 32-разрядного ядра в
однопользовательском boot kernel/sparcv9/unix -as - принудительная загрузка
64-разрядного ядра в однопользовательском Для более детального изучения команды boot в вашей системе следует
использовать man boot ; помните, что на некоторых платформах, в
зависимости от , могут наблюдаться отклонения от схемы,
описанной здесь и в документации.
На компьютерах x86 загрузка состоит из двух разных этапов:
boot.bin и способен считать ядро с
диска из файловой системы UFS, компакт-диска или через сеть с
использованием NFS.
После возвращения управления от /etc/bootrc, который управляет дальнейшим процессом загрузки.
Обычный /etc/bootrc предлагает администратору ввести символ b для
загрузки с определенными ключами и аргументами, символ i для запуска
интерактивного командного интерпретатора, и любой другой символ - для
загрузки ядра с установками по умолчанию.
Для загрузки в специфическом boot
соответствующие аргументы:
> вводится командаb kernel/unix -as - загрузка ядра, используемого по умолчанию, в
однопользовательском
Некоторые старые компьютеры SPARC технически способны работать с
64-битной версией Solaris, но им может требоваться обновление для того, чтобы эта работа стала в действительности
возможной. Если вы обладаете как раз такой системой и установили
64-битный Solaris, то при загрузке этот факт будет обнаружен и вы
получите сообщение о том, что следует обновить. вслед за
этим загрузчик выберет 32-разрядное ядро, и загрузка продолжится.
Процессоры
Компания Sun утверждает, что комбинация команд, вызывающая нештатную остановку процессора, не может быть сгенерирована компилятором языка высокого уровня, и более того, даже практически не может встретиться в написанных на ассемблере программах, если только эта программа не написана специально для того, чтобы вызвать эту ошибку.
В тех системах, где вероятность запуска такой "зловредной" программы
мала, а пользователи работают только с обычными приложениями,
полученными из надежных источников или собранных из исходных текстов
языка высокого уровня типа С, администратор может явным образом
потребовать у загрузчика выполнять загрузку 64-разрядного ядра при /platform/platform-name/boot.conf:
ALLOW_64BIT_KERNEL_ON_UltraSPARC_1_CPU=true
После того как ядро загружено в память и ему передано управление, оно
начинает загрузку модулей. В этот момент ядро еще не умеет читать
файлы из файловой системы UFS, так как драйвер файловой системы еще
не загружен. Поэтому для чтения модулей ядро использует ufsboot.
После того как загружено достаточно модулей для монтирования корневой
файловой системы и самостоятельного продолжения загрузки, ядро
выгружает ufsboot и продолжает загрузку самостоятельно. Ядро монтирует
указанные в /etc/vfstab файловые системы и запускает процесс /sbin/init для перехода к /etc/inittab обозначен как initdefault. Процесс /sbin/init, в свою
очередь, запускает те программы и скрипты, которые перечислены в /etc/inittab.
В Solaris 9 ядро настраивается динамически, т.е. изменить параметры
ядра можно как при перезагрузке системы (изменив заранее файл
конфигурации ), так и во время работы, на лету. Поэтому
ядро называется динамическим. Оно состоит из небольшой статической
части и множества модулей, которые загружаются динамически, по мере
необходимости. Многие модули загружаются автоматически при
Чтобы узнать, какие модули загружены в настоящий момент, следует выполнить команду
modinfo
Модули ядра хранятся в каталогах /kernel и /usr/kernel, специфичные
для аппаратной платформы модули лежат в каталогах /platform/`uname -m`/kernel и /platform/` uname -i`/kernel (если
такие есть).
Специфические указания того, какие модули загружать при , который считывается
ядром при загрузке. В этом файле можно также указать дополнительные
параметры, которые надо передать модулям при загрузке.
В частности, используют, чтобы указать:
Стандартный файл выглядит примерно так:
*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) вы пренебрегли вопреки голосу разума, то неверный
файл может вызвать ошибку при загрузке и система не
загрузится. Если это случилось, то:
boot -a для интерактивной загрузки; system , укажите имя резервной
копии (например, /etc/system.bak ); system указывайте /dev/null - тогда все значения
будут приняты по умолчанию.Как видно из приведенного примера, большинство строк в
выглядят так:
set параметр=значение
Например, параметр ядра MAXUSERS устанавливается в значение 50
следующей командой:
set maxusers = 50
Обратите внимание на то, что параметры статической части ядра (фактически, файла unix) устанавливаются без ссылки на модуль, а параметры, применимые к модулям, - с указанием имени модуля:
set модуль:параметр=значение
Длина команды в файле не должна превышать 80 символов,
строки, начинающиеся со знака звездочки "*" или решетки "#"
интерпретируются как комментарии.
Чтобы проверить, какие значения имеют настраиваемые sysdef, которая показывает список
обнаруженных устройств,
* * Hostid * 0284521a * * i86pc Configuration * * * Devices * * +boot (driver not attached) memory (driver not attached) aliases (driver not attached) chosen (driver not attached) i86pc-memory (driver not attached) i86pc-mmu (driver not attached) openprom (driver not attached) options, instance #0 packages (driver not attached) delayed-writes (driver not attached) itu-props (driver not attached) isa, instance #0 motherboard (driver not attached) PNP0501 (driver not attached) lp (driver not attached) fdc, instance #0 fd, instance #0 fd, instance #1 (driver not attached) i8042, instance #0 keyboard, instance #0 mouse, instance #0 bios (driver not attached) bios (driver not attached) pci, instance #0 pci8086,7190 (driver not attached) pci8086,7191, instance #0 display, instance #0 pci20c,d041 (driver not attached) pci8086,7110 (driver not attached) pci-ide, instance #0 ide, instance #0 cmdk, instance #0 ide, instance #1 sd, instance #0 pci8086,7112, instance #0 pci8086,7113 (driver not attached) pci1014,138, instance #0 pci1014,138, instance #1 pci1436,440 (driver not attached) pci1014,136 (driver not attached) pci10c,d041 (driver not attached) used-resources (driver not attached) objmgr, instance #0 cpus (driver not attached) cpu, instance #0 (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 icmp, instance #0 icmp6, instance #0 sad, instance #0 conskbd, instance #0 wc, instance #0 iwscn, instance #0 rts, instance #0 tl, instance #0 keysock, instance #0 spdsock, instance #0 sysmsg, instance #0 cn, instance #0 mm, instance #0 kstat, instance #0 log, instance #0 sy, instance #0 vol, instance #0 random, instance #0 ptm, instance #0 pts, instance #0 ksyms, instance #0 devinfo, instance #0 * * Loadable Objects * * Loadable Object Path = /platform/i86pc/kernel * drv/cpc hard link: sys/cpc strmod/vuid2ps2 strmod/vuid3ps2 strmod/vuidm3p strmod/vuidm4p strmod/vuidm5p drv/cadp160 drv/smartii drv/elx drv/fd drv/fdc drv/logi drv/lp drv/msm drv/ata drv/dpt drv/mscsi drv/pci-ide drv/sbpro drv/mlx drv/eisa drv/isa drv/kb8042 drv/pci drv/rootnex mach/uppc misc/bootdev misc/emul_80387 misc/pci_autoconfig mmu/mmu32 mmu/mmu36 unix * * Loadable Object Path = /kernel * drv/arp hard link: strmod/arp mach/pcplusmp mach/corollary mach/compaq drv/bofi drv/nca drv/clone drv/cn drv/conskbd drv/consms drv/devinfo drv/i2o_bs drv/i2o_scsi drv/icmp hard link: strmod/icmp drv/icmp6 hard link: strmod/icmp6 drv/ip hard link: strmod/ip drv/ip6 hard link: strmod/ip6 drv/ippctl drv/ipsecah hard link: strmod/ipsecah drv/ipsecesp hard link: strmod/ipsecesp drv/iwscn drv/keysock hard link: strmod/keysock drv/llc1 drv/lofi drv/log drv/mm drv/openeepr drv/options drv/pci_to_i2o drv/poll drv/pseudo drv/ptc drv/ptsl drv/random drv/rts hard link: strmod/rts drv/sad hard link: strmod/sad drv/sgen drv/spdsock drv/st drv/sy drv/sysmsg drv/tcp hard link: strmod/tcp drv/tcp6 hard link: strmod/tcp6 drv/tl drv/udp hard link: strmod/udp drv/udp6 hard link: strmod/udp6 drv/wc genunix misc/busra misc/consconfig misc/des misc/fssnap_if misc/gld misc/hpcsvc misc/i2o_msg misc/ipc misc/kbtrans misc/krtld misc/md5 misc/pcicfg misc/pcihp misc/rpcsec misc/scsi misc/seg_drv misc/seg_mapdev misc/sha1 misc/strplumb misc/swapgeneric misc/terminal-emulator misc/tlimod misc/ufs_log drv/chs drv/dnet drv/elxl drv/ieef drv/iprb drv/ncrs drv/pcn drv/pcscsi drv/sd drv/spwr drv/pcmem drv/mega drv/pcic drv/pcs drv/pem drv/pcelx drv/xsvc drv/cpqncr drv/pcram drv/md misc/md_hotspares misc/md_mirror misc/md_notify misc/md_raid misc/md_sp misc/md_stripe misc/md_trans misc/kgss/gl_kmech_krb5 drv/pcser drv/hpfc drv/pe drv/asy drv/cmdk drv/objmgr misc/dadk misc/gda misc/snlb misc/strategy misc/sysinit drv/sk98sol drv/pcata drv/skfp misc/klmmod misc/klmops misc/nfs_dlboot misc/kgssapi misc/rpcsec_gss drv/adp drv/audioens misc/amsrc1 misc/audiosup misc/diaudio misc/mixer drv/cadp drv/cpqhpc drv/hid drv/hubd drv/scsa2usb drv/uhci drv/usb_ac drv/usb_as drv/usb_mid drv/usbprn misc/hidparser misc/usba exec/elfexec exec/intpexec fs/cachefs fs/fifofs fs/hsfs fs/lofs fs/mntfs fs/procfs fs/sockfs fs/specfs fs/tmpfs fs/ufs ipp/ipgpc sched/TS sched/TS_DPTBL strmod/atun strmod/authmd5h strmod/authsha1 strmod/bufmod strmod/connld strmod/dedump strmod/encr3des strmod/encrdes strmod/ldterm strmod/pckt strmod/pfmod strmod/pipemod strmod/ptem strmod/redirmod strmod/rpcmod hard link: sys/rpcmod strmod/timod strmod/tirdwr strmod/ttcompat strmod/tun sys/c2audit sys/doorfs sys/inst_sync sys/kaio sys/msgsys sys/pipe sys/pset sys/semsys sys/shmsys fs/nfs hard link: sys/nfs fs/autofs fs/udfs strmod/usb_ah strmod/usbkbm strmod/usbms strmod/hwc dacf/consconfig_dacf drv/i8042 drv/mouse8042 drv/symhisl drv/pci_pci drv/vgatext misc/nfssrv misc/acpi_intp misc/pcmcia ipp/dlcosmk ipp/dscpmk ipp/flowacct ipp/tokenmt ipp/tswtclmt misc/rsmops exec/coffexec * * Loadable Object Path = /usr/kernel * drv/rsm sched/FSS drv/winlock drv/pm drv/tnf strmod/u8koi8 strmod/u8lat1 strmod/u8lat2 drv/vol drv/dump drv/fssnap drv/kstat drv/ksyms drv/lockstat drv/logindmux drv/ptm drv/pts exec/javaexec fs/fdfs fs/namefs fs/pcfs fs/xmemfs sched/FX sched/FX_DPTBL sched/IA sched/RT sched/RT_DPTBL strmod/rlmod strmod/telmod sys/acctctl sys/exacctsys sys/sysacct drv/llc2 drv/sppp drv/sppptun hard link: strmod/sppptun strmod/spppasyn strmod/spppcomp * * System Configuration * swap files swapfile dev swaplo blocks free /dev/dsk/c0d0s1 102,1 8 1048936 1048936 * * Tunable Parameters * 3866624 maximum memory allowed in buffer cache (bufhwm) 2954 maximum number of processes (v.v_proc) 99 maximum global priority in sys class (MAXCLSYSPRI) 2949 maximum processes per user id (v.v_maxup) 30 auto update time limit in seconds (NAUTOUP) 25 page stealing low water mark (GPGSLO) 5 fsflush run rate (FSFLUSHR) 25 minimum resident memory for avoiding deadlock (MINARMEM) 25 minimum swapable memory for avoiding deadlock (MINASMEM) * * Utsname Tunables * 5.9 release (REL) sola node name (NODE) SunOS system name (SYS) Generic_112234-03 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 module is not loaded * * * Time Sharing Scheduler Tunables * 60 maximum time sharing user priority (TSMAXUPRI) SYS system class name (SYS_NAME)
Процесс запускается ядром сразу после
монтирования файловых систем из /etc/vfstab. После этого
осуществляет переход в тот initdefault в файле /etc/inittab. Переход к этому /etc/inittab:
ap::sysinit:/sbin/autopush -f /etc/iu.ap ap::sysinit:/sbin/soconfig -f /etc/sock2path fs::sysinit:/sbin/rcS sysinit >/dev/msglog 2<>/dev/msglog </dev/console is:3:initdefault: p3:s1234:powerfail:/usr/sbin/shutdown -y -i5 -g0 >/dev/msglog 2<>/dev/msglog sS:s:wait:/sbin/rcS >/dev/msglog 2<>/dev/msglog </dev/console s0:0:wait:/sbin/rc0 >/dev/msglog 2<>/dev/msglog </dev/console s1:1:respawn:/sbin/rc1 >/dev/msglog 2<>/dev/msglog </dev/console s2:23:wait:/sbin/rc2 >/dev/msglog 2<>/dev/msglog </dev/console s3:3:wait:/sbin/rc3 >/dev/msglog 2<>/dev/msglog </dev/console s5:5:wait:/sbin/rc5 >/dev/msglog 2<>/dev/msglog </dev/console s6:6:wait:/sbin/rc6 >/dev/msglog 2<>/dev/msglog </dev/console fw:0:wait:/sbin/uadmin 2 0 >/dev/msglog 2<>/dev/msglog </dev/console of:5:wait:/sbin/uadmin 2 6 >/dev/msglog 2<>/dev/msglog </dev/console rb:6:wait:/sbin/uadmin 2 1 >/dev/msglog 2<>/dev/msglog </dev/console sc:234:respawn:/usr/lib/saf/sac -t 300
В каталогах /etc/rcN.d лежат скрипты запуска системы, то есть те
скрипты, которые запускают и останавливают отдельные приложения.
Имена файлов в каталогах имеют вид KnnNAME или SnnNAME, где nn - это
целое положительное число, а NAME - имя приложения (обычно - демона).
Файлы, начинающиеся с буквы S (start), - это скрипты для запуска приложения, файлы, начинающиеся с K (kill) - для завершения работы приложения. Номер nn определяет порядок запуска скриптов - вначале запускаются те, что имеют меньший порядковый номер.
При переходе в тот или иной initdefault.
То, какие именно скрипты запускать, описано в файле /etc/rcN ( N может
принимать значения от 0 до 6 и s), который, собственно, и вызывается
процессом . Файлы /etc/rcN являются символическими ссылками на
файлы /sbin/rcN (см. файл /etc/inittab выше).
Так, если initdefault =3, а каталог /etc/rc3.d содержит нижеуказанные
скрипты, то первым выполнится S13kdc.master, затем S14kdc, и так все
по порядку (последним будет S90samba ):
README S13kdc.master S14kdc S15nfs.server S16boot.server S34dhcp S50apache S76snmpdx S77dmi S80mipagent S81volmgt S89sshd S90samba
Для перевода системы из одного
В Solaris есть несколько таких программ:
/usr/sbin/shutdown /sbin/init /usr/sbin/halt /usr/sbin/reboot /usr/sbin/poweroff Stop+A или L1+A
Программы /usr/sbin/shutdown, /sbin/init, /usr/sbin/halt выполняют
завершение всех процессов в системе, записывают несохраненные данные
на диск, и переводят систему в новый
Программа /usr/sbin/reboot выполняет все вышеперечисленное и затем
переводит систему в initdefault в /etc/inittab.
Команда /usr/sbin/poweroff обеспечивает переход в .
Последняя команда (комбинация клавиш) доступна только в
SPARC-системах, где соответствующие клавиши есть на клавиатуре, и
посылаемый ими код отрабатывается как аварийный
Самый общий способ shutdown, она есть в
любом варианте UNIX. В Solaris эта программа имеет следующий
синтаксис вызова:
shutdown [-y] [-gпериод_ожидания] [-iрежим]
например
shutdown -y -g0
Эта команда выполняется только привилегированным пользователем для
изменения
По умолчанию, команда переводит систему в
Команда посылает всем интерактивно работающим с системой
пользователям предупреждающее сообщение о том, что система готовится
к переходу в другой shutdown
берет стандартное значение периода ожидания после каждого из этих
сообщений из файла /etc/default/shutdown, если он существует. Если shutdown не может найти файл или не может прочитать значение, она
выдает предупреждение и устанавливает период ожидания в 60 секунд. По
умолчанию, программа запрашивает подтверждение у запустившего ее
администратора, прежде чем начинать остановку демонов и прекращение
процессов.
-y - автоматически отвечает утвердительно на все запросы о желании
перезагрузить систему, чтобы программа shutdown могла работать без
вмешательства администратора;-gпериод_ожидания - позволяет администратору явно указать период_ожидания (в секундах);-iрежим - задает Файл /etc/default/shutdown используется для задания значений,
специфичных для вашей системы.
Программа shutdown ведет себя по-разному в зависимости от количества
интерактивно работающих пользователей. Если в системе работает
несколько пользователей, выдаются предупреждающее и окончательное
сообщение, а также запрос на подтверждение shutdown. Если зарегистрирован только
пользователь, запустивший команду shutdown, или если период ожидания
задан равным нулю, предупреждающее сообщение не выдается.
Если указать ключ -y, то запрос на подтверждение не выводится, так
как предполагается положительный ответ на него.
Помните, что систему всегда следует останавливать перед
При запуске Solaris автоматически начинают работать различные
системные службы (демоны), и перед завершением работы системы они
должны корректно закончить свою деятельность. Команда shutdown
требует от демонов завершения, а также инициирует запись на диск всех
данных из файлового кэша и демонтирование всех файловых систем.
Стоит отметить, что кроме неукоснительно корректного завершения
работы системы с помощью shutdown или аналогичной по смыслу команды,
есть еще один момент, о котором системный администратор должен
помнить: стабильное электропитание. Если пьяный сантехник, ретивая
уборщица или безмозглый помощник научены никогда не выдирать провода
из розеток и всегда выполнять shutdown, это значит, что осталось
установить надежную систему бесперебойного питания. При подключении
UPS к компьютеру убедитесь, что он настроен так, чтобы выдавать
сигнал бедствия компьютеру при отключении электропитания; получив
такой сигнал, система немедленно запустит shutdown и ее работа
завершится безболезненно. Конечно, для систем круглосуточной работы
надо иметь UPS с запасом энергии батарей, достаточным для работы в
течение всего времени восстановления питания.
С помощью программы систему можно перевести в любой
init режим_работы
Кроме описанных выше a, b, c и q. a, b, c - это псевдорежимы, они существуют только для того,
чтобы можно было с помощью запустить отдельные программы,
которые отмечены в /etc/inittab как соответствующие данным
init q
вызывает перечитывание процессом файла /etc/inittab.
Следовательно, если вы изменили этот файл и хотите, чтобы изменения
оказали немедленное влияние на систему, следует дать команду .
Программа telinit является символической ссылкой на , и ее
используют для передачи команд запущенной в данный момент программе .
В ответ на команду вы увидите нечто вроде:
INIT: New run level: 1 Changing to state 1. Unmounting remote filesystems: /vol nfs done. System services are now being stopped. May 14 13:13:22 unknown /usr/sbin/vold[475]: problem unmounting /vol; Interrupted system call <тут что-то еще....> Killing user processes: done. Change to state 1 has been completed. Type control-d to proceed with normal startup, (or give root password for system maintenance):
Вывод, сопровождающий выполнение команды, приведен не полностью.
Обратите внимание на последние две строки; здесь требуется либо
указать пароль привилегированного пользователя root, либо нажать Ctrl-D, в последнем случае произойдет обычная загрузка в состояние initdefault.
Для немедленной shutdown -y -g0 ) можно
использовать halt. От shutdown она отличается тем, что не
предупреждает интерактивно работающих пользователей о скорой
Команда halt перед остановкой выполняет запись кэшируемых данных на
диск.
Команда reboot обычно используется для завершения работы в
однопользовательском shutdown, потому что она не
выполняет скрипты /etc/rcN.d/K* ) и не посылает никаких
сообщений пользователям. Команда reboot выполняет запись кэшируемых
данных на диск, так же, как и halt.
С помощью reboot можно передать ключи загрузчику среды OpenBoot,
например, для изменения конфигурации таблицы устройств следует дать
команду
reboot -- -rs
Как видно из примера, чтобы отделить ключи самой reboot от тех, что
будут переданы загрузчику, перед ключами последнего ставятся два
дефиса подряд.
Команда poweroff переводит систему в . Пользователи не оповещаются об изменении K* не выполняются, и в случае, если
аппаратура компьютера поддерживает программное
Последняя функция на компьютерах x86 доступна не всегда (или
недоступна вовсе), по крайней мере, ноутбук IBM ThinkPad 390X,
который я использовал для эксперимента, без проблем выключался,
работая под Windows XP и, даже не пытаясь выключаться под Solaris 9,
выдавал такие же надписи об halt:
... syncing file systems... done Type any key to continue
В некоторых случаях операционная система перестает отвечать на запросы и не откликается даже на команду reboot. В таком случае говорят, что система "зависла". Это явление, надо признать, более знакомо пользователям Windows 98, нежели администраторам Solaris, но тем не менее и с последним такое случается.
Рекомендуют такую "зависшую" систему перезапустить, нажав Stop+A или L1+A (для платформы SPARC). Это должно вызвать передачу управления к . На физических терминалах, подключенных к последовательным
портам, для этой цели возможно использовать клавишу Break.
Некоторые версии OpenBoot поддерживают ряд клавиатурных команд (они вводятся нажатием комбинаций клавиш), которые изменяют поведение OpenBoot при загрузке. Эти клавиши надо нажимать сразу после включения системного блока и держать их несколько секунд до того, как мигнет светодиод на клавиатуре.
К этим клавиатурным командам (keyboard
Stop - пропустить исполнение процедуры начальной инициализации
компьютера POST (Power-on self test); некоторые системы SPARC по
умолчанию и так пропускают исполнение POST, тогда для того, чтобы
выполнить POST, следует нажать Stop+D ;Stop+A - прерывание всех запущенных в настоящее время процессов и
предоставление командной строки в среде OpenBoot;Stop+D - включение diag-switch среды OpenBoot в значение true );Stop+F - включение интерпретатора Forth на первом последовательном
порту; для продолжения инициализации системы дайте команду exit ;
используется при нарушениях работы оборудования;Stop+N - переустановка всех переменных Для изменения комбинаций клавиш, назначенных клавиатурным командам,
надо отредактировать файл /etc/default/kbd. В нем также можно
разрешить или запретить клавиатурные команды. После модификации файла
следует дать команду kbd -i для замены стандартных назначений на
новые.
Следует отметить, что в зависимости от установок безопасности компьютера, изменение клавиатурных команд и доступ к командной строке OpenBoot могут быть запрещены, либо доступ к командной строке может предоставляться по паролю.
Если система безнадежно зависла, следует:
Stop+A или L1+A (или другую комбинацию клавиш, если вы
переопределили стандартные установки в /etc/default/kbd );ok, дать команду sync для синхронизации
файловых систем (записи кэшированных данных на диски);syncing file systems... done, нажать Stop+A
или L1+A еще раз;reset в ответ на приглашение ok ;# who -r run-level 3 May 9 05:29 3 0 S
Если ответ вас удовлетворил, можно начинать работу.
Помните, что выключать компьютер можно только после синхронизации файловых систем, иначе могут возникнуть потери данных и ошибки в файловой системе.
При включении компьютера следует соблюдать такой порядок действий:
Прежде всего напомним, что Solaris относится к ветви System V, и
поэтому процедуры его
Solaris отличается также от собратьев по ветви System V наличием
специального /etc/rc0.d, /etc/rc1.d и т.д., а в Linux - в /etc/rc.d/rc0/, /etc/rc.d/rc1/ и т.д. Однако для того, чтобы уточнить
местоположение этих скриптов в любой из систем System V, достаточно
изучить man .
Кроме того, Solaris обладает самой большой коллекцией программ для
изменения shutdown, reboot, halt, poweroff, . В других системах не всегда есть полный набор этих программ,
однако в системах System V обязательно присутствуют программы и shutdown. Они всегда имеют одинаковое назначение, независимо от
названия и поставщика ОС, хотя их ключи могут несколько
отличаться друг от друга.
Повторим еще раз: общие принципы загрузки и man и man shutdown.
В одной и той же компьютерной системе может понадобиться выполнять совершенно разные типы задач. Например, на большом складе компании-поставщика бытовой техники центральный сервер управляет базой данных клиентов и их заказов. Эта работа ведется круглосуточно, за исключением короткой передышки в пятницу поздно вечером. В рабочее время на сервере запущены приложения, которые необходимы для обслуживания запросов: сервер базы данных, web-сервер, модули ядра, отвечающие за работу с сетью, и тому подобное. Во время короткой передышки в пятницу на сервере выполняется совершенно другая работа: полное резервное копирование базы данных и, если надо, установка нового ПО. Для этой работы важно, чтобы никто не обращался к серверу с запросами во время резервного копирования и модификации ПО, и такие приложения, как сервер базы данных, web-сервер, модули ядра, отвечающие за работу с сетью, следует выключить на время проведения еженедельного техобслуживания системы.
Для того чтобы системе было легче переключаться между разными
наборами программ, которые используются для разных типов задач, была
придумана концепция s или S ( s и S - это одно и то же).
/etc/inittab. В этом файле
указываются стартовые скрипты, которые будут автоматически
запускаться при переходе к каждому из уровней выполнения. Эти скрипты
расположены в каталоге /etc, и из них вызываются другие скрипты,
которые лежат в каталогах /etc/rcN.d. ( N - число от 0 до 6 или символ S ).
При переходе к /etc/rc0, к /etc/rc1 и
так далее. Ниже даны описания всех возможных
Режим 0.
Система останавливается, управление переходит к программе из ПЗУ
(
Режим 1.
Административный
Режим s, S.
s (или S ) называется однопользовательским. При переходе в это
состояние все пользовательские процессы останавливаются, а файловые
системы, необходимые для многопользовательской работы, демонтируются.
После этого доступ к системе возможен только с консоли;
регистрационные имена, требующие доступа к пользовательским файловым
системам, употреблять нельзя. Этот s автоматически, когда файловая система /usr повреждена и
не может быть восстановлена без вмешательства администратора. Набор
файловых систем, смонтированных при работе системы в состоянии s, не
всегда один и тот же; то, какие файловые системы смонтированы,
зависит от метода перевода системы в состояние s и настроек системы.
Переход в /etc/inittab, что невозможно для любого другого S из других utmpx (т.е.
запущенные от имени пользователей). Последнее означает, что процессы
типа ttymon и других мониторов портов, запущенные системой SAC, тоже
завершаются при переходе в S.
Режим 2.
Многопользовательский
Режим 3.
Многопользовательский
Режим 4.
Альтернативный многопользовательский
Режим 5.
Режим 6.
Останавливает и перезагружает операционную систему в состояние,
определяемое записью initdefault в файле /etc/inittab. При
необходимости конфигурирует перед перезагрузкой новый загружаемый
образ ядра операционной системы. Для пересборки ядра после
модификации
touch /reconfigure
перед перезагрузкой.
После включения компьютера записанное в ПЗУ программное обеспечение
(
Если тест прошел нормально, то программа автозагрузки пытается загрузить систему, используя имя устройства и имя файла ядра, записанные в ПЗУ.
Эти параметры могут быть изменены программой ok, которую выдаст по завершении
Программа, которая запускается после начального загрузчика,
называется ufsboot, если загрузка происходит с диска, или inetboot,
если выполняется загрузка по сети.
Загрузка по сети может идти с использованием DHCP или RARP/bootparams, в зависимости от настроек, записанных в ПЗУ, и реальной конфигурации сети (для настройки по DHCP в сети должен быть доступен DHCP-сервер).
Команду boot среды OpenBoot (иначе говоря, командной строки
boot net:rarp boot net:dhcp
или полагаясь на выбор
boot net
При этом загрузка осуществляется через тот интерфейс, для которого
определен псевдоним net.
Начальный загрузчик из ПЗУ выполняет ARP-запрос (подробнее об
ARP-запросах см. лекции 2 курса "Администрирование ОС Solaris") и, после получения ответа, посылает
широковещательный запрос в локальную сеть по протоколу TFTP для
загрузки программы inetboot из сети. Загрузив с ответившего
TFTP-сервера программу inetboot, загрузчик передает ей управление, а
она отправляет еще один ARP-запрос, после чего находит файловую
систему в сети, с которой следует произвести загрузку ядра. Для этого inetboot использует протокол bootparams (см. man bootparams для
получения детальной информации о протоколе). После того как файловая
система найдена, с нее по протоколу NFS загружается ядро и ему
передается управление.
При загрузке по сети с использованием DHCP начальный загрузчик из ПЗУ
посылает широковещательный запрос, в котором сообщает MAC-адрес
своего компьютера и его архитектуру, запрашивая в ответ IP-адрес,
параметры загрузки и настройки сети. После получения ответа (детали
протокола DHCP см. в лекции 2 курса "Администрирование ОС Solaris") начальный загрузчик загружает inetboot через сеть, inetboot загружает ядро, которое, в свою
очередь, загружает необходимые ему файлы через сеть, после чего
выгружает inetboot. Стартовые скрипты запускают dhcpagent, который
выполняет оставшуюся часть настроек по DHCP.
При загрузке с диска разделяют два этапа:
Если имя файла ядра указано не как полное имя файла (начинающееся с
символа / ), то такое имя расценивается как относительное и вторичный
загрузчик ищет ядро в каталоге, соответствующем аппаратной платформе
компьютера. Тогда путь к ядру точно будет лежать через каталог /platform/platform-name. Для многих компьютеров SPARC после этого
выполняется поиск в каталоге /platform/hardware-class-name. Если
указано полное имя файла, загрузчик будет пытаться загрузить в
точности тот файл, что указан. После загрузки файла ядра в память
загрузчик передает ему управление.
Если имя файла ядра не указано, и из других настороек непонятно,
какое ядро следует загружать, загрузчик сам решает, какое ядро
требуется, основываясь на том, какое ПО установлено в системе, на
известных свойствах аппаратуры и и на записях в файле
политики загрузки boot.conf. О местоположении и содержимом этого
файла будет сказано ниже, в разделе "Файлы и каталоги, используемые
при загрузке".
В системах с архитектурой SPARC после процедуры самотестирования
компьютера (POST), которую выполняет , запускается загрузчик,
предоставляющий интерфейс среды OpenBoot. В этой среде можно вводить
команды в командной строке в ответ на приглашение среды. Приглашение
среды представляет собой слово
ok
Здесь мы рассмотрим команду boot среды OpenBoot.
Синтаксис команды boot предполагает возможность указания загрузочного
устройства и дополнительных аргументов:
boot [device] [arguments]
Если дать команду boot без параметров, то будет выполнена загрузка с
устройства по умолчанию. По умолчанию загрузка производится с того
устройства, которое указано в переменной boot-device или diag-device
в ПЗУ (boot-device и boot-file используются diag-device и diag-file.
Аргументы команды boot могут быть многострочными, они не
анализируются загрузчиком OpenBoot, а передаются вторичному
загрузчику как есть. Если команде boot переданы какие-нибудь
аргументы, содержимое переменных boot-file и diag-file игнорируется.
Например, если дана команда
boot -s
то подстрока -s расценивается как аргумент, а переменные boot-file и diag-file не принимаются во внимание.
Если команды
boot net
и
boot cdrom
если они даны без аргументов, то они будут использовать содержимое
переменных boot-file и diag-file как путь к файлу ядра. Стало быть,
если boot-file содержит имя 64-разрядного ядра, а вы пытаетесь
загрузиться с CD-ROM командой boot cdrom, то загрузка не состоится,
если на CD-диске имеется только 32-разрядное ядро.
Для загрузки в специфическом boot
соответствующие аргументы, в ответ на приглашение ok вводится
команда:
boot -as - загрузка ядра, используемого по умолчанию, в
однопользовательском boot kernel/unix -as - принудительная загрузка 32-разрядного ядра в
однопользовательском boot kernel/sparcv9/unix -as - принудительная загрузка
64-разрядного ядра в однопользовательском Для более детального изучения команды boot в вашей системе следует
использовать man boot ; помните, что на некоторых платформах, в
зависимости от , могут наблюдаться отклонения от схемы,
описанной здесь и в документации.
На компьютерах x86 загрузка состоит из двух разных этапов:
boot.bin и способен считать ядро с
диска из файловой системы UFS, компакт-диска или через сеть с
использованием NFS.
После возвращения управления от /etc/bootrc, который управляет дальнейшим процессом загрузки.
Обычный /etc/bootrc предлагает администратору ввести символ b для
загрузки с определенными ключами и аргументами, символ i для запуска
интерактивного командного интерпретатора, и любой другой символ - для
загрузки ядра с установками по умолчанию.
Для загрузки в специфическом boot
соответствующие аргументы:
> вводится командаb kernel/unix -as - загрузка ядра, используемого по умолчанию, в
однопользовательском
Некоторые старые компьютеры SPARC технически способны работать с
64-битной версией Solaris, но им может требоваться обновление для того, чтобы эта работа стала в действительности
возможной. Если вы обладаете как раз такой системой и установили
64-битный Solaris, то при загрузке этот факт будет обнаружен и вы
получите сообщение о том, что следует обновить. вслед за
этим загрузчик выберет 32-разрядное ядро, и загрузка продолжится.
Процессоры
Компания Sun утверждает, что комбинация команд, вызывающая нештатную остановку процессора, не может быть сгенерирована компилятором языка высокого уровня, и более того, даже практически не может встретиться в написанных на ассемблере программах, если только эта программа не написана специально для того, чтобы вызвать эту ошибку.
В тех системах, где вероятность запуска такой "зловредной" программы
мала, а пользователи работают только с обычными приложениями,
полученными из надежных источников или собранных из исходных текстов
языка высокого уровня типа С, администратор может явным образом
потребовать у загрузчика выполнять загрузку 64-разрядного ядра при /platform/platform-name/boot.conf:
ALLOW_64BIT_KERNEL_ON_UltraSPARC_1_CPU=true
После того как ядро загружено в память и ему передано управление, оно
начинает загрузку модулей. В этот момент ядро еще не умеет читать
файлы из файловой системы UFS, так как драйвер файловой системы еще
не загружен. Поэтому для чтения модулей ядро использует ufsboot.
После того как загружено достаточно модулей для монтирования корневой
файловой системы и самостоятельного продолжения загрузки, ядро
выгружает ufsboot и продолжает загрузку самостоятельно. Ядро монтирует
указанные в /etc/vfstab файловые системы и запускает процесс /sbin/init для перехода к /etc/inittab обозначен как initdefault. Процесс /sbin/init, в свою
очередь, запускает те программы и скрипты, которые перечислены в /etc/inittab.
В Solaris 9 ядро настраивается динамически, т.е. изменить параметры
ядра можно как при перезагрузке системы (изменив заранее файл
конфигурации ), так и во время работы, на лету. Поэтому
ядро называется динамическим. Оно состоит из небольшой статической
части и множества модулей, которые загружаются динамически, по мере
необходимости. Многие модули загружаются автоматически при
Чтобы узнать, какие модули загружены в настоящий момент, следует выполнить команду
modinfo
Модули ядра хранятся в каталогах /kernel и /usr/kernel, специфичные
для аппаратной платформы модули лежат в каталогах /platform/`uname -m`/kernel и /platform/` uname -i`/kernel (если
такие есть).
Специфические указания того, какие модули загружать при , который считывается
ядром при загрузке. В этом файле можно также указать дополнительные
параметры, которые надо передать модулям при загрузке.
В частности, используют, чтобы указать:
Стандартный файл выглядит примерно так:
*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) вы пренебрегли вопреки голосу разума, то неверный
файл может вызвать ошибку при загрузке и система не
загрузится. Если это случилось, то:
boot -a для интерактивной загрузки; system , укажите имя резервной
копии (например, /etc/system.bak ); system указывайте /dev/null - тогда все значения
будут приняты по умолчанию.Как видно из приведенного примера, большинство строк в
выглядят так:
set параметр=значение
Например, параметр ядра MAXUSERS устанавливается в значение 50
следующей командой:
set maxusers = 50
Обратите внимание на то, что параметры статической части ядра (фактически, файла unix) устанавливаются без ссылки на модуль, а параметры, применимые к модулям, - с указанием имени модуля:
set модуль:параметр=значение
Длина команды в файле не должна превышать 80 символов,
строки, начинающиеся со знака звездочки "*" или решетки "#"
интерпретируются как комментарии.
Чтобы проверить, какие значения имеют настраиваемые sysdef, которая показывает список
обнаруженных устройств,
* * Hostid * 0284521a * * i86pc Configuration * * * Devices * * +boot (driver not attached) memory (driver not attached) aliases (driver not attached) chosen (driver not attached) i86pc-memory (driver not attached) i86pc-mmu (driver not attached) openprom (driver not attached) options, instance #0 packages (driver not attached) delayed-writes (driver not attached) itu-props (driver not attached) isa, instance #0 motherboard (driver not attached) PNP0501 (driver not attached) lp (driver not attached) fdc, instance #0 fd, instance #0 fd, instance #1 (driver not attached) i8042, instance #0 keyboard, instance #0 mouse, instance #0 bios (driver not attached) bios (driver not attached) pci, instance #0 pci8086,7190 (driver not attached) pci8086,7191, instance #0 display, instance #0 pci20c,d041 (driver not attached) pci8086,7110 (driver not attached) pci-ide, instance #0 ide, instance #0 cmdk, instance #0 ide, instance #1 sd, instance #0 pci8086,7112, instance #0 pci8086,7113 (driver not attached) pci1014,138, instance #0 pci1014,138, instance #1 pci1436,440 (driver not attached) pci1014,136 (driver not attached) pci10c,d041 (driver not attached) used-resources (driver not attached) objmgr, instance #0 cpus (driver not attached) cpu, instance #0 (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 icmp, instance #0 icmp6, instance #0 sad, instance #0 conskbd, instance #0 wc, instance #0 iwscn, instance #0 rts, instance #0 tl, instance #0 keysock, instance #0 spdsock, instance #0 sysmsg, instance #0 cn, instance #0 mm, instance #0 kstat, instance #0 log, instance #0 sy, instance #0 vol, instance #0 random, instance #0 ptm, instance #0 pts, instance #0 ksyms, instance #0 devinfo, instance #0 * * Loadable Objects * * Loadable Object Path = /platform/i86pc/kernel * drv/cpc hard link: sys/cpc strmod/vuid2ps2 strmod/vuid3ps2 strmod/vuidm3p strmod/vuidm4p strmod/vuidm5p drv/cadp160 drv/smartii drv/elx drv/fd drv/fdc drv/logi drv/lp drv/msm drv/ata drv/dpt drv/mscsi drv/pci-ide drv/sbpro drv/mlx drv/eisa drv/isa drv/kb8042 drv/pci drv/rootnex mach/uppc misc/bootdev misc/emul_80387 misc/pci_autoconfig mmu/mmu32 mmu/mmu36 unix * * Loadable Object Path = /kernel * drv/arp hard link: strmod/arp mach/pcplusmp mach/corollary mach/compaq drv/bofi drv/nca drv/clone drv/cn drv/conskbd drv/consms drv/devinfo drv/i2o_bs drv/i2o_scsi drv/icmp hard link: strmod/icmp drv/icmp6 hard link: strmod/icmp6 drv/ip hard link: strmod/ip drv/ip6 hard link: strmod/ip6 drv/ippctl drv/ipsecah hard link: strmod/ipsecah drv/ipsecesp hard link: strmod/ipsecesp drv/iwscn drv/keysock hard link: strmod/keysock drv/llc1 drv/lofi drv/log drv/mm drv/openeepr drv/options drv/pci_to_i2o drv/poll drv/pseudo drv/ptc drv/ptsl drv/random drv/rts hard link: strmod/rts drv/sad hard link: strmod/sad drv/sgen drv/spdsock drv/st drv/sy drv/sysmsg drv/tcp hard link: strmod/tcp drv/tcp6 hard link: strmod/tcp6 drv/tl drv/udp hard link: strmod/udp drv/udp6 hard link: strmod/udp6 drv/wc genunix misc/busra misc/consconfig misc/des misc/fssnap_if misc/gld misc/hpcsvc misc/i2o_msg misc/ipc misc/kbtrans misc/krtld misc/md5 misc/pcicfg misc/pcihp misc/rpcsec misc/scsi misc/seg_drv misc/seg_mapdev misc/sha1 misc/strplumb misc/swapgeneric misc/terminal-emulator misc/tlimod misc/ufs_log drv/chs drv/dnet drv/elxl drv/ieef drv/iprb drv/ncrs drv/pcn drv/pcscsi drv/sd drv/spwr drv/pcmem drv/mega drv/pcic drv/pcs drv/pem drv/pcelx drv/xsvc drv/cpqncr drv/pcram drv/md misc/md_hotspares misc/md_mirror misc/md_notify misc/md_raid misc/md_sp misc/md_stripe misc/md_trans misc/kgss/gl_kmech_krb5 drv/pcser drv/hpfc drv/pe drv/asy drv/cmdk drv/objmgr misc/dadk misc/gda misc/snlb misc/strategy misc/sysinit drv/sk98sol drv/pcata drv/skfp misc/klmmod misc/klmops misc/nfs_dlboot misc/kgssapi misc/rpcsec_gss drv/adp drv/audioens misc/amsrc1 misc/audiosup misc/diaudio misc/mixer drv/cadp drv/cpqhpc drv/hid drv/hubd drv/scsa2usb drv/uhci drv/usb_ac drv/usb_as drv/usb_mid drv/usbprn misc/hidparser misc/usba exec/elfexec exec/intpexec fs/cachefs fs/fifofs fs/hsfs fs/lofs fs/mntfs fs/procfs fs/sockfs fs/specfs fs/tmpfs fs/ufs ipp/ipgpc sched/TS sched/TS_DPTBL strmod/atun strmod/authmd5h strmod/authsha1 strmod/bufmod strmod/connld strmod/dedump strmod/encr3des strmod/encrdes strmod/ldterm strmod/pckt strmod/pfmod strmod/pipemod strmod/ptem strmod/redirmod strmod/rpcmod hard link: sys/rpcmod strmod/timod strmod/tirdwr strmod/ttcompat strmod/tun sys/c2audit sys/doorfs sys/inst_sync sys/kaio sys/msgsys sys/pipe sys/pset sys/semsys sys/shmsys fs/nfs hard link: sys/nfs fs/autofs fs/udfs strmod/usb_ah strmod/usbkbm strmod/usbms strmod/hwc dacf/consconfig_dacf drv/i8042 drv/mouse8042 drv/symhisl drv/pci_pci drv/vgatext misc/nfssrv misc/acpi_intp misc/pcmcia ipp/dlcosmk ipp/dscpmk ipp/flowacct ipp/tokenmt ipp/tswtclmt misc/rsmops exec/coffexec * * Loadable Object Path = /usr/kernel * drv/rsm sched/FSS drv/winlock drv/pm drv/tnf strmod/u8koi8 strmod/u8lat1 strmod/u8lat2 drv/vol drv/dump drv/fssnap drv/kstat drv/ksyms drv/lockstat drv/logindmux drv/ptm drv/pts exec/javaexec fs/fdfs fs/namefs fs/pcfs fs/xmemfs sched/FX sched/FX_DPTBL sched/IA sched/RT sched/RT_DPTBL strmod/rlmod strmod/telmod sys/acctctl sys/exacctsys sys/sysacct drv/llc2 drv/sppp drv/sppptun hard link: strmod/sppptun strmod/spppasyn strmod/spppcomp * * System Configuration * swap files swapfile dev swaplo blocks free /dev/dsk/c0d0s1 102,1 8 1048936 1048936 * * Tunable Parameters * 3866624 maximum memory allowed in buffer cache (bufhwm) 2954 maximum number of processes (v.v_proc) 99 maximum global priority in sys class (MAXCLSYSPRI) 2949 maximum processes per user id (v.v_maxup) 30 auto update time limit in seconds (NAUTOUP) 25 page stealing low water mark (GPGSLO) 5 fsflush run rate (FSFLUSHR) 25 minimum resident memory for avoiding deadlock (MINARMEM) 25 minimum swapable memory for avoiding deadlock (MINASMEM) * * Utsname Tunables * 5.9 release (REL) sola node name (NODE) SunOS system name (SYS) Generic_112234-03 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 module is not loaded * * * Time Sharing Scheduler Tunables * 60 maximum time sharing user priority (TSMAXUPRI) SYS system class name (SYS_NAME)
Процесс запускается ядром сразу после
монтирования файловых систем из /etc/vfstab. После этого
осуществляет переход в тот initdefault в файле /etc/inittab. Переход к этому /etc/inittab:
ap::sysinit:/sbin/autopush -f /etc/iu.ap ap::sysinit:/sbin/soconfig -f /etc/sock2path fs::sysinit:/sbin/rcS sysinit >/dev/msglog 2<>/dev/msglog </dev/console is:3:initdefault: p3:s1234:powerfail:/usr/sbin/shutdown -y -i5 -g0 >/dev/msglog 2<>/dev/msglog sS:s:wait:/sbin/rcS >/dev/msglog 2<>/dev/msglog </dev/console s0:0:wait:/sbin/rc0 >/dev/msglog 2<>/dev/msglog </dev/console s1:1:respawn:/sbin/rc1 >/dev/msglog 2<>/dev/msglog </dev/console s2:23:wait:/sbin/rc2 >/dev/msglog 2<>/dev/msglog </dev/console s3:3:wait:/sbin/rc3 >/dev/msglog 2<>/dev/msglog </dev/console s5:5:wait:/sbin/rc5 >/dev/msglog 2<>/dev/msglog </dev/console s6:6:wait:/sbin/rc6 >/dev/msglog 2<>/dev/msglog </dev/console fw:0:wait:/sbin/uadmin 2 0 >/dev/msglog 2<>/dev/msglog </dev/console of:5:wait:/sbin/uadmin 2 6 >/dev/msglog 2<>/dev/msglog </dev/console rb:6:wait:/sbin/uadmin 2 1 >/dev/msglog 2<>/dev/msglog </dev/console sc:234:respawn:/usr/lib/saf/sac -t 300
В каталогах /etc/rcN.d лежат скрипты запуска системы, то есть те
скрипты, которые запускают и останавливают отдельные приложения.
Имена файлов в каталогах имеют вид KnnNAME или SnnNAME, где nn - это
целое положительное число, а NAME - имя приложения (обычно - демона).
Файлы, начинающиеся с буквы S (start), - это скрипты для запуска приложения, файлы, начинающиеся с K (kill) - для завершения работы приложения. Номер nn определяет порядок запуска скриптов - вначале запускаются те, что имеют меньший порядковый номер.
При переходе в тот или иной initdefault.
То, какие именно скрипты запускать, описано в файле /etc/rcN ( N может
принимать значения от 0 до 6 и s), который, собственно, и вызывается
процессом . Файлы /etc/rcN являются символическими ссылками на
файлы /sbin/rcN (см. файл /etc/inittab выше).
Так, если initdefault =3, а каталог /etc/rc3.d содержит нижеуказанные
скрипты, то первым выполнится S13kdc.master, затем S14kdc, и так все
по порядку (последним будет S90samba ):
README S13kdc.master S14kdc S15nfs.server S16boot.server S34dhcp S50apache S76snmpdx S77dmi S80mipagent S81volmgt S89sshd S90samba
Для перевода системы из одного
В Solaris есть несколько таких программ:
/usr/sbin/shutdown /sbin/init /usr/sbin/halt /usr/sbin/reboot /usr/sbin/poweroff Stop+A или L1+A
Программы /usr/sbin/shutdown, /sbin/init, /usr/sbin/halt выполняют
завершение всех процессов в системе, записывают несохраненные данные
на диск, и переводят систему в новый
Программа /usr/sbin/reboot выполняет все вышеперечисленное и затем
переводит систему в initdefault в /etc/inittab.
Команда /usr/sbin/poweroff обеспечивает переход в .
Последняя команда (комбинация клавиш) доступна только в
SPARC-системах, где соответствующие клавиши есть на клавиатуре, и
посылаемый ими код отрабатывается как аварийный
Самый общий способ shutdown, она есть в
любом варианте UNIX. В Solaris эта программа имеет следующий
синтаксис вызова:
shutdown [-y] [-gпериод_ожидания] [-iрежим]
например
shutdown -y -g0
Эта команда выполняется только привилегированным пользователем для
изменения
По умолчанию, команда переводит систему в
Команда посылает всем интерактивно работающим с системой
пользователям предупреждающее сообщение о том, что система готовится
к переходу в другой shutdown
берет стандартное значение периода ожидания после каждого из этих
сообщений из файла /etc/default/shutdown, если он существует. Если shutdown не может найти файл или не может прочитать значение, она
выдает предупреждение и устанавливает период ожидания в 60 секунд. По
умолчанию, программа запрашивает подтверждение у запустившего ее
администратора, прежде чем начинать остановку демонов и прекращение
процессов.
-y - автоматически отвечает утвердительно на все запросы о желании
перезагрузить систему, чтобы программа shutdown могла работать без
вмешательства администратора;-gпериод_ожидания - позволяет администратору явно указать период_ожидания (в секундах);-iрежим - задает Файл /etc/default/shutdown используется для задания значений,
специфичных для вашей системы.
Программа shutdown ведет себя по-разному в зависимости от количества
интерактивно работающих пользователей. Если в системе работает
несколько пользователей, выдаются предупреждающее и окончательное
сообщение, а также запрос на подтверждение shutdown. Если зарегистрирован только
пользователь, запустивший команду shutdown, или если период ожидания
задан равным нулю, предупреждающее сообщение не выдается.
Если указать ключ -y, то запрос на подтверждение не выводится, так
как предполагается положительный ответ на него.
Помните, что систему всегда следует останавливать перед
При запуске Solaris автоматически начинают работать различные
системные службы (демоны), и перед завершением работы системы они
должны корректно закончить свою деятельность. Команда shutdown
требует от демонов завершения, а также инициирует запись на диск всех
данных из файлового кэша и демонтирование всех файловых систем.
Стоит отметить, что кроме неукоснительно корректного завершения
работы системы с помощью shutdown или аналогичной по смыслу команды,
есть еще один момент, о котором системный администратор должен
помнить: стабильное электропитание. Если пьяный сантехник, ретивая
уборщица или безмозглый помощник научены никогда не выдирать провода
из розеток и всегда выполнять shutdown, это значит, что осталось
установить надежную систему бесперебойного питания. При подключении
UPS к компьютеру убедитесь, что он настроен так, чтобы выдавать
сигнал бедствия компьютеру при отключении электропитания; получив
такой сигнал, система немедленно запустит shutdown и ее работа
завершится безболезненно. Конечно, для систем круглосуточной работы
надо иметь UPS с запасом энергии батарей, достаточным для работы в
течение всего времени восстановления питания.
С помощью программы систему можно перевести в любой
init режим_работы
Кроме описанных выше a, b, c и q. a, b, c - это псевдорежимы, они существуют только для того,
чтобы можно было с помощью запустить отдельные программы,
которые отмечены в /etc/inittab как соответствующие данным
init q
вызывает перечитывание процессом файла /etc/inittab.
Следовательно, если вы изменили этот файл и хотите, чтобы изменения
оказали немедленное влияние на систему, следует дать команду .
Программа telinit является символической ссылкой на , и ее
используют для передачи команд запущенной в данный момент программе .
В ответ на команду вы увидите нечто вроде:
INIT: New run level: 1 Changing to state 1. Unmounting remote filesystems: /vol nfs done. System services are now being stopped. May 14 13:13:22 unknown /usr/sbin/vold[475]: problem unmounting /vol; Interrupted system call <тут что-то еще....> Killing user processes: done. Change to state 1 has been completed. Type control-d to proceed with normal startup, (or give root password for system maintenance):
Вывод, сопровождающий выполнение команды, приведен не полностью.
Обратите внимание на последние две строки; здесь требуется либо
указать пароль привилегированного пользователя root, либо нажать Ctrl-D, в последнем случае произойдет обычная загрузка в состояние initdefault.
Для немедленной shutdown -y -g0 ) можно
использовать halt. От shutdown она отличается тем, что не
предупреждает интерактивно работающих пользователей о скорой
Команда halt перед остановкой выполняет запись кэшируемых данных на
диск.
Команда reboot обычно используется для завершения работы в
однопользовательском shutdown, потому что она не
выполняет скрипты /etc/rcN.d/K* ) и не посылает никаких
сообщений пользователям. Команда reboot выполняет запись кэшируемых
данных на диск, так же, как и halt.
С помощью reboot можно передать ключи загрузчику среды OpenBoot,
например, для изменения конфигурации таблицы устройств следует дать
команду
reboot -- -rs
Как видно из примера, чтобы отделить ключи самой reboot от тех, что
будут переданы загрузчику, перед ключами последнего ставятся два
дефиса подряд.
Команда poweroff переводит систему в . Пользователи не оповещаются об изменении K* не выполняются, и в случае, если
аппаратура компьютера поддерживает программное
Последняя функция на компьютерах x86 доступна не всегда (или
недоступна вовсе), по крайней мере, ноутбук IBM ThinkPad 390X,
который я использовал для эксперимента, без проблем выключался,
работая под Windows XP и, даже не пытаясь выключаться под Solaris 9,
выдавал такие же надписи об halt:
... syncing file systems... done Type any key to continue
В некоторых случаях операционная система перестает отвечать на запросы и не откликается даже на команду reboot. В таком случае говорят, что система "зависла". Это явление, надо признать, более знакомо пользователям Windows 98, нежели администраторам Solaris, но тем не менее и с последним такое случается.
Рекомендуют такую "зависшую" систему перезапустить, нажав Stop+A или L1+A (для платформы SPARC). Это должно вызвать передачу управления к . На физических терминалах, подключенных к последовательным
портам, для этой цели возможно использовать клавишу Break.
Некоторые версии OpenBoot поддерживают ряд клавиатурных команд (они вводятся нажатием комбинаций клавиш), которые изменяют поведение OpenBoot при загрузке. Эти клавиши надо нажимать сразу после включения системного блока и держать их несколько секунд до того, как мигнет светодиод на клавиатуре.
К этим клавиатурным командам (keyboard
Stop - пропустить исполнение процедуры начальной инициализации
компьютера POST (Power-on self test); некоторые системы SPARC по
умолчанию и так пропускают исполнение POST, тогда для того, чтобы
выполнить POST, следует нажать Stop+D ;Stop+A - прерывание всех запущенных в настоящее время процессов и
предоставление командной строки в среде OpenBoot;Stop+D - включение diag-switch среды OpenBoot в значение true );Stop+F - включение интерпретатора Forth на первом последовательном
порту; для продолжения инициализации системы дайте команду exit ;
используется при нарушениях работы оборудования;Stop+N - переустановка всех переменных Для изменения комбинаций клавиш, назначенных клавиатурным командам,
надо отредактировать файл /etc/default/kbd. В нем также можно
разрешить или запретить клавиатурные команды. После модификации файла
следует дать команду kbd -i для замены стандартных назначений на
новые.
Следует отметить, что в зависимости от установок безопасности компьютера, изменение клавиатурных команд и доступ к командной строке OpenBoot могут быть запрещены, либо доступ к командной строке может предоставляться по паролю.
Если система безнадежно зависла, следует:
Stop+A или L1+A (или другую комбинацию клавиш, если вы
переопределили стандартные установки в /etc/default/kbd );ok, дать команду sync для синхронизации
файловых систем (записи кэшированных данных на диски);syncing file systems... done, нажать Stop+A
или L1+A еще раз;reset в ответ на приглашение ok ;# who -r run-level 3 May 9 05:29 3 0 S
Если ответ вас удовлетворил, можно начинать работу.
Помните, что выключать компьютер можно только после синхронизации файловых систем, иначе могут возникнуть потери данных и ошибки в файловой системе.
При включении компьютера следует соблюдать такой порядок действий:
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.