Руководство системного администратора • третье издание { h h y с п п т п р



Pdf просмотр
страница3/82
Дата12.11.2016
Размер7.94 Mb.
Просмотров12759
Скачиваний0
ТипРуководство
1   2   3   4   5   6   7   8   9   ...   82
Запуск и останов системы
UNIX — сложная операционная система, и процедура ее включения/вы- ключения не сводится к простому нажатию кнопки питания. Поэтому если вы хотите, чтобы система работала корректно, выполняйте операции запуска и останова по всем правилам. Процесс начальной загрузки системы всегда казался загадочным, но он был проще в те времена, когда один производитель поставлял целиком как аппаратную, таки программную часть системы. Сейчас, когда UNIX работает иа персональных компьютерах, необходимо придерживаться правил, установленных компанией Microsoft, что порождает существование многочисленных конфигураций. Несмотря на то, что мы рассматриваем особенности загрузки всех тестовых систем, вы увидите, что горазло больше внимания уделяется системам, установленным на персональных компьютерах, чем системам, выполняющимся на оборудовании собственного поставщика. Хотя данная глава в книге — одна из первых, в ней мы иногда оперируем понятиями, которые подробно рассматриваются лишь через несколько сотен страниц. Поэтому рекомендуем также ознакомиться с главами 5, 12 и Если ваша система загружается без проблем, можно пропустить эту главу и вернуться к ней позже. Отметим, что протекание процесса начальной загрузки зависит От типа используемого оборудования. Приведенная здесь информация верна для общего случая, однако в конкретной системе могут проявиться некоторые отличия.
2.1. Начальная загрузка Подначальной загрузкой подразумевается самозапуск компьютера при включении питания. Поскольку средства операционной системы на данном этапе недоступны, компьютер должен в буквальном смысле "обслужить себя сам. Процесс включает загрузку системного ядра в память и его последующую активизацию. Затем выполняется ряд инициал и зационных задач, после чего система готова к обслуживанию пользователей.
30
Чость I. Основы администрировсния
Начальная загрузка — это период особой уязвимости в жизни системы. Ошибки в конфигурационных файлах, сбои в работе оборудования, повреждения файловых систем могут помешать компьютеру нормально начать работу. Настройка режимов загрузки во многих случаях является одной из первых задач, которую приходится решать администратору в новой системе. К несчастью, эта задача — одна из наиболее сложных, и для ее решения необходимо хорошо знать UNIX. Когда происходит включение питания, запускается на выполнение загрузочный код, хранящийся в ПЗУ. В его обязанность входит запуск ядра Ядро опрашивает состояние оборудования, а затем запускает системный процесс init, идентификатор которого всегда равен 1. Прежде чем на экране появляется регистрационное приглашение, происходит целый ряд событий. Файловые системы должны быть проверены и смонтированы, а системные демоны — запущены. Соответствующие процедуры реализуются с помощью сценариев интерпретатора shell, которые один за другим запускаются процессом init. Стартовые сценарии часто называют "файлами, поскольку они имеют префикс "гс. Он расшифровывается как "run command" — "команда запуска" — и является пережитком, доставшимся UNIX в наследство от операционной системы CTSS. Конкретная структура стартовых сценариев и способ их выполнения зависят от системы Все эти вопросы будут рассмотрены в данной главе. Автоматическая и ручная загрузка Большинство систем может загружаться либо в автоматическом, либо в ручном режиме. В первом случае система загружается самостоятельно, без какого-либо вмешательства извне. Во втором случае она также загружается автоматически, но до определенного момента перед выполнением основных инициализирующих сценариев управление передается оператору (человеку, сидящему за терминалом. В это время система находится в так называемом "однопользовательском режиме. Большинство системных процессов не выполняется, и вход других пользователей в систему невозможен. В повседневной работе почти всегда применяется автоматическая загрузка Типичная процедура загрузки выглядит так пользователь включает питание и ждет (ждет, пока система перейдет в диалоговый режим. Системный администратор, однако, обязан не только понимать, как проходит процесс автоматической загрузки, но и знать, как загрузить систему вручную. Загружать систему вручную чаще всего приходится при возникновении проблем, вызывающих прерывание автоматического процесса загрузки. Это могут быть, например, повреждения файловой системы или ошибки в конфигурации сетевой платы. Этапы загрузки Обычно процесс начальной загрузки состоит из шести этапов загрузка и инициализация ядра распознавание и конфигурирование устройств запуск самовыполняющихся системных процессов выполнение команд оператора (только при ручной загрузке выполнение стартовых сценариев переход в многопользовательский режим.
Глово 2. 3 о пуски останов системы
31
Почти все этапы проходят без контроля со стороны администратора. Можно управлять процессом загрузки, редактируя стартовые сценарии, Инициализация ядра
Подробно о ядре рассказывается в главе 12.
Ядро UNIX само по себе является программой, и первый этап начальной загрузки заключается в считывании этой программы в память для последующего выполнения. Имя файла ядра определяется разработчиком конкретной системы, но традиционное его название /unix или /vmunlx. В настоящее время разработчики не придерживаются строго этого соглашения. В большинстве систем загрузка ядра осушестшшется в лва этапа. Сначала в память машины с диска или магнитной ленты считывается (с помощью кода, записанного в ПЗУ) небольшая программа начальной загрузки, которая затем выполняет собственно загрузку ядра. Весь процесс происходит еще вне
UNIX, поэтому в разных системах он реализован по-разному. Ядро выполняет тестовые программы, позволяющие определить, сколько памяти имеется в наличии. Большинство внутренних структур ядра обладают фиксированным размером, поэтому ядро точно знает, сколько памяти нужно зарезервировать для самого себя. Эта память будет недоступной пользовательским процессам В большинстве систем ядро выдает на консоль сообщение об общем объеме физической памяти и объеме памяти, незанятой ядром Конфигурация аппаратных средств Одна из первых задач, стоящих перед ядром, — выявление компонентов аппаратного обеспечения. Создавая ядро для своей системы, вы можете указать, какие устройства оно должно проверять. Когда ядро начинает выполняться, оно пытается найти и инициализировать все устройства, о которых ему было сообщено. Большинство ядер выводят на консоль краткую информацию о каждом обнаруженном устройстве. Информация об устройствах, задаваемая при конфигурировании ядра зачастую является неполной. В таких случаях ядро пытается получить необходимые сведения, опрашивая системную шину на предмет наличия устройств и запрашивая нужную информацию у соответствующих драйверов Драйверы отсутствующих или не отвечающих на контрольный сигнал устройств отключаются Даже если позже устройство подключить к системе, оно будет недоступно для процессов до тех пор, пока вы не перезагрузите" машину. Системные процессы После занершения базовой инициализации ядро создает н области памяти, выделенной для процедур пользователя, несколько "самовыполняющихся" процессов. Это происходит в обход стандартного системного вызова fork см. параграф 4.2). Современные системы plug-and-play позволяют подключать периферийное оборудование вовремя работы компьютера. Несмотря на то что эта технология достаточно широко распространена, большинство систем по-прежнему требуют перезагрузки, чтобы новое устройство было корректно распознано и инициализировано.
32 Часть I. Основы администрирования
Число и характер таких процессов определяются типом операционной системы. В системах создаются три процесса
• swapper (идентификатор 0);
• Init (идентификатор 1);
• pagedaemon (идентификатор 2). Число самовыполняющихся процессов в системах семейства Syscem V варьируется
• sched (идентификатор 0);
• Init (идентификатор 1); различные обработчики сигналов ядра. В Linux процесс с идентификатором 0 отсутствует, а обшее число само выполняющихся процессов зависит от версии ядра
• Init (идентификатор I); различные обработчики сигналов ядра (kflushd, kupdate, kpiod. kswapd). Из всех упомянутых процессов только init является полноценным пользовательским процессом остальные фактически представляют собой части ядра операционной системы, которые были преобразованы в процессы из концептуальных соображений. После этого ядро больше не принимает участия в процедуре начальной загрузки системы. К этому моменту, однако, еще не создан ни один из процессов, управляющих базовыми операциями (например, входом пользователей в систему, и большинство демонов не запушено. Обо всех этих задачах позаботится (в некоторых случаях косвенно) процесс init. Действия оператора (только при ручной загрузке) Если систему нужно запустить в однопользовательском режиме, оператор указывает при запуске специальный флаг в командной строке, а ядро передает эту информацию процессу init. При загрузке в однопользовательском режиме обычно выдается приглашение ввести пароль пользователя root. Если он введен правильно, запускается командный интерпретатор с правами пользователя. Можно не задавать пароль, а просто нажать , после чего загрузка продолжится в многопользовательском режиме. В Red Hat командный интерпретатор запускается без ввода пароля.
|71 Более подробная информация о привилегиях пользователя root содержится в
главе 3.
В однопользовательском режиме оператор может выполнять команды почти также. как ив многопользовательском. Однако обычно автоматически монтируется только раздел диска с корневым каталогом. Другие файловые системы оператор должен смонтировать вручную для того, чтобы использовать Программы, находящиеся вне каталогов /bin, /sbin нли /etc*. Демоны в однопользовательском режиме не запускаются, поэтому команды, зависящие от некоторых серверных процессов (например, mail), работать не будут.
171 Подробнее о файловых системах и их монтировании читайте в главе 5.
Во многих однопользовательских средах корневая файловая система монтируется доступной только для чтения. Если каталог /tmp является частью корневой системы, множество программ, работающих с временными файлами В некоторых системах монтируется также каталог /usr.
Глово 2. 3 о пуски останов системы
33
например, редактор vi), откажутся выполняться. Чтобы исправить подобную ситуацию, необходимо в самом начале однопользовательского сеанса смонтировать каталог / в режиме чтения/записи. Как это сделать, зависит от системы. В большинстве случаев достаточно выполнить команду mouiiL /, а всю необходимую информацию команда возьмет из файла fstab или vfstab. В Red Hat система ведет себя немного "агрессивнее" в однопользова- тельском режиме. К тому моменту, когда отобразится приглашение интерпретатора, система попытается смонтировать все локальные файловые системы. На первый взгляд, это кажется удобным, но если с какой-нибудь файловой системой что-то не в порядке, возникают проблемы. Команда fsck, которая проверяет и восстанавливает поврежденные файловые системы, обычно выполняется в процессе автоматической загрузки. Если система запускается в однопользовательском режиме, команду fsck нужно "прогнать" вручную. Подробно данная команда описана в параграфе 8.4. Когда интерпретатор команд, выполняющийся в однопользовательском режиме, завершит работу, система продолжит загрузку в многопользовательском режиме. Выполнение стартовых сценариев К тому моменту, когда система окажется готова выполнять стартовые сценарии, все "загадочные" этапы процесса загрузки будут завершены. Перед нами еще не полностью загруженная система, но это уже UNIX. Файлы сценариев, по сути, представляют собой обычные командные файлы, которые запускаются процессом init по определенному алгоритму. Точное местонахождение, содержимое и организация стартовых сценариев заслуживают отдельного изучения (см. параграф 2.4). Работа в многопользовательском режиме
Детальное описание процесса регистрации в системе дано в параграфе 7.8.
После выполнения инициализационных сценариев система полностью готова к работе, за одним исключением никто не может в нее войти. Для того чтобы с конкретного терминала можно было попасть в систему, необходимо, чтобы терминал имел свой процесс getty. ожидающий поступления запросов от этого терминала. По окончании работы последнего стартового сценария процесс init порождает все необходимые процессы getty, завершая процесс загрузки Если система сконфигурирована для работы н графическом режиме, процесс init также порождает соответствующие регистрационные процессы, такие как xdm. gdm или dtlohin. Необходимо помнить, что процесс init продолжает играть важную роль даже после завершения начальной загрузки. В системах он имеет всего два состояния однопользовательское и многопользовательское. В других системах у него есть один однопользовательский и несколько многопользовательских "уровней выполнения, определяющих, какие ресурсы системы будут доступны пользователю. Уровни выполнения описаны в параграфе 2.4. В Solaris используется более сложная процедура регистрации.
34
Насть I Основы администрирования

2.2. Загрузка системы на персональном компьютере До сего момента описывалась обшая процедура загрузки. Теперь некоторые наиболее важные (и сложные) ее этапы необходимо рассмотреть подробно, проанализировав особенности работы каждой из тестовых операционных систем. А начнем мы опять с зтапа включения питания и загрузки ядра. На традиционном UNIX-оборудоваиии это простой процесс, заслуживающий лишь нескольких строк описания. Однако если система установлена на персональном компьютере, то все значительно сложнее. Нам придется дать много вводной информации, чтобы вы смогли понять суть происходящих событий. Если вы не работаете на персональном компьютере, переходите непосредственно к параграфу 2.3. Чем персональный компьютер отличается от фирменного оборудования Когда компьютер загружается, начинает выполняться код, записанный в ПЗУ Точное его местоположение и структура зависят от типа оборудования. В компьютерах, созданных специально для UNIX, код "прошивается" разработчиком, который заранее задает алгоритм подключения устройств, базовой инициализации сети и распознавания локальных файловых систем. Это очень удобно для системного администратора. Ему достаточно ввести имя нового файла ядра, а код ПЗУ автоматически обнаружит и прочитает этот файл. На персональных компьютерах код начальной загрузки представлен в виде базовой подсистемы ввода-вывода — BIOS (Basic Input/Output System), которая чрезвычайно упрощена в сравнении с фирменным кодом машин. В действительности в BIOS существует несколько уровней кода один для самого компьютера, другой для видеоплаты и еше один для адаптера, еслв таковой имеется. Встроенный код BIOS знает о некоторых устройствах, расположенных на материнской плате, в частности о контроллере IDE (и жестких дисках, клавиатуре, последовательных и параллельных портах. А адаптеры распознают только те устройства, которые подключены непосредственно к ним. Выявление конфликтов между различными уровнями BIOS может стать настоящим кошмаром Сложнее всего понять то. как происходит выбор устройства, с которого должна быть произведена загрузка. Процесс загрузки ПК В современных компьютерах программы "умнее, чем раньше Они позволяют на этапе загрузки входить в режим конфигурирования, удерживая нажатой одну или две клавиши. Как правило, названия этих клавиш отображаются на экране, чтобы их ненужно было искать в документации. В режиме конфигурирования можно выбрать, с какого устройства требуется производить загрузку. Как правило, это дисковод для гибких дисков, первый дисковод CD-ROM или первый жесткий диск IDE. Нам бы хотелось объяснить вам, как все работает, но, к сожалению, это невозможно, так как данная стадия процесса загрузки находится под контролем производителей персональных компьютеров них многочисленных программ.
Глово 2. 3 о пуски останов системы
35
Они устанавливают свои собственные правила игры, которых приходится придерживаться. Когда компьютер определил, с какого устройства следует загружаться, производится считывание первых 512-ти байтов с диска. Этот сегмент диска известен как главная загрузочная запись (ГЗЗ). В ней содержится программа, которая сообщает компьютеру о том, в каком разделе диска находится программа вторичной загрузки (загрузчик ОС. Дополнительная информация о разделах дисков напер сон аль н ы х компьютерах и главной загрузочной записи приводится в главе 8. Стандартная программа ГЗЗ дает компьютеру указание извлечь загрузчика ОС из первого раздела диска. Linux и F r e e B S D поддерживают более сложные программы, которые знают, как работать снес коль к ими операционными системами и ядрами. Когда программа ГЗЗ находит раздел, с которого будет выполнена загрузка, она пытается запустить загрузочную программу, связанную с этим разделом. В случае успеха этой программе передаются полномочия подал ь ней шей загрузке ядра.
L I L O : загрузчик Загрузчик L I L O невероятно сложен ив тоже время ужасно бестолков. В нем поддерживается множество возможностей, отсутствующих у других загрузчиков, нонет некоторых элементарных свойств. Загрузчик L I L O входит в состав практически всех дистрибутивов Linux, включая. При первой установке системы инст а л ля ц ионные сценарии создают копию сост ан дар т н ы ми параметрами загрузки. Как- топ о влиять на этот процесс нельзя. L I L O нет а к уж необходим для загрузки Linux, но это часть системы. Придется научиться ее любить.
L I L O может быть установлен в главную загрузочную запись диска или в загрузочную запись корневого раздела Linux. Конф игу р и ров ан и е и инсталляция загрузчика осуществляется с помощью программы, которая извлекает параметры конфигурации из файла /etc/Iilo.conf Чтобы изменить настройки загрузчика, достаточно отредактировать этот файл и повторно запустить программу lilo. Эту процедуру необходимо проделывать всякий раз при изменении процесса загрузки — в частности, каждый раз. когда добавляется новый загрузочный разделили создается новое ядро. Конф игу р и ров ан и е L I L O Ниже приведено содержимое файла для системы, в которой имеется рабочее и резервное ядро- b o o t = - / d e v / h d a r o o t - / d e v / h d a l i n s t a l l - / b o o t / b o o t . b m a p ^ / b o o t / m a p d e l a y - 2 0 i m a g e - / v m l i n u z l a b e l - l m u x r e a d - o n l y i m a g e - / v m l i n u z - b a c k u p l a b e l - b a c k u p r e a d - o n l y
# помешаем загрузчик в ГЗЭ
# залаем корневой раздел- секундная задержка, дающая пользователю возможность вмешаться загружаемое ядром е т ка ядра
* резервное ядро
36 Часть I Основы администрирования
Каждому возможному сценарию загрузки назначается метка. Введя метку на этапе загрузки, можно сообщить модулю LILO о том, какой из сценариев следует выбрать. Тот сценарий, который указан в файле lilo.conf первым, выбирается по умолчанию. В стандартном сценарии (метка l i n u x ) загружается файл. Флаг r e a a - o n l y указывает на то. что ядро монтирует свою файловую систему в режиме "только чтение. Этот флаг должен всегда присутствовать стартовые сценарии позаботятся о том, чтобы повторно смонтировать раздел в режиме " чтение запись, когда возникнет такая необходимость. Система сконфигурирована таким образом, чтобы в случае неудачи загрузить резервное ядро файл /vmllnuz-backup). Подобная возможность является очень удобной. Если запустить программу Шо без аргументов, она создаст и инсталлирует загрузчика, сообщив о том, какие ядра доступны. Рядом с названием основного ядра будет отображена звездочка. При наличии ошибок в файле lilo.conf они не будут обнаружены до тех пор, пока процедура инсталляции загрузчика не достигнет середины. Система окажется в переходном состоянии.
Не перезагружайте ее, пока программа lilo не завершится успешно. Чтобы не попасть в подобную ситуацию, запускайте программу со п ц и ей, которая позволяет протестировать файл, ие выполняя инсталляцию. Если ошибок не выявлено, можно переходить к процедуре инсталляции. Честно говоря, непонятно, почему программа Шо не делает такую проверку автоматически. В нашем случае результаты работы программы будут выглядеть так
* lilo
Added l i n u x *
Added b a c k u p При загрузке системы модуль LILO выдаст приглашение следующего вида
LILO: После паузы длиной секунды (параметр d e l a y , равный 1. соответствует
1/10 секунды, а в рассматриваемом файле он равен 20) будет загружено ядро /vmlinuz и смонтирован первый раздел первого I D E - диска в качестве корневого раздела. Список сценариев загрузки можно просмотреть, нажав клавишу <ТаЬ>:
LILO: <ТаЪ> l i n u x b a c k u p
LILO: Чтобы загрузить резервное ядро, введите его метку в строке приглашения. Загрузчик Модуль загрузки во FreeBSD прости эффективен. Он разделен на две части одна находится в главной загрузочной записи, а вторая — в корневом разделе FreeBSD. Обе части инсталлируются раздельно. Первичный загрузчик инсталлируется с пом о ш ъ ю команды boolOcfjg Например, команда
# bootOcfg -В /dev/wdo
помещает первую часть загрузчика в ГЗЗ первого I D E - диска системы. Здесь практически ничего ненужно менять (а чаще всего это сделать просто
Глово 2. 3 о пуски останов системы
37
невозможно. В процессе загрузки модуль просматривает список доступных дисков (извлекается из BIOS) и находит разделы, которые, по его мнению, являются загрузочными. Перечень разделов отображается в виде небольшого меню
F1 FreeBSD
F2 Windows
D e f a u l t : F] Дополнительную информацию о тонкой настройке первичного загрузчика можно получить на странице интерактивного руководства, посвященной программе bootOcfg. Второй модуль непосредственно отвечает за загрузку FreeBSD и позволяет пользователю передать ядру дополнительные параметры. Инсталляция модуля осуществляется с помощью команды disklabel -В. Программа disklabel является достаточно мошной она обладает множеством опций и поддерживает почти все дисковые накопители. Вот как она обычно вызывается
• disklabel -В /dev/vdOsl
Здесь вторичный загрузчик записывается в первый раздел первого диска. Параметры конфигурации вторичный загрузчик извлекает из следующие файлов
• /boot/loader.conf
• /boot/loader.coBf.local
• /boot/defaults/Ioader.conf Последний файл содержит стандартные установки загрузчика и не должен никогда модифицироваться. Все эти установки можно переопределить с помощью файлов loader.conf и loader.conf.local. а также из командной строки на этапе загрузки системы. Информацию о параметрах загрузчика вы можете найти на страницах руководства boot(8) и loader(8).
Мультисисгемная загрузка Поскольку на одном персональном компьютере мотуг работать несколько операционных систем, привычной является ситуация, когда компьютер загружается в мультисистемном режиме. Чтобы добиться этого, необходимо правильно сконфигурировать модуль загрузки, позволив ему распознать имеющиеся на локальных дисках операционные системы. В каждом разделе диска может располагаться собственный вторичный загрузчик, однако главная загрузочная запись только одна. Поэтому необходимо решить, какой из загрузчиков будет главным. Как правило, выбор диктуется особенностями имеющихся операционных систем. Если одной из иих является Linux, то лучше всего в качестве главного загрузчика выбрать
LILO. Исключение составляет случай, когда присутствует Windows NT/2000. Загрузчик этой операционной системы всегда должен помешаться в ГЗЗ. Проблемы при мультисисгемной загрузке Организация мультисисгемной загрузки может быть болезненным процессом. Ниже излагается информация, которая позволит вам сберечь множество нервных клеток.
38
Чость I. Основы администрировсния
Когда на компьютере с мультисисгемной загрузкой планируется установить одну из клиентских версий Windows (95. 98 или Me), это должно быть сделано до того, как будут инсталлированы остальные системы. Данные версии Windows ел н шк ом птуиы и не предполагают, что на компьютере может быть установлена какая-нибудь другая ОС. Они всегда занимают первый раздел первого диска, перезаписывая в процессе инсталляции существующие программы загрузки. Аналогичное правило применяется вот ношении всегда инсталлируется первой. Причины этого могут быть разными, ио результат всегда один. Загрузчик N T / 2 0 0 0 очень хочет инсталлировать себя в главную загрузочную запись и быть Самым Главным. Сопротивление бесполезно. Чтобы заставить этого загрузчика распознавать разделы UNIX, необходимо предварительно инсталлировать UNLX и загрузиться с дискеты или компакт-диска. Затем нужно прочитать первые 512 байтов раздела U N I X загрузочный сектор раздела) и записать их в файл. Этом о ж но сделать с помощью команды dd. Вот пример ее использования в Linux:
# d d i f = / d e v / h d a 2 o f = l i n u x . b i n b s = 5 1 2 c o u n t = l Далее следует скопировать этот файл в раздели добавить в файл конфигурации загрузчика NT запись о том, как загружаться с использованием данного файла. Все. что для этого требуется. — поместить в файл C:\bool.ini строку с указанием пути к файлу и метки. В случае Linux эта строка будет выглядеть так С : \ l i n u x . b i n - " L i n u x " Дополнительную информацию о структуре файлам о ж но получить в интерактивной базе знаний на узле support.microsofi.com. Если Linux и Windows NT/2000 сосуществуют вместе, загрузчик L I L O должен быть инсталлирован в раздел Linux, так как главная загрузочная запись уже занята Для этого достаточно в файле lilo.conf поместить в параметр b o o t ссылку на раздел Linux. Например, если ОС Linux инсталлирована на втором разделе первого диска, строка будет иметь следующий вид b o o t = / d e v / h d a 2 Это действие должно быть проделано до того, как вторичный загрузчик будет записан в файл и скопирован в раздел N T . По сути, весь процесс должен повторяться каждый раз, когда требуется повторный запуск программы. Мул ь тис ист ем но е конф игу р и ров ан и е L I L O Если LILO является главным загрузчиком (например, иа компьютере установлены системы Linux и Windows 98), начните со стандартного процесса конфигурирования LILO, описанного выше. Затем по мере необходимости можно добавлять записи для других операционных систем в файл. Вот как будет выглядеть запись, предназначенная для загрузки Windows из первого раздела первого диска o t h e r = / d e v / h d a l l a b e l = windows t a b l e
/ d e v / h d a
Глово 2. 3 о пуски останов системы
39
Ниже приведен полный текст файла для случая, когда Windows загружается из первого раздела, Linux — из второго, a FreeBSD — из третьего b o o t / d e v / h d a * помешаем загрузчик в ГЗЭ первого писка



Поделитесь с Вашими друзьями:
1   2   3   4   5   6   7   8   9   ...   82


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал