- Как воспользоваться сетевой загрузкой (PXE) для Ubuntu LiveCD
- Обзор
- Предварительные требования
- Как это работает?
- Сделайте так, чтобы файлы Ubuntu были доступны на сервере
- Создайте общий ресурс NFS
- Настройка меню PXE
- Что можно делать
- Установка Ubuntu по сети
- Содержание
- Настройка сервера для установки
- Настройка сервера сетевой загрузки
- TFTP сервер
- Веб-сервер Apache
- DHCP сервер
- Установка по при помощи Minimal CD
- Бездисковая загрузка по сети и жизнь после нее
- История
- Теория
- Практика
Как воспользоваться сетевой загрузкой (PXE) для Ubuntu LiveCD
Т.к. до нас добралась последняя версия Ubuntu, мы решили отметить это событие, показав вам, как сделать ее доступной в вашей сети централизованным образом с помощью сетевой загрузки (PXE).
Обзор
Мы уже рассказали, как установить и настроить сервер PXE в статье «Что такое сетевая загрузка (PXE) и как ей можно пользоваться» , в данном руководстве мы расскажем вам, как добавить Ubuntu LiveCD в качестве варианта загрузки компьютера через сеть.
Вы еще не используете Ubuntu как систему номер один в качестве инструмента для устаранения непроладок, диагностики и восстановительных процедур ? Она, может быть, сможет заменить все, чем вы пользуетесь в настоящее время. Кроме того, как только в компьютер будет загружена живая система Ubuntu, можно будет выполнить такую же настройку ОС, как вы это делаете обычно. Как только вы перейдете к использованию Ubuntu с загрузкой через сеть, то даже если вы ранее пользовались версией на CD, вам больше не потребуется искать компакт-диски, которые забыты в устройствах CD.
Предварительные требования
- Предполагается, что вы уже настроили сервер FOG так, как это описано в нашем руководстве «Что такое сетевая загрузка (PXE) и как ей можно пользоваться» .
- Все предварительные требования, указанные в руководстве по настройке системы FOG, относятся и к данному случаю.
- Данная процедура использовалась для того, чтобы загружать по сети системы от Ubuntu 9.10 (Karmic Koala) и до 11.04 (Natty Narwhal). Ее можно использовать и для других дистрибутивов, похожих на Ubuntu (например, Linux Mint), но это не проверялось.
- Вы увидите, что в качестве редактора мы используем VIM, это только потому, что я привык к нему . Вы можете пользоваться любым другим редактором, который вам нравится.
Как это работает?
В целом процесс загрузки Ubuntu LiveCD, как мы все знаем, происходит следующим образом:
- Вы вставляете диск в привод компакт-дисков, а BIOS знает, как использовать компакт-диск так, чтобы получить доступ к программе загрузки (isolinux), которая располагается на компакт-диске.
- Программа isolinux отвечает за выбор меню. После того, как вы выберите загрузочную запись, например, «Start or install Ubuntu» (Запуск или установка Ubuntu), она вызывает файлы ядра + initrd (исходный диск RAM), копирует их в память и передает им параметры.
- Теперь в оперативной памяти под управлением ядра + initrd начинается процесс загрузки, при этом будут использоваться переданные параметры, в которых определяется, например, следующее: должна ли показываться заставка, необходимо ли выдавать данные максимально информативно и т.п.
- Когда скрипты inirtrd закончат загрузку драйверов и информацию об устройствах, они найдут файлы Ubuntu LiveCD, которые продолжат процесс загрузки. В нормальной ситуации поиск происходит на локальном физическом устройстве cdrom.
Для сетевой загрузки:
- Вместо локального носителя, такого как компакт диск, клиент загружается, используя свою сетевую карту (PXE) и получает по протоколу TFTP программу PXElinux.
- Так же, как программа Isolinux, программа PXElinux отвечает за выбор меню. После выбора загрузочной записи, он вызывает файл ядра + файл initrd системы Ubuntu, копирует их в памяти и передает им параметры.
- Теперь в оперативной памяти под управлением ядра + initrd начинается процесс загрузки, при этом поиск дополнительной информации должен происходить не в загрузочных файлах на локальном физическом устройстве cdrom на клиентской машине, а на общем ресурсе нашего сервера FOG.
Это возможно потому, что создатели Ubuntu добавили работу с сетями, интегрировав в файл ядра + файл Initrd драйвера сетевых карт и протоколы.
За это можно сказать только спасибо команде Ubuntu .
Сделайте так, чтобы файлы Ubuntu были доступны на сервере
Первое, что нужно сделать, чтобы файлы Ubuntu были доступны на сервере. Вы можете просто скопировать их с компакт-диска или извлечь их из файла ISO, и это будет прекрасно работать. С учетом сказанного, мы сделаем автомонтирование файла ISO. Хотя это и не обязательно, но когда вы так поступаете, это позволит вам воспользоваться статьей «Как обновить Ubuntu ISO без повтороной загрузки» для обновления версии Ubuntu, загружаемой через сеть, не в выполняя всю процедуру с нуля, и заменить всего лишь один файл для того, чтобы выполнить все обновление.
Автору настоящего руководства предпочитает иметь еще пару последних версий системы до тех пор, пока не будет проверено, что самая новая версия системы абсолютно стабильная и беспроблемная. Именно поэтому мы делаем подкаталог и точку монтирования соответствующей версии, но вы можете этого не делать и пользоваться единственной точкой монтирования обновлений.
- Скопируйте файл ISO в каталог /tftpboot/howtogeek/linux
- Создайте точку монтирования:
- Отредактируйте файл fstab для того, чтобы можно было монтировать файл ISO автоматически:
- Добавьте в файл fstab точку монтирования ISO: Примечание: Несмотря на две изображаемые строки, эта запись должна представлять собой одну строку.
- С помощью следующей команды проверьте, что точка монтирования работает:
- Если все выполнено так, как надо, то вы с помощью следующей команды сможете прочитать содержимое файла ISO:
Создайте общий ресурс NFS
Хотя процедура загрузки начинается с использования PXE, основная нагрузка смещается на общий ресурс NFS, расположенный на сервере. Поскольку в настоящей статье мы используем наш сервер FOG, компоненты NFS и некоторые варианты конфигурации были за нас разработаны командой FOG, и все, что мы должны сделать, это добавить к ним наш общий ресурс Ubuntu.
- Отредактируйте файл exports для того, чтобы добавить новый общий ресурс:
- Добавьте к нему указатель на нашу точку монтирования ISO:
- Перезапустите сервис NFS для того, чтобы настройки вступили в силу:
Настройка меню PXE
Отредактируйте меню Linux stuff:
На первый взгляд все, что добавлено выше, может выглядеть непонятным, но все, что вам нужно сделать, это заменить * на адрес IP вашего сервера NFS/PXE.
Если быть более точным, то указанный выше текст означает следующее:
- Создание новой записи PXE в подменю «Linux» под названием «Ubuntu 11.04».
- Благодаря параметру « MENU DEFAULT» эта запись будет выбираться автоматически при входе в подменю «Linux».
- Указание клиенту взять с помощью TFTP файл ядра + файл initrd из относительного пути в каталоге /tftproot из howtogeek/linux/ubuntu….
- Указание скриптам initrd монтировать файловую систему root, находящуюся в общем ресурсе NFS, как абсолютный путь :/tftpboot/howtogeek…
Примечание: Я попытался (безуспешно ) использовать для имя DNS вместо адреса IP; возможно, что на этой стадии процесса загрузки сервис DNS просто не поддерживается … Если вы сумели добиться успеха, то сообщите об этом.
Что можно делать
Теперь у вас должна быть возможность загрузить Ubuntu на клиентской машине с помощью PXE (обычно используется клавиша F12).
На данном этапе мы предлагаем вам потратить некоторое время для того, чтобы разобраться, что еще вы можете делать с этим выдающимся инструментальным средством:
И — последнее, если вы создаете свой Ubuntu ISO с помощью сборки в режиме onlin e, то вы можете добавить в ваш экземпляр Ubuntu, загружаемый с помощью PXE все перечисленные выше статьи.
В следующей статье мы расскажем, как через сеть загружать некоторые другие утилиты.
Источник
Установка Ubuntu по сети
Содержание
Ubuntu, как и многие другие дистрибутивы Linux, можно легко установить по сети. Для этого вам всего лишь потребуется сетевое соединение с компьютером, который будет служить сервером для установки. BIOS вашего компьютера должен для этого поддерживать загрузку по сети.
Настройка сервера для установки
Прежде всего вам потребуется компьютер с Ubuntu или с другим дистрибутивом Linux (данная инструкция написана для Ubuntu), с которого вы будете устанавливать систему (сервер загрузки по сети), и ISO образ Alternate диска с необходимой версией Ubuntu.
Настройка сервера сетевой загрузки
Для установки всего необходимого лучше использовать aptitude, которая не входит в стандартную поставку Ubuntu начиная с версии 10.10. Поэтому сначала ставим aptitude через любую программу установки пакетов или командой
Далее ставим всё необходимое:
Ключ -R нужен для того, чтобы atftpd поставился без inetd сервера, который вам совершенно не нужен.
Теперь пора настроить все компоненты.
TFTP сервер
Откройте файл /etc/default/atftpd в любом текстовом редакторе с правами суперпользователя, например, так:
Измените первую строчку с
Кроме этого запомните каталог, который находится в конце строчки OPTIONS . Скорее всего это будет /srv/tftp , но в старых Ubuntu может быть и /var/lib/tftpboot . Редактируем файл /etc/default/tftpd-hpa:
вписываем, запомненный каталог
Теперь просто запустите atftpd :
Теперь создайте в каталоге из OPTIONS папку ubuntu. Далее везде будем считать, что используется каталог /srv/tftp :
На этом настройка TFTP закончена.
Веб-сервер Apache
Что-либо менять в настройках Apache не требуется, достаточно сделать созданный в предыдущем разделе каталог ubuntu доступным через HTTP . Для этого создайте на него симлинк из рабочей папки Apache:
DHCP сервер
В этом файле необходимо изменить следующие настройки:
Теперь необходимо перевести второй компьютер в режим загрузки по сети. После этого Вы должны увидеть экран установки Ubuntu.
Установка по при помощи Minimal CD
Если вы по каким-то причинам не можете использовать полноценный диск с Ubuntu, но всё же в вашем компьютере есть CD привод и подключение к интернету, то вы можете поставить систему по сети, загрузившись с маленького диска Minimal CD.
В этом случае система поставится целиком из интернет-репозитория, а диск нужен будет только для запуска процесса установки.
Источник
Бездисковая загрузка по сети и жизнь после нее
История
Теория
По сути, для того, чтобы система загрузилась ей необходимо 3 компонента — ядро, начальное окружение initramfs и корневой каталог, в котором система будет работать.
Практика
Все действия проводятся на машине с ubuntu precise.
Для начала настроим PXE. Мануалов на эту тему уйма, поэтому я расскажу только самую суть.
Ставим ваш любимый dhcp сервер, например isc-dhcp-server, который будет раздавать машинкам ip адреса и указывать путь к файлу pxelinux.0, который будет отдавать tftp сервер (tftp-hpa или же atftp).
Пример конфига dhcp сервера. В примере pxe-сервер находится по адресу 10.0.0.1.
Запускаем tftp сервер (в ubuntu он имеет init-скрипт, но вполне вероятно, что вам придется запускать его и через inetd/xinetd).
Проверяем работоспособность. Кладем файл в каталог /var/lib/tftpboot и пробуем стянуть его tftp клиентом.
В принципе неважно, где вы возьмете файл pxelinux.0, так как он является просто начальным загрузчиком, в который мы передаем то, что надо грузить дальше.
Вы можете сделать красивую менюшку в загрузчике, но сейчас нам это не нужно, поэтому мой pxelinux.cfg/default выглядит так
rootfs
Образ rootfs собираем через debootstrap, чрутимся в него и ставим необходимые программы. Настраиваем сеть, hostname, фаервол и прочее, чем больше сделаем настроек, тем больше будет образ. Главное не забудьте сменить пароль на рута.
С нашим минимальным набором система получилась весом 200Мб.
Initramfs
В этом примере мы будем забирать образ корневой фс с веб-сервера, расположенного на нашем сервере сетевой загрузки, то есть на 10.0.0.1. Решение было таким просто потому, что в нашем initramfs была утилита wget. Чтобы не тянуть большой объем данных по сети, мы решили сжать образ. Это можно было бы сделать и обычным tar, но можно попробовать squashfs, тем более, что обычно в initramfs tar не встроен, с другой стороны, ничего не мешает его туда добавить.
Squashfs
Squashfs — это сжимающая файловая система, которая включена в ядро с версии 2.6.29. С ее помощью можно заархивировать каталог, примонтировать на loop устройство и читать с него, для записи же необходимо провести процедуру добавления файлов в архив. Так как при обращении к squashfs, вы читаете из архива, то это дает дополнительную нагрузку на cpu.
Для более эфферктивного сжатия вы можете использовать опцию -comp, чтобы установить тип сжатия, по умолчанию используется gzip.
Далее надо научить init из initramfs забирать образ корня и помещать его в оперативную память.
init в initramfs — это скрипт на sh, который производит разбор опций из cmdline, монтирует фс, делает switch_root и запускает гланый init-процесс системы.
Воспользуемся этим и допишем свои опции для cmdline. Напишем скрипт ram, который будет вызываться при значении опции boot=ram.
Через параметр rooturl можно указывать откуда качать образ корневой фс. Для работы со squashfs необходимо подгрузить ее модуль в ядро. Указываем в /etc/initramfs-tools/initramfs.conf BOOT=ram и пересобираем initramfs
Включаем машинку, на которой будем тестировать, и смотрим на происходящее. После успешной загрузки мы получили бездисковую систему, которая занимает в памяти около 300Мб, при этом мы может писать в нее, но после ребута, система вернется в свое первоначальное состояние.
В это примере, мы использовали squashfs просто для сжатия образа, но почему бы нам не попробовать примонтировать корневой раздел в squashfs и не посмотреть, что получится? Меняем наш скрипт, в функции do_rammount() оставляем только монтирование squashfs.
Пересобираем initramfs, запускаем, смотрим. Система загружается в режиме ro, но зато занимает в памяти всего около 180Мб.
В каких-то случаях монтирование в режиме ro это хорошо, но нас это не устраивает, но и просто так тратить оперативную память нам тоже не хочется. Выход же был найден при помощи Aufs.
Aufs
Aufs позволяет делать каскадно-объединённое монтирование файловых систем — одну в режиме только на чтение, а вторую в rw. Работает она в режиме copy-on-write, то есть все изменения записываются на rw систему и после этого чтение производится с нее же.
Опять переписываем наш скрипт.
В фукнцию mountroot() добавляем
А фукнцию do_rammount() приводим к следующему виду:
Пересобираем initramfs, запускаем, смотрим. Система занимает в памяти 181Мб, при этом мы можем менять ее, писать, читать. Все изменения хранятся отдельно в /mnt/rw, а сама система хранится в /mnt/ro.
В результате мы получили систему, которая грузится по сети, занимает небольшой объем в памяти, при этом после каждой перезагрузки пропадают все изменения (поэтому надо заранее собирать все нужные продукты жизнедеятельности системы в надежное место).
Все вышеперечисленные способы имеют право на жизнь. Надеюсь, что эта информация вам пригодится, а мне же будет интересно почитать/послушать ваши комментарии.
Спасибо за внимание.
Источник