Загрузка ArchLinux по локальной сети

Цель:
загрузить по сети установочный образ Арча посредством PXE, например для последующей его установки или использовать его для чего-нибудь ещё.

PXE - проще говоря это код в микросхеме ПЗУ сетевой карты который получив по сети исполняемый файл (к примеру загрузчик ОС) передаёт ему управление. Всё это работает в пределах локальной сети.

Действующие лица:
Комп1 - здесь крутится любая операционная система с установленным VirtualBox, отсюда будет идти экспансия на Комп2.
Комп2 - железо поддерживающее загрузку по сети, настраиваем в BIOS. ОЗУ минимум 384 мб (взято с небольшим запасом).
ISO образ Арча - скачиваем последнюю версию с офф. сайта
Сеть между Комп1 и Комп2 - соединение через роутер с включённым DHCP-сервером. (можно и без DHCP и даже напрямую соединить компы но тогда надо будет прописать вручную IP-адрес для Arch1)

И так, приступим.

Фаза первая.
Настройка и запуск окружения виртуальной машины (ВМ) на Компе1.
---------------------------------------------------------------------------------------------------
Есть два варианта создания окружения ВМ, либо через консоль, либо через графический интерфейс.
Вот минимально необходимая конфигурация создания окружения ВМ через скрипт (красным выделено то что может поменяться):

#!/usr/bin/env bash
# Создадим новую ВМ с именем Arch1:
vboxmanage createvm --name Arch1 --ostype ArchLinux_64 --register

# Оборудуем контроллером для подлючения CD-привода:
vboxmanage storagectl Arch1 --name "sata" --add sata

# Добавим dvd привод и подключим iso образ, здесь образ archlinux-2014.01.05-dual.iso и этот sh-скрипт лежат в одной папке:
vboxmanage storageattach Arch1 --storagectl "sata" --port 0 --type dvddrive --medium ./archlinux-2014.01.05-dual.iso

# Выделим памяти:
vboxmanage modifyvm Arch1 --memory 256

# Установим сеть в режим сетевого моста, здесь enp2s0 имя сетевого интерфейса хост системы (Комп1), может отличатся:
vboxmanage modifyvm Arch1 --nic1 bridged --bridgeadapter1 enp2s0

# Запуск ВМ:
vboxmanage startvm Arch1

или же запустить напрямую из консоли:
vboxmanage createvm --name Arch1 --ostype ArchLinux_64 --register && vboxmanage storagectl Arch1 --name "sata" --add sata && vboxmanage storageattach Arch1 --storagectl "sata" --port 0 --type dvddrive --medium ./archlinux-2014.01.05-dual.iso && vboxmanage modifyvm Arch1 --memory 256 --nic1 bridged --bridgeadapter1 enp2s0 && vboxmanage startvm Arch1
Как и скрипт эту команду следует запускать из директории где лежит iso образ Арча, либо сменить путь.

Возможно пригодятся команды выключить и удалить ВМ:
vboxmanage controlvm Arch1 poweroff
vboxmanage unregistervm Arch1 --delete

Простым вариантом также будет создание среды ВМ через графический интерфейс виртуалбокса.



Запускаем ВМ


Фаза вторая.
Настройка ВМ Arch1 на Компе1 для раздачи по сети установочного образа.
-----------------------------------------------------------------------------------------
Пусть у нас имеется:
сеть - 192.168.3.0
маска - 255.255.255.0
роутер - 192.168.3.1
У вас возможно будут свои значения. Узнать можно посмотрев вывод команд ip a и ip r

DNSMASQ - это DHCP, TFTP и DNS в одном флаконе.
Настраиваем его:
rm /etc/dnsmasq.conf
nano /etc/dnsmasq.conf
port=0
interface=enp0s3
bind-interfaces
dhcp-range=192.168.3.35,192.168.3.40,2h
dhcp-boot=/arch/boot/syslinux/lpxelinux.0
dhcp-option-force=209,boot/syslinux/archiso.cfg
dhcp-option-force=210,/arch/
dhcp-option=option:router,192.168.3.1
enable-tftp
tftp-root=/run/archiso/bootmnt/

здесь может поменяться только:
interface - это интерфейс виртуальной сетевой карты Arch1.(посмотреть можно в выводе команды ip l)
dhcp-range - диапазон адресов в пределах нашей локальной сети и время аренды адреса. С этого диапазона будет выдан IP-адрес для Арч2 (выберите уникальный диапазон адресов локальной сети, можно предварительно пропинговать ping <ip-adres>).
dhcp-option=option:router - указываем основной шлюз (IP нашего роутера) чтобы на Арч2 сразу иметь доступ в глобальную сеть.

Запускаем dnsmasq:
systemctl start dnsmasq

если что то не заладилось смотрим:
systemctl status dnsmasq
будет указан номер строки конфига dnsmasq где допустили ошибку.

если что-то поменяли или исправили в конфиге то сервис нада перезапустить:
systemctl restart dnsmasq

Запускаем веб-сервер для раздачи iso образа :
darkhttpd /run/archiso/bootmnt/
darkhttpd/1.8, copyright (c) 2003-2011 Emil Mikulic.
listening on: http://0.0.0.0:80/

Фаза третья.
Загрузка по сети установочного образа Arch2 на Компе2.
---------------------------------------------------------------------------------------------------------------------
Запускаем Комп2.
Если что-то пошло не так то на Арч1 во второй консоли (Alt+F2) проследим за событиями dnsmasq:
journalctl -u dnsmasq -f

