LXF100-101:Запуск по сети
(→Установка системы) |
(→Сеть: Загрузка без винчестера) |
||
Строка 112: | Строка 112: | ||
192.168.2.10:/diskless/192.168.2.50 / nfs defaults,nolock 0 0 | 192.168.2.10:/diskless/192.168.2.50 / nfs defaults,nolock 0 0 | ||
+ | |||
+ | ===DHCP, TFTP и другие аббревиатуры=== | ||
+ | |||
+ | Теперь, когда система на сервере полностью установлена, нужно объяснить серверу, как перенести ее на компьютер клиента. Для этого | ||
+ | нам понадобятся ''DHCP''-сервер и ''TFTP''-сервер. '''DHCP''' (Dynamic Host Configuration Protocol – протокол динамической конфигурации хоста) – | ||
+ | это система, с помощью которой компьютер может запросить IP-адрес и другие параметры конфигурации непосредственно из сети. Помните, | ||
+ | что на клиенте нет постоянного хранилища файлов, поэтому хранить | ||
+ | статические настройки сети негде. '''TFTP''' (Trivial File Transfer Protocol – | ||
+ | простой протокол передачи файлов) – это простая система передачи | ||
+ | файлов, удобная для сетевой загрузки, потому что ее можно хранить в | ||
+ | ПЗУ сетевой карты '''PXE'''. Она используется для передачи загрузчика ОС | ||
+ | и ядра на компьютер клиента. | ||
+ | |||
+ | {{Врезка|Заголовок=Chroot’инг|Содержание=А что делать, если в системе необходимо произвести какие-то изменения, например, обновить ПО на клиентских компьютерах? Можно зайти на каждый компьютер клиента и установить новое ПО, но клиент может быть просто выключен, когда вы захотите это сделать. Альтернативный вариант – произвести изменения с сервера с помощью ''chroot''. Выполнив команды | ||
+ | |||
+ | mount -t proc none /diskless/IPaddress/proc | ||
+ | mount --bind /dev/ /diskless/IPaddress/dev | ||
+ | chroot /diskless/IPaddress /bin/bash | ||
+ | mount -a | ||
+ | source /etc/profile | ||
+ | |||
+ | вы окажетесь в командной оболочке системы клиента. Там можно | ||
+ | сделать все необходимое, затем выйти: | ||
+ | |||
+ | umount -a | ||
+ | exit | ||
+ | umount /diskless/IPaddress/proc | ||
+ | umount /diskless/IPaddress/dev | ||
+ | |||
+ | Чтобы каждый раз не набирать эти команды снова, сохраните их как скрипт.|Ширина=300px}} | ||
+ | |||
+ | Серверов '''DHCP''' и '''TFTP''' на свете хватает; ''dnsmasq'' (http://www.thekelleys.org.uk/dnsmasq) является легко настраиваемой комбинацией обоих. | ||
+ | Установка ''dnsmasq'' по умолчанию предоставляет базовый сервис '''DHCP''', но нам потребуется еще кое-что. Установив и запустив ''dnsmasq'', отключите сервер ''DHCP'' в своем маршрутизаторе, если он у вас есть, иначе может возникнуть конфликт. ''Dnsmasq'' будет наблюдать за всей сетью, | ||
+ | а не только за компьютерами без жесткого диска. | ||
+ | |||
+ | Сначала нужно позаботиться, чтобы ''dnsmasq'' всегда выделял клиенту один и тот же IP-адрес. Для этого нужен MAC-адрес клиента (еще | ||
+ | одна аббревиатура). Чтобы получить MAC-адрес, запустите на этом компьютере команду ifconfig или загрузитесь с подключенного диска | ||
+ | или live CD – MAC-адрес зашит в сетевой карте и не может меняться ['''это не совсем так: существуют программы, способные менять MAC-адрес карты, но в условиях данного урока о них можно забыть, – прим.ред.''']. Раскомментируйте строку '''conf-dir=/etc/dnsmasq.d''' в файле '''/etc/dnsmasq.conf''', затем создайте файл '''/etc/dnsmasq.d/local''' и добавьте в него такую строку: | ||
+ | |||
+ | dhcp-host=00:0c:29:d4:cb:2e,192.168.2.50,somename | ||
+ | |||
+ | где '''00:0c:29:d4:cb:2e''' – MAC-адрес. Эта строка означает, что компьютеру | ||
+ | с данным MAC-адресом всегда будет выделяться IP-адрес '''192.168.2.50''' | ||
+ | и имя узла '''somename'''. То же можно проделать и для других компьютеров сети, чтобы им всегда выделялись одни и те же IP-адреса. Прямого | ||
+ | отношения к бездисковой загрузке это не имеет. | ||
+ | |||
+ | Чтобы разрешить загрузку с ''pxegrub'', добавьте в файл строки | ||
+ | |||
+ | log-facility=/var/log/dnsmasq.log | ||
+ | enable-tftp | ||
+ | tftp-root=/diskless | ||
+ | tftp-unique-root | ||
+ | dhcp-boot=/boot/pxegrub | ||
+ | dhcp-option=150,/boot/grub.lst | ||
+ | |||
+ | Первые три строки пояснять не нужно. Четвертая говорит ''dnsmasq'' о | ||
+ | том, что для получения корневого каталога клиента нужно добавить его | ||
+ | IP-адрес к каталогу '''tftp-root'''. Благодаря этому корневой каталог будет | ||
+ | уникален для каждого клиента. Следующая строка определяет расположение файла загрузчика, который отправится клиенту, и последняя – меню загрузчика. Так и слышу ваш вопрос: «Какого загрузчика и меню?». Ну, мы еще не установили их, но сейчас это сделаем. | ||
+ | |||
+ | ===Добавляем сетевой загрузчик=== | ||
+ | |||
+ | Существует два основных загрузчика '''PXE''' – ''pxegrub'' и ''pxelinux''. Мы | ||
+ | возьмем ''pxegrub'', но не потому, что ''pxelinux'' плох: просто ''Grub'' используется в большинстве дистрибутивов, форматы файлов конфигурации | ||
+ | совместимы, и не нужно их изучать. ''Grub'', способный на загрузку с | ||
+ | жесткого диска, CD/DVD и из сети, сейчас становится повсеместным. | ||
+ | Если с ''pxegrub'' что-то не получится или вы желаете не быть как все, | ||
+ | попробуйте ''pxelinux''. Загрузчик входит в состав пакета ''syslinux'' (http://syslinux.zytor.com). | ||
+ | |||
+ | ''Pxegrub'' может быть уже установлен в вашей системе как часть | ||
+ | пакета ''Grub'', в SUSE он находится в '''/usr/lib/grub/pxegrub'''. ''Dnsmasq'' | ||
+ | добавляет к этому пути корневой каталог клиента, и символьная | ||
+ | ссылка на загрузчик будет такой: '''/diskless/192.168.2.50/boot/pxegrub'''. | ||
+ | Можно скопировать файл загрузчика в этот каталог, но символьная | ||
+ | ссылка всегда удобнее: тогда при установке новых версий ''Grub'' не придется переделывать загрузочные каталоги. | ||
+ | |||
+ | Для ''pxegrub'' нужно создать файл меню. Если вы уже редактировали | ||
+ | стандартный файл меню ''Grub'', то поймете его синтаксис. | ||
+ | |||
+ | default 0 | ||
+ | timeout 10 | ||
+ | title=default | ||
+ | root (nd) | ||
+ | kernel /boot/vmlinuz ip=dhcp root=/dev/nfs nfsroot=192.168.2.10:/diskless/192.168.2.50 | ||
+ | |||
+ | Основное отличие – в команде '''root''', где для загрузки вместо привычного '''hd(n,m)''' указано сетевое устройство, и параметрах ядра, задающих использование '''DHCP''' для получения IP-адреса и разделяемого каталога ''NFS'' в качестве корневого раздела. Если нужно указать другие | ||
+ | параметры ядра (такие как '''vga''' или '''noapic'''), просто припишите их к строке настроек. | ||
+ | |||
+ | ===И это функционирует?=== | ||
+ | |||
+ | Пора посмотреть, все ли работает. Для этого включите компьютер клиента и выберите загрузку из сети в настройках BIOS. Должны появиться сообщения, отражающие состояние ''DHCP''; для его отслеживания на | ||
+ | сервере также полезно запустить | ||
+ | |||
+ | {{Врезка|Заголовок=Скорая помощь|Содержание=Уменьшите количество сервисов и других программ, запускаемых при старте системы. Это позволит | ||
+ | значительно ускорить загрузку, поскольку сетевая загрузка с необходимостью медленнее обычной.|Ширина=200px}} | ||
+ | |||
+ | tail -f /var/log/dnsmasq.log | ||
+ | |||
+ | Если все в порядке, то через несколько секунд появится меню ''Grub''. Это значит, что ''DHCP'' и ''TFTP'' работают, и первый тест вами пройден (а | ||
+ | вы думали, что тест будет про аббревиатуры?). | ||
+ | |||
+ | По окончании тайм-аута ''Grub'', или после нажатия '''Enter''', должен запуститься сам сетевой загрузчик. Выглядит это так же, как и обычная загрузка с жесткого диска, разве что медленнее. Если система нормально загружалась на клиентской машине с жестким диском, то и | ||
+ | сейчас все должно работать. Единственная проблема, которая иногда возникает – ''init'' может попытаться еще раз запустить сетевое соединение, разрывая первоначальное, и все остановится, потому что исчезнет корневая файловая система. Решение проблемы зависит от дистрибутива – в некоторых есть возможность не перезапускать сеть, если она уже работает: например, пользователи Gentoo могут добавить строку | ||
+ | |||
+ | config_eth0=( “noop” ) | ||
+ | |||
+ | в файл '''/etc/conf.d/net'''. А можно просто отключить запуск '''eth0''' в утилите управления сервисами вашего дистрибутива. В сетевых настройках | ||
+ | SUSE есть опция управления ''NFSroot'', делающая взаимодействие с сервисами ненужным. Точно так же нужно убедиться в том, что сеть не | ||
+ | отключается и во время выключения компьютера, иначе система вновь потеряет связь со своей корневой файловой системой. В разных дистрибутивах это делается по-разному. Один из вариантов – просто удалить соответствующую символьную ссылку '''K''' в каталоге '''runlevel'''. Это | ||
+ | будет что-то вроде '''/etc/rc5.d/K05network'''. K означает, что этот скрипт запускается при остановке системы для завершения ('''Kill''') сервисов. | ||
+ | Пользователи Gentoo могут воспользоваться хитрым приемом для | ||
+ | предотвращения отключения сети при отключении интерфейса, добавив в файл '''/etc/conf.d/net''' следующие строки | ||
+ | |||
+ | predown() { | ||
+ | return 1 | ||
+ | } | ||
+ | |||
+ | ===А оно работало?=== | ||
+ | |||
+ | На данный момент система должна загрузиться. Если это не так, прежде всего проверьте, смонтировалась ли корневая файловая система. | ||
+ | Поищите в системном файле журнала на сервере любые сообщения, | ||
+ | связанные с ''NFS''. Самый простой способ получить их – перед запуском | ||
+ | компьютера клиента выполнить следующую команду: | ||
+ | |||
+ | tail -f /var/log/messages | grep mountd | ||
+ | |||
+ | Имя файла может различаться в разных дистрибутивах и зависит от | ||
+ | используемого системного сервиса журнала. На компьютере клиента | ||
+ | должно вывестись что-то типа | ||
+ | |||
+ | authenticated unmount request from 192.168.2.50:nnn for /diskless/192.168.2.50 (/diskless/192.168.2.50) | ||
+ | |||
+ | Это значит, что корневая файловая система смонтирована правильно. Увидев сообщение об ошибке, проверьте синтаксис '''/etc/exports''' и | ||
+ | сверьтесь с '''man'''. Проверьте, можете ли вы смонтировать этот ресурс с другого компьютера вашей сети. | ||
+ | |||
+ | Если корневая система смонтирована правильно, все остальное не должно отличаться от обычной загрузки, поэтому проверьте настройки | ||
+ | и конфигурацию ядра. Убедитесь, что вы не забыли добавить в конфигурацию ядра важные драйверы. Однако если вы проверяли установку | ||
+ | на локальном жестком диске и корневая файловая система смонтировалась правильно, все остальное должно «просто работать». Готово! | ||
+ | Теперь у вас есть компьютер без жесткого диска с полной установкой | ||
+ | Linux, который можно использовать точно так же, как «обычный». '''LXF''' | ||
+ | |||
+ | ===Общий доступ к каталогам=== | ||
+ | |||
+ | Если вы хотите запускать несколько компьютеров без диска с одного сервера, то представляете, какой объем дискового пространства | ||
+ | понадобится. Несколько каталогов (особенно '''/usr''' и '''/opt''') можно разделить между клиентскими компьютерами (прочие каталоги не | ||
+ | столь велики, чтоб о них беспокоиться, и одновременно безопасны для общего доступа), что позволит сэкономить около 3 ГБ дисковой | ||
+ | памяти для каждого клиента. Но это непростая задача, требующая знаний в области скриптов загрузки. Просто создать символическую | ||
+ | ссылку с каталога usr одного клиента на другой нельзя, потому что ссылки вне общего доступа NFS не работают. То же относится к монтированию с опцией '''–-bind'''. Можно куда-нибудь поместить общие каталоги '''/usr''' и '''/opt''' (например, в '''/diskless/common''') и добавить их в | ||
+ | файл '''/etc/exports'''. После этого можно добавить строки монтирования '''/usr''' и '''/opt '''в файл '''/etc/fstab''' каждого клиента. | ||
+ | |||
+ | Пока все выглядит просто, но есть большая загвоздка, о которой некоторые из вас уже догадались. Оставить эту задачку вам было | ||
+ | бы жестоко: скрипты ''init'' монтируют общие сетевые ресурсы при загрузке значительно позднее, чем локальную файловую систему, | ||
+ | так как обычно надо дожидаться активизации сетевого интерфейса. Поэтому вам нужно было начать с изменения скриптов инициализации в вашем дистрибутиве. Быть может, игра не стоит свеч: даже если у вас много клиентов, то и дискового пространства много. |
Текущая версия на 14:58, 20 марта 2009
|
|
|
- Диски долой! Научите ПК с Linux загружаться через локальную сеть
Содержание |
[править] Сеть: Загрузка без винчестера
Хотите превратить свой ПК в домашний кинотеатр или завести кластер из однотипных компьютеров? Ответ – сетевая загрузка. Нейл Ботвик все объяснит.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Помните времена, когда компьютерам не были нужны жесткие диски? Amiga и Atari ST загружали все необходимое с дискеты. А еще раньше у 8-битных компьютеров типа Commodore 64 и Spectrum даже и дискет-то не было, все необходимое загружалось из ПЗУ. Сегодня сложно купить компьютер без жесткого диска в несколько сотен гигабайт, но зато загрузить компьютер можно вообще без винчестера. Так называемая «загрузка по сети» позволяет такому компьютеру получить все необходимое с другого компьютера через сеть.
Это рождает два правомерных вопроса: зачем и как. Зачем бы нам это делать? Причин несколько: может быть, вам нужен тихий и прохладный компьютер, а жесткие диски нагреваются и изрядно шумят. Например, в моей гостиной стоит компьютер для работы MythTV, с материнской платой Via EPIA без кулеров и без жесткого диска, абсолютно бесшумный. Объединив все жесткие диски в один большой диск или массив дисков, вместо использования отдельных дисков на каждом компьютере, можно более эффективно обслуживать кластеры. То же справедливо и для компьютерной сети в интернет-кафе или в школьном кабинете информатики. Это не то же самое, что использовать тонкого клиента, когда всю работу выполняет сервер. Компьютер, загружаемый через сеть – это обычный компьютер или рабочая станция; вся разница – что его жесткий диск подключен длинным сетевым кабелем вместо короткого шлейфа.
На второй вопрос (как это сделать?) мы ответим дальше. Как и на первый вопрос, на второй есть несколько ответов, но мы ограничимся только одним. PXE (Preboot eXecution Environment или pixie – среда выполнения перед загрузкой) – самый простой способ обеспечить запуск через сеть, если клиентский компьютер (без жесткого диска) его поддерживает. На большинстве современных материнских плат есть по меньшей мере одна сетевая карта с поддержкой PXE, так что это самый простой вариант; прочие устройства могут потребовать другого подхода, например, установки ПЗУ etherboot (http://www.etherboot.org) на сетевой карте или инициализации процесса с дискеты или CD. Но мы их здесь не рассматриваем.
[править] Как это работает?
Перед тем, как рассматривать загрузку с сети, вспомним, как происходит обычная загрузка с жесткого диска:
- BIOS компьютера ищет код загрузчика ОС (bootloader) в первом секторе жесткого диска и загружает его.
- Загрузчик ОС, используя информацию из файла настройки и пользовательского меню, загружает ядро, передавая ему информацию о местонахождении корневого раздела и другие данные.
- Ядро монтирует корневой раздел и запускает процесс /sbin/init, который загружает все остальное.
Загрузка с использованием PXE очень похожа на обычную загрузку:
- Код PXE в сетевой карте или в BIOS компьютера рассылает по сети расширенный DHCP-запрос.
- Должным образом сконфигурированный сервер возвращает информацию о настройках DHCP, а также адрес сервера загрузки, код сетевого загрузчика и загрузочное меню, подобное обычному меню загрузки Grub или Lilo.
- Когда пользователь выбирает пункт меню (или истекает время ожидания), загрузчик PXE загружает ядро с указанного сервера загрузки, определяя расположение корневого раздела и другие параметры.
- Ядро монтирует корневой раздел с помощью NFS и запускает процесс /sbin/init, который загружает все остальное.
Во всем этом участвуют три сервера: сервер DHCP, отвечающий на начальный запрос, возвращая информацию о настройках, сервер загрузки, содержащий ядро, и сервер NFS, содержащий корневую файловую систему, которая будет монтироваться при загрузке компьютера клиента. Они могут располагаться как на одном компьютере, так и на разных – выбор за вами – хотя проще располагать их вместе, особенно сервер DHCP и серверы загрузки.
Предупреждение о перегрузке аббревиатурами: здесь вы встретите множество ТБС и РТБС. Мы уже использовали PXE, BIOS, DHCP и NFS, а будут и новые. Запомните их, так как чуть позже вас ждут тесты.
[править] Установка системы
Во-первых, нам потребуется установленная система на сервере, с которого мы будем загружаться. Использовать ту систему, которая на нем уже стоит, нельзя: даже если аппаратная часть компьютеров полностью идентична, некоторые детали (особенно настройки системы в /etc) могут различаться. Для каждого клиента нужно установить ОС в отдельный каталог; обычно это /diskless/IPaddress, что позволяет вам хранить все установленные ОС клиентов в одном месте и без конфликтов, потому что два компьютера не могут иметь одинаковые IP-адреса.
Простейший способ выполнить начальную установку системы – это подключить к будущему бездисковому компьютеру винчестер и привод CD/DVD и установить систему обычным образом. Если вы будетe настраивать загрузку по сети в существующей системе, то этот этап уже пройден. Потом содержимое диска можно скопировать в соответствующий каталог на сервере – либо физически подключив диск, либо скопировав файлы через сеть. Поскольку вам когда-нибудь придется открывать сетевой доступ к каталогу сервера, сделаем это сейчас и скопируем файлы. В этом примере адрес сервера 192.168.2.10, а адрес клиента 192.168.2.50. Все команды необходимо выполнять с привилегиями администратора.
На сервере добавьте строки
/diskless/192.168.2.50 192.168.2.0/255.255.255.0(rw,sync,no_root_squash,no_all_squash,no_subtree_check,rw)
в файл /etc/exports, запустите
mkdir -p /diskless/192.168.2.50 exportfs -a exportfs
и убедитесь, что в выводе последней команды есть новый каталог. На клиенте запустите
mkdir -p /mnt/remoteroot mount -t nfs /mnt/remoteroot 192.168.2.10:/diskless/192.168.2.50 rsync -ax / /mnt/remoteroot rsync -ax /home/ /mnt/remoteroot/home/ rsync -ax /boot/ /mnt/remoteroot/boot/
Две последних строки в этом примере нужны только в том случае, когда домашний каталог (home) и каталог загрузки (boot) находятся в различных разделах. Проще установить все в один раздел.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
А что делать, если жесткий диск к клиенту подключить нельзя? Тогда установите систему на сервер в раздел, который позже смонтируете как /diskless. Проверьте, чтобы все настройки, задаваемые в процессе этой установки, были совместимы с аппаратной частью клиентской машины. Не устанавливайте загрузчик, и после перезагрузки сервер загрузится, как обычно. Теперь смонтируйте новый раздел как /diskless, создайте в нем каталог IPaddress и переместите остальное содержимое в этот каталог. Пользователям Gentoo сделать это проще, так как они могут установить систему вручную в каталог /diskless/IPaddress (просто используйте этот каталог при обычной установке вместо /mnt/gentoo).
Удаленная установка системы отличается от обычной установки на локальный диск. Прежде всего, может потребоваться перекомпиляция ядра. На это есть две причины. Первая – ради возможности смонтировать корневой раздел по сети вы должны установить опцию ROOT_NFS=y. Вторая – в большинстве дистрибутивов для загрузки модулей, необходимых для работы оборудования, используется initrd (начальный ram-диск). Хотя к нему можно обращаться через сеть, скорее всего его придется модифицировать, а это посложнее перекомпиляции ядра. Механизмы перекомпиляции ядра выходят за рамки этой статьи, но вы можете найти руководство в LXF89. Пользователи SUSE (по крайней мере 10.2) могут расслабиться – этот дистрибутив уже подготовлен для загрузки по сети с использованием PXE. Если команда
zgrep ROOT_NFS /proc/config.gz
покажет ROOT_NFS=y, ваше ядро готово к сетевой загрузке и следующий абзац можно пропустить.
Непременно вкомпилируйте сетевой драйвер в ядро – не оставляя его отдельным модулем; то же лучше сделать и с остальными драйверами. lspci поможет определить используемое аппаратное обеспечение, после этого система справки ядра должна вывести список необходимых драйверов. В идеальном мире все нужные модули должны вписаться в ядро, а все ненужные – исчезнуть. В жизни так бывает далеко не всегда. В частности, у пользователей часто появляются проблемы после компиляции в ядро драйверов ALSA. Если вы устанавливаете систему на жесткий диск, подключенный к клиенту описанным выше способом, то перед переносом чего-либо на другой компьютер перекомпилируйте ядро – возможно, потребуется несколько попыток, чтобы все получилось.
Последняя задача – отредактировать /etc/fstab. Удалите оттуда все строки, относящиеся к swap-файлу – использовать его в NFS не рекомендуется – и измените строку для корневого раздела на
192.168.2.10:/diskless/192.168.2.50 / nfs defaults,nolock 0 0
[править] DHCP, TFTP и другие аббревиатуры
Теперь, когда система на сервере полностью установлена, нужно объяснить серверу, как перенести ее на компьютер клиента. Для этого нам понадобятся DHCP-сервер и TFTP-сервер. DHCP (Dynamic Host Configuration Protocol – протокол динамической конфигурации хоста) – это система, с помощью которой компьютер может запросить IP-адрес и другие параметры конфигурации непосредственно из сети. Помните, что на клиенте нет постоянного хранилища файлов, поэтому хранить статические настройки сети негде. TFTP (Trivial File Transfer Protocol – простой протокол передачи файлов) – это простая система передачи файлов, удобная для сетевой загрузки, потому что ее можно хранить в ПЗУ сетевой карты PXE. Она используется для передачи загрузчика ОС и ядра на компьютер клиента.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Серверов DHCP и TFTP на свете хватает; dnsmasq (http://www.thekelleys.org.uk/dnsmasq) является легко настраиваемой комбинацией обоих. Установка dnsmasq по умолчанию предоставляет базовый сервис DHCP, но нам потребуется еще кое-что. Установив и запустив dnsmasq, отключите сервер DHCP в своем маршрутизаторе, если он у вас есть, иначе может возникнуть конфликт. Dnsmasq будет наблюдать за всей сетью, а не только за компьютерами без жесткого диска.
Сначала нужно позаботиться, чтобы dnsmasq всегда выделял клиенту один и тот же IP-адрес. Для этого нужен MAC-адрес клиента (еще одна аббревиатура). Чтобы получить MAC-адрес, запустите на этом компьютере команду ifconfig или загрузитесь с подключенного диска или live CD – MAC-адрес зашит в сетевой карте и не может меняться [это не совсем так: существуют программы, способные менять MAC-адрес карты, но в условиях данного урока о них можно забыть, – прим.ред.]. Раскомментируйте строку conf-dir=/etc/dnsmasq.d в файле /etc/dnsmasq.conf, затем создайте файл /etc/dnsmasq.d/local и добавьте в него такую строку:
dhcp-host=00:0c:29:d4:cb:2e,192.168.2.50,somename
где 00:0c:29:d4:cb:2e – MAC-адрес. Эта строка означает, что компьютеру с данным MAC-адресом всегда будет выделяться IP-адрес 192.168.2.50 и имя узла somename. То же можно проделать и для других компьютеров сети, чтобы им всегда выделялись одни и те же IP-адреса. Прямого отношения к бездисковой загрузке это не имеет.
Чтобы разрешить загрузку с pxegrub, добавьте в файл строки
log-facility=/var/log/dnsmasq.log enable-tftp tftp-root=/diskless tftp-unique-root dhcp-boot=/boot/pxegrub dhcp-option=150,/boot/grub.lst
Первые три строки пояснять не нужно. Четвертая говорит dnsmasq о том, что для получения корневого каталога клиента нужно добавить его IP-адрес к каталогу tftp-root. Благодаря этому корневой каталог будет уникален для каждого клиента. Следующая строка определяет расположение файла загрузчика, который отправится клиенту, и последняя – меню загрузчика. Так и слышу ваш вопрос: «Какого загрузчика и меню?». Ну, мы еще не установили их, но сейчас это сделаем.
[править] Добавляем сетевой загрузчик
Существует два основных загрузчика PXE – pxegrub и pxelinux. Мы возьмем pxegrub, но не потому, что pxelinux плох: просто Grub используется в большинстве дистрибутивов, форматы файлов конфигурации совместимы, и не нужно их изучать. Grub, способный на загрузку с жесткого диска, CD/DVD и из сети, сейчас становится повсеместным. Если с pxegrub что-то не получится или вы желаете не быть как все, попробуйте pxelinux. Загрузчик входит в состав пакета syslinux (http://syslinux.zytor.com).
Pxegrub может быть уже установлен в вашей системе как часть пакета Grub, в SUSE он находится в /usr/lib/grub/pxegrub. Dnsmasq добавляет к этому пути корневой каталог клиента, и символьная ссылка на загрузчик будет такой: /diskless/192.168.2.50/boot/pxegrub. Можно скопировать файл загрузчика в этот каталог, но символьная ссылка всегда удобнее: тогда при установке новых версий Grub не придется переделывать загрузочные каталоги.
Для pxegrub нужно создать файл меню. Если вы уже редактировали стандартный файл меню Grub, то поймете его синтаксис.
default 0 timeout 10 title=default root (nd) kernel /boot/vmlinuz ip=dhcp root=/dev/nfs nfsroot=192.168.2.10:/diskless/192.168.2.50
Основное отличие – в команде root, где для загрузки вместо привычного hd(n,m) указано сетевое устройство, и параметрах ядра, задающих использование DHCP для получения IP-адреса и разделяемого каталога NFS в качестве корневого раздела. Если нужно указать другие параметры ядра (такие как vga или noapic), просто припишите их к строке настроек.
[править] И это функционирует?
Пора посмотреть, все ли работает. Для этого включите компьютер клиента и выберите загрузку из сети в настройках BIOS. Должны появиться сообщения, отражающие состояние DHCP; для его отслеживания на сервере также полезно запустить
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
tail -f /var/log/dnsmasq.log
Если все в порядке, то через несколько секунд появится меню Grub. Это значит, что DHCP и TFTP работают, и первый тест вами пройден (а вы думали, что тест будет про аббревиатуры?).
По окончании тайм-аута Grub, или после нажатия Enter, должен запуститься сам сетевой загрузчик. Выглядит это так же, как и обычная загрузка с жесткого диска, разве что медленнее. Если система нормально загружалась на клиентской машине с жестким диском, то и сейчас все должно работать. Единственная проблема, которая иногда возникает – init может попытаться еще раз запустить сетевое соединение, разрывая первоначальное, и все остановится, потому что исчезнет корневая файловая система. Решение проблемы зависит от дистрибутива – в некоторых есть возможность не перезапускать сеть, если она уже работает: например, пользователи Gentoo могут добавить строку
config_eth0=( “noop” )
в файл /etc/conf.d/net. А можно просто отключить запуск eth0 в утилите управления сервисами вашего дистрибутива. В сетевых настройках SUSE есть опция управления NFSroot, делающая взаимодействие с сервисами ненужным. Точно так же нужно убедиться в том, что сеть не отключается и во время выключения компьютера, иначе система вновь потеряет связь со своей корневой файловой системой. В разных дистрибутивах это делается по-разному. Один из вариантов – просто удалить соответствующую символьную ссылку K в каталоге runlevel. Это будет что-то вроде /etc/rc5.d/K05network. K означает, что этот скрипт запускается при остановке системы для завершения (Kill) сервисов. Пользователи Gentoo могут воспользоваться хитрым приемом для предотвращения отключения сети при отключении интерфейса, добавив в файл /etc/conf.d/net следующие строки
predown() { return 1 }
[править] А оно работало?
На данный момент система должна загрузиться. Если это не так, прежде всего проверьте, смонтировалась ли корневая файловая система. Поищите в системном файле журнала на сервере любые сообщения, связанные с NFS. Самый простой способ получить их – перед запуском компьютера клиента выполнить следующую команду:
tail -f /var/log/messages | grep mountd
Имя файла может различаться в разных дистрибутивах и зависит от используемого системного сервиса журнала. На компьютере клиента должно вывестись что-то типа
authenticated unmount request from 192.168.2.50:nnn for /diskless/192.168.2.50 (/diskless/192.168.2.50)
Это значит, что корневая файловая система смонтирована правильно. Увидев сообщение об ошибке, проверьте синтаксис /etc/exports и сверьтесь с man. Проверьте, можете ли вы смонтировать этот ресурс с другого компьютера вашей сети.
Если корневая система смонтирована правильно, все остальное не должно отличаться от обычной загрузки, поэтому проверьте настройки и конфигурацию ядра. Убедитесь, что вы не забыли добавить в конфигурацию ядра важные драйверы. Однако если вы проверяли установку на локальном жестком диске и корневая файловая система смонтировалась правильно, все остальное должно «просто работать». Готово! Теперь у вас есть компьютер без жесткого диска с полной установкой Linux, который можно использовать точно так же, как «обычный». LXF
[править] Общий доступ к каталогам
Если вы хотите запускать несколько компьютеров без диска с одного сервера, то представляете, какой объем дискового пространства понадобится. Несколько каталогов (особенно /usr и /opt) можно разделить между клиентскими компьютерами (прочие каталоги не столь велики, чтоб о них беспокоиться, и одновременно безопасны для общего доступа), что позволит сэкономить около 3 ГБ дисковой памяти для каждого клиента. Но это непростая задача, требующая знаний в области скриптов загрузки. Просто создать символическую ссылку с каталога usr одного клиента на другой нельзя, потому что ссылки вне общего доступа NFS не работают. То же относится к монтированию с опцией –-bind. Можно куда-нибудь поместить общие каталоги /usr и /opt (например, в /diskless/common) и добавить их в файл /etc/exports. После этого можно добавить строки монтирования /usr и /opt в файл /etc/fstab каждого клиента.
Пока все выглядит просто, но есть большая загвоздка, о которой некоторые из вас уже догадались. Оставить эту задачку вам было бы жестоко: скрипты init монтируют общие сетевые ресурсы при загрузке значительно позднее, чем локальную файловую систему, так как обычно надо дожидаться активизации сетевого интерфейса. Поэтому вам нужно было начать с изменения скриптов инициализации в вашем дистрибутиве. Быть может, игра не стоит свеч: даже если у вас много клиентов, то и дискового пространства много.