Установит линукс по сети

Установка 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.

В этом случае система поставится целиком из интернет-репозитория, а диск нужен будет только для запуска процесса установки.

Источник

Myx.Ostankin

Вы здесь

Инсталляция Linux по сети с Windows-машины. Грабли и сложности

Немножко философских размышлений

Понятие «инсталляционный диск» постепенно уходит в прошлое. Действительно, зачем нужен инсталляционный диск, если есть скоростной безлимитный Интернет, позволяющий, не сходя с места, скачать самую последнюю версию программы и тут же ее установить? А поскольку скоростной Интернет потихоньку становится явлением уже почти повсеместным, то и онлайн-дистрибутивы набирают все бо́льшую и бо́льшую популярность, вытесняя диски в коробочках.

Немножко особняком здесь стоят операционные системы. Действительно, скачать и установить обычную программу несложно: компьютер с работающей операционной системой и сайт покажет, и инсталлятор скачает, и установит. Пользователю нужно только кнопочки Yes да Next нажимать время от времени. А вот как установить саму операционку, да еще и на чистый компьютер? Раньше без специальной загрузочной дискеты было не обойтись. Причем даже когда операционки стали распространяться на компакт-дисках, все равно нужна была работающая операционка, которая могла бы создать загрузочную дискетку с образа, расположенного на компакт-диске. Потом появились загрузочные компакт-диски, и процесс установки стал значительно легче: всунул диск, включил компьютер, инсталлятор сам запустился, нашел все диски, спросил, куда будем ставиться — и понеслась.

Но диски тоже потихоньку сходят с арены, уступая более компактным и надежным (а в последнее время еще и более объемным) USB-флешкам.
И хотя сейчас CD/DVD-привод пока еще есть практически в каждом компьютере, многие ноутбуки (а в особенности — нетбуки) уже жертвуют этой громоздкой железякой для экономии места. Действительно, а зачем он нужен, если все необходимое можно скачать через Интернет, в крайнем случае — передать через флешку?

Читайте также:  Систем которые не являются операционными yandex ios android windows google linux cms

Вопрос кажется риторическим — но ровно до тех пор, пока на такой ноутбук не потребуется поставить операционку. И первыми, надо полагать, с этой проблемой сталкиваются производители и продавцы — в самом деле, надо же как-то на продаваемые ноутбуки ставить предустановленную Windows операционную систему, и хотелось бы делать это с минимальными трудозатратами. Вот тут на помощь и приходит технология инсталляции по сети.

На самом деле, технология запуска рабочей станции по программе, загружаемой из локальной сети, не так уж и нова — ей уже лет тридцать, но до сих пор она использовалась преимущественно коммуникационными железками вроде маршрутизаторов или мини-АТС. Видимо, как раз нетбуки и стали тем спусковым крючком, который породил спрос на включение в материнские платы возможность установки операционной системы путем скачивания инсталлятора с сервера. А что — удобно: подключил к специальному загрузочному серверу несколько десятков ноутбуков (на сколько портов хватило), сервер раздал каждому по загрузчику, операционка сама поставилась, ноутбуки готовы к продаже, подключаем следующую партию. Вот оно, массовое производство.

Эволюция материнских плат

А раз уж такая функция появилась на ноутбучных материнках, то почему бы ей не появиться и на обычных — чипсеты-то везде одинаковые. Вообще, эволюция материнских плат — прелюбопытнейшая вещь. Первые материнки, которые я застал, без дополнительных устройств могли подключать разве что только клавиатуру и мышь. Даже жесткий диск к ним подключать напрямую было нельзя — нужно было ставить специальную плату с дисковыми контроллерами, называемую «мультипортовой платой». Но это было настолько давно, что неудивительно, что нынешний пятнадцатилетний мальчик, перерыв весь Интернет, так и не смог найти внятное объяснение, что же такое «мультяшка — байты растеряшка» — еще бы, явление прекратило существовать примерно в первый год его жизни, поскольку к этому времени практически все материнки содержали встроенный контроллер дисков.

Время шло, и материнки обрастали все бо́льшим количеством устройств: сначала в них стали встраивать подешевевшую до невозможности звуковую карту, затем присоединилась и сетевая карта, а потом на материнках стали появляться и простенькие видеокарты. Сейчас уже трудно поверить, что когда-то всего этого не было, и все эти устройства приходилось покупать и устанавливать отдельно.

И вот, современные материнки уже настолько умны, что они в момент включения могут сами отыскать в локальной сети сервер, который скажет им, что нужно запустить. Причем на компьютере может не быть ни одного диска — все необходимые инструкции и программы будут также получены по сети.

От теории к практике

Недавно мне довелось попробовать это все на личном опыте. Я устанавливал Debian Linux на свой домашний сервер. И, поскольку материнка поддерживает старт через сеть, я решил, что этим грех не воспользоваться. В теории все выглядит очень заманчиво: при включении компьютера крохотный инсталлятор скачивается с соседнего компьютера, после чего инсталлятор выходит в Интернет и скачивает последнюю-распоследнюю версию операционки (т.е. не надо никаких сервиспаков, обновлений, драйверов и прочей фигни). Пользователю остается только выбрать режим установки, указать, куда поставить систему, какие компоненты ставить — в общем, стандартный набор простейших действий.

В конечном итоге у меня все получилось, хотя грабли я собрал, кажется, все, какие только возможно — в процессе даже возникала крамольная мысль: «а не проще ли скачать образ DVD и поставить с него?». Но в итоге все трудности были успешно преодолены, а о встреченных граблях мне хотелось бы рассказать — вдруг кому будет полезно.

