Інсталяція Linux по мережі з Windows-машини

Інсталяція Linux через мережу з Windows-машини. Граблі та складності

Трохи філософських роздумів

Поняття "інсталяційний диск" поступово відходить у минуле. Справді, навіщо потрібний інсталяційний диск, якщо є швидкісний безлімітний Інтернет, що дозволяє, не сходячи з місця, завантажити останню версію програми і тут же її встановити? А оскільки швидкісний Інтернет потихеньку стає явищем вже майже повсюдним, то й онлайн-дистрибутиви набирають все більшої та більшої популярності, витісняючи диски в коробочках.

Трохи окремо тут стоять операційні системи. Справді, завантажити та встановити звичайну програму нескладно: комп'ютер із працюючою операційною системою і сайт покаже, і інсталятор завантажить, і встановить. Користувачеві потрібно лише кнопки Yes і Next натискати іноді. А ось як встановити саму операційну систему, та ще й на чистий комп'ютер? Раніше без спеціальної завантажувальної дискети не обійтися. Причому навіть коли операційки стали поширюватися на компакт-дисках, все одно потрібна була працююча операційна система, яка могла б створити завантажувальну дискетку з образу, розташованого на компакт-диску. Потім з'явилися завантажувальні компакт-диски, і процес установки став значно легшим: засунув диск, увімкнув комп'ютер, інсталятор сам запустився, знайшов усі диски, запитав, куди ставимося - і помчала.

Але диски теж потихеньку сходять з арени, поступаючись компактнішим і надійнішим (а останнім часом ще й більш об'ємним) USB-флешкам. І хоча зараз CD/DVD-привод поки ще є практично в кожному комп'ютері, багато ноутбуків (а особливо - нетбуки) вже жертвують цією громіздкою залізякою для економії місця. Дійсно, а навіщо він потрібний, якщо все необхідне можназавантажити через Інтернет, у крайньому випадку – передати через флешку?

Питання здається риторичним - але рівно доти, поки на такий ноутбук не потрібно поставити операційну систему. І першими, мабуть, з цією проблемою стикаються виробники і продавці - насправді, треба ж якось на ноутбуки, що продаються, ставити встановлену Windows операційну систему, і хотілося б робити це з мінімальними трудовитратами. Ось тут на допомогу і приходить технологія інсталяції по мережі.

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

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

А якщо вже така функція з'явилася на ноутбуках, то чому б їй не з'явитися і на звичайних - чіпсети скрізь однакові. Взагалі, еволюція материнських плат - найцікавіша річ. Перші душі, які я застав, без додаткових пристроїв могли підключати хіба що тільки клавіатуру та мишу. Навіть жорсткий диск до них підключати безпосередньо не можна - потрібно було ставити спеціальну плату з дисковими контролерами, яка називається "мультипортовою платою". Але це було настільки давно, що не дивно, що нинішнійп'ятнадцятирічний хлопчик, перерва весь Інтернет, так і не зміг знайти виразне пояснення, що ж таке "мультяшка - байти розтеряшка" - ще б пак, явище припинило існувати приблизно в перший рік його життя, оскільки до цього часу практично всі материнки містили вбудований контролер дисків.

І ось, сучасні материнки вже настільки розумні, що вони в момент включення можуть самі знайти в локальній мережі сервер, який скаже їм, що потрібно запустити. Причому на комп'ютері може не бути жодного диска - всі необхідні інструкції та програми будуть також отримані через мережу.

Від теорії до практики

Нещодавно мені довелося спробувати все це на особистому досвіді. Я встановлюю Debian Linux на свій домашній сервер. І оскільки материнка підтримує старт через мережу, я вирішив, що цим гріх не скористатися. Теоретично все виглядає дуже привабливо: при включенні комп'ютера крихітний інсталятор скачується з сусіднього комп'ютера, після чого інсталятор виходить в Інтернет і скачує останню-розостанню версію операційної системи (тобто не треба ніяких сервіспаків, оновлень, драйверів та іншої фігні). Користувачеві залишається лише вибрати режим установки, вказати, куди поставити систему, які компоненти ставити - стандартний набір найпростіших дій.

Зрештою, у мене все вийшло, хоча граблі я зібрав, здається, всі, які тільки можливо - у процесі навіть виникала крамольна думка: "А чи не простіше завантажити образ DVD і поставити з нього?". Але в результаті всі труднощі були успішно подолані, а про зустрінуті граблі мені хотілося б розповісти - раптом кому буде корисно.

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

А далі почалося найвеселіше – треба було якось дати зрозуміти стартуючому серверу, куди лізти за завантажувачем. Спочатку я наївно подумав, що він сам просканує мережу та знайде там TFTP-сервер. Чи треба казати, що нічого подібного не трапилося. Увімкнувшись, сервер деякий час показував мені такий напис:

після чого додав:

На цьому завантаження через мережу закінчилося.

Ну, логічно, подумав я. У налаштуваннях Tftp32 є вкладка DHCP, і там є поле Boot File - куди, очевидно, треба вписатиpxelinux.0(це ім'я завантажувача, я дізнався про це з мануалу установки Debian). Але ось що мене бентежило: те, що це поле знаходиться у вкладці DHCP, означає, що Tftpd32 повинен виступати ще й у ролі DHCP-сервера? Так, у мене вже є один, на роутері, навіщо мені ще один?

Але оскільки поле Boot File просто не прописувалося без інших налаштувань, очевидно було, що Tftpd32 все-таки доведеться зробити DHCP-сервером. Виходить, "хто дівчину вечеряє, той її танцює" - тобто. хто айпишник видав, той і інструкції із завантаження видає, інакше ніяк.

Ще поповзав Інтернетом, покурив різні мануали. Зрозумів, що старт відбувається не просто за протоколом TFTP, а за якоюсь його модифікацією під назвою PXE. Знайшов у налаштуваннях Tftpd32 непримітну галочку PXE Compatibility. Поставив. Ще раз стартував сервер. Знову нічого не вантажиться: No boot filename received.

Виявляється, Tftpd32 після кожної зміни налаштувань скидає робочий каталог на каталог за замовчуванням (той, куди він сам встановився). Я вилаявся, повернув каталог на місце і знову стартував сервер. Допомогло. Пискнувши сервергордо відобразив екран інсталятора Debian Linux.

Linux

Найдивніше, що в Інтернеті я не знайшов чіткого опису причин цієї проблеми, але трохи подумавши, допер сам. Помилка виникає під час спроби інсталятора виконати командуwget -q http://ftp.uk.debian.org/debian//dists/squeeze/Release -O - grep -E '^(SuiteCodename):'. Причина помилки не аналізується, тому відсутність конкретного файлу і відсутність всього дзеркала цілком трактуються однаково - тобто. навіть якщо дзеркало недоступне цілком, користувач отримає повідомлення, що вводить в оману, мовляв, "на даному дзеркалі твоя версія не підтримується".