Мы используем для загрузки образа HTTP протокол.


Если всё ОК то мы увидим строку приглашения Арч2. С этого момента Арч1 нам больше не понадобится.
Нам также будет доступна и глобальная сеть, если конечно указанный шлюз ведёт во внешний мир.



Всё, теперь можно начать установку Арча на Комп2 или к примеру использовать Arch2 для восстановления системы.

upd 2014.01.11
Прежде чем читать всё остальное: зачем виртуальная машина?
elsonador
Прежде чем читать всё остальное: зачем виртуальная машина?

Ну во первых переносимость, всё точно также будет работать и под Linux, Windows, MacOS, BSD, да и вообще везде где только можно запустить виртуальную машину.

Во вторых не засоряется основная система, можно конечно всё потом обратно привести в порядок но зачем ? всё необходимое есть в установочном образе надо только настроить и запустить. А если всё это нужно только единожды то тем лучше.

В третьих относительная простота и масштабируемость, точнее сказать, имея скачанный установочный образ Арча и экспортируемые настройки ВМ второй Арч можно поднять менее чем за пять минут, в основном время забирает правка конфига dnsmasq при условии конечно что тот кто ставит понимает что делает.

---
В общем всё это может понадобится если надо запустить/установить Арч на системе где нету возможности поднять установочный образ Арча ни с помощью USB ни CD/DVD или иного способа кроме сети.
red
непредвиденных коалиций
кхмм... кто с кем может вступить в коалицию?
такие дела.
cucullus
red
непредвиденных коалиций
кхмм... кто с кем может вступить в коалицию?
с DHCP-сервером Арч1.

Если у нас в сети больше чем два компа, а DHCP роутера и DHCP Арч1 работают в перекрывающихся диапазонах то есть вероятность получить двум компам одинаковый IP адрес, что несомненно должно привести к конфликту.

п.с.
возможно я неправильно выразился, поменял слово коалиций на коллизий.
Система-то не засоряется, при условии что виртуальная машина установлена. И без неё мусора не так уж и много надо.

red
В общем всё это может понадобится если надо запустить/установить Арч на системе где нету возможности поднять установочный образ Арча ни с помощью USB ни CD/DVD или иного способа кроме сети.

Не представляю, что бы это могло быть за устройство.
elsonador
Не представляю, что бы это могло быть за устройство.

Например старый комп, или нетбук у которого накрылись USB-порты. Или нету под рукой рабочих дисков и флешек. В общем ситуации разные бывают.

У меня вот так было:
Решил приспособить в хозяйстве старый компьютер который без дела пылился в углу. Модель 2002 года. CD-привод в нём на удивление ещё дышит но к сожалению бесполезен так как CD-дисков у меня нету, а DVD-диски он естественно не читает. Конечно можно было поставить DVD-RW-привод с АТА разъёмом от боле нового компа но вот беда он сгорел лет 5 назад, и с тех пор я полностью отказался от DVD.
Далее USB. Так как это довольно таки старая модель то и юсб в нём отнюдь не 2.0, а старый ламповый USB-1.1 с которого у меня так и не получилось загрузится. Несмотря на то что мат плата всё же поддерживает загрузку с юсб (по крайней мере в биос есть такая возможность) у меня так и не завелось.
Так что остался вариант установки системы только через сеть. Немного поэкспериментировав пришёл к варианту описанному выше. Возможно кому-то пригодится, поэтому решил подробно описать и выложить.

п.с.
дополнение.
недавно принесли комп, который оказался ещё старее чем тот на котором проводилось всё вышеописанное. Ни cd/dvd, ни нормального usb, ни даже hdd(сказали что занесут в другой раз). К сожалению по сети загрузится в этот раз не получилось так как памяти всего кот наплакал 256 мб, да и добавить из имеющегося в наличии старого компа тоже никак нельзя, уж очень раритетная она оказалась.
Так как по сети образ весь грузится в память, а уж потом с него устанавливается, то это накладывает ограничения на минимальный объём ОЗУ. Для арча чтобы загрузится по сети и начать установку минимально необходимый размер будет чуть больше 300мб (x86, для х64 где-то на 10-15мб больше).
Пришлось более плотно поэкспериментировать с plop-ом. В конечном итоге мне всё же удалось загрузится, но скорость работы оказалась черепашьей, что не смертельно но крайне непродуктивно.
Виртуальная машина не нужна, TFTP должно быть достаточно.

Из компьютера всегда можно вынуть жёсткий или подключить ещё один - установочный. С нетбуком может пройти тот же вариант.
elsonador
TFTP должно быть достаточно.
а как же DHCP-сервер ?

elsonador
Из компьютера всегда можно вынуть жёсткий или подключить ещё один - установочный. С нетбуком может пройти тот же вариант.
Вынутый жёсткий диск не гарантия решения проблемы.
По поводу "подключить ещё один - установочный", это сработает если во первых имеется в наличии жёсткий диск с подходящим интерфейсом, а во вторых он должен быть установочным, то есть его надо предварительно подготовить. А с нетбуком тут вообще без вариантов туда можно впихнуть только один жёсткий диск.
Да и в любом случае это всё может затянутся больше чем на 5-10 минут.

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

p.s.
Самый идеальный вариант - установка Арча с помощью силы мысли :)
но пока его ещё не изобрели.
dhcp не надо, адреса задать вручную.
 
Зарегистрироваться или войдите чтобы оставить сообщение.