Итак, топология сети проста и незатейлива, как и в большинстве домов, где больше одного компьютера: роутер, раздающий интернет, к нему подключены два компа (мой и Юлькин), и туда же был воткнут сервер. Теперь задача: один из компов (очевидно, мой) должен стать устройством, с которого сервер получит инсталлятор Линукса.

Почитав мануалы, я узнал, что загрузка осуществляется по протоколу TFTP. TFTP — это упрощенный FTP, там нет авторизации и есть только две команды: get и put. Гугл мне подсказал, что в винде встроенного TFTP-сервера нет, но его можно установить в виде отдельной приблуды под названием Tftpd32. Скачал, установил. Убедился, что команда tftp localhost put aaa.txt действительно заливает файлик aaa.txt из текущего каталога в рабочий каталог Tftp32. «Полдела сделано», — подумал я оптимистично и распаковал в рабочий каталог файлы инсталлятора Debian.

Читайте также:  Как прописать ip через командную строку windows

А дальше началось самое веселое — нужно было как-то дать понять стартующему серверу, куда лезть за загрузчиком. Сначала я наивно подумал, что он сам просканирует сеть и найдет там TFTP-сервер. Надо ли говорить, что ничего подобного не случилось. Включившись, сервер некоторое время показывал мне вот такую надпись:

после чего добавил:

На этом загрузка по сети закончилась.

Ну, логично, подумал я. В настройках Tftp32 есть вкладка DHCP, и там есть поле Boot File — куда, очевидно, надо вписать pxelinux.0 (это имя загрузчика, я узнал об этом из мануала по установке Debian). Но вот что меня смущало: то, что это поле находится во вкладке DHCP означает, что Tftpd32 должен выступать еще и в роли DHCP-сервера? Так у меня уже есть один, на роутере, зачем мне еще один?

Но поскольку поле Boot File попросту не прописывалось без прочих настроек, очевидно было, что Tftpd32 все-таки придется сделать DHCP-сервером. Получается, «кто девушку ужинает, тот ее и танцует» — т.е. кто айпишник выдал, тот и инструкции по загрузке выдает, иначе никак.

Мне очень не хотелось отключать DHCP на роутере, поэтому я попробовал прямо так — а вдруг не подерутся? Но они, естественно, подрались. Ладно, выставил на всех компах статические адреса, отключил DHCP на роутере, попробовал заново. Включаю опять сервер — кажется, дело сдвинулось с мертвой точки. Tftp32 даже написал, что у него запросили файлик pxelinux.0, и показал прогресс-бар загрузки. который замер на нуле и больше не двигался.

Еще поползал по Интернету, покурил различные мануалы. Осознал, что старт происходит не просто по протоколу TFTP, а по некоей его модификации под названием PXE. Нашел в настройках Tftpd32 неприметную галочку PXE Compatibility. Поставил. Еще раз стартовал сервер. Опять ничего не грузится: No boot filename received.

Оказывается, Tftpd32 после каждого изменения настроек сбрасывает рабочий каталог на каталог по умолчанию (тот, куда он сам установился). Я выругался, вернул каталог на место и снова стартовал сервер. Помогло. Пискнув, сервер гордо отобразил экран инсталлятора Debian Linux.

Облегченно вздохнув и мысленно возликовав, я начал установку. Все вроде бы шло как по маслу, но когда мне предложили выбрать адрес зеркала, с которого будет вестись установка, я столкнулся с очередной проблемой. Какое бы зеркало я ни выбрал, я получал одну и ту же ошибку:

Squeeze — это кодовое название версии Debian 6.0 — самой актуальной на данный момент. Ну не может такого быть, чтобы она нигде не поддерживалась! Более того, слазив по адресу ftp://ftp.us.debian.org/debian/dists/squeeze, я убедился, что этот каталог вполне себе существует и доступен. Явно это у меня где-то очередной косяк.

Самое странное, что в Интернете я не нашел четкого описания причин этой проблемы, но, чуть-чуть подумав, допер сам. Ошибка возникает при попытке инсталлятора исполнить команду wget -q http://ftp.uk.debian.org/debian//dists/squeeze/Release -O — | grep -E ‘^(Suite|Codename):’. Причина ошибки не анализируется, поэтому отсутствие конкретного файла и недоступность всего зеркала целиком трактуются одинаково — т.е. даже если зеркало недоступно целиком, пользователь получит вводящее в заблуждение сообщение, мол, «на данном зеркале твоя версия не поддерживается».

А причиной недоступности, очевидно, было то, что я в настройках DHCP в Tftpd32 забыл указать адрес DNS-сервера — поэтому загрузчик не мог разрешить ни одного доменного имени, и, как следствие, не мог достучаться ни до одного зеркала. После того, как я эту проблему исправил, инсталляция прошла успешно.

Источник

Бездисковая загрузка по сети и жизнь после нее

История

Теория

По сути, для того, чтобы система загрузилась ей необходимо 3 компонента — ядро, начальное окружение initramfs и корневой каталог, в котором система будет работать.

Практика

Все действия проводятся на машине с ubuntu precise.

Для начала настроим PXE. Мануалов на эту тему уйма, поэтому я расскажу только самую суть.
Ставим ваш любимый dhcp сервер, например isc-dhcp-server, который будет раздавать машинкам ip адреса и указывать путь к файлу pxelinux.0, который будет отдавать tftp сервер (tftp-hpa или же atftp).

Читайте также:  Логин пароль mac os

Пример конфига 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.

В результате мы получили систему, которая грузится по сети, занимает небольшой объем в памяти, при этом после каждой перезагрузки пропадают все изменения (поэтому надо заранее собирать все нужные продукты жизнедеятельности системы в надежное место).

Все вышеперечисленные способы имеют право на жизнь. Надеюсь, что эта информация вам пригодится, а мне же будет интересно почитать/послушать ваши комментарии.
Спасибо за внимание.

Источник

Оцените статью