Сетевая установка Ubuntu Печать
Добавил(а) microsin   

Этот метод установки задействует протоколы DHCP/BOOTP, TFTP и FTP/HTTP для получения источников инсталляции. Инсталлятор сам по себе сделан на основе ядра Linux и initrd. Эти файлы передаются через DHCP/TFTP в процессе сетевой загрузки.

Остальные инсталляционные данные передаются через FTP или HTTP. Если целевая машина имеет доступ в Интернет, то эти данные могут поступать напрямую с зеркала Ubuntu. Альтернативно Вы могли бы загрузить один из установочных образов ISO, смонтировать его через loop-back, и опубликовать его содержимое для целевой машины через локальный сервер HTTP/FTP.

[Подготовка сетевой загрузки]

В этой статье (перевод [1]) описывается, как установить Ubuntu на целевую машину, используя на ней только сетевую карту для загрузки инсталлятора, который будет устанавливать Ubuntu. Чтобы это работало, кратко процесс можно описать так: Вы устанавливаете и конфигурируете службы bootp, tftp, dhcp и шлюза в Интернет (gateway). Целевая машина будет загружаться по сети (netboot) через свой сетевой адаптер, используя протокол PXE/BOOTP, и получит ядро Linux и инсталлятор через TFTP. После запуска ядра запустится инсталлятор, который и установит Ubuntu на целевую машину.

Большинство устанавливаемых для этого пакетов поставляются через Интернет из последних версий репозиториев Ubuntu. Ниже приведена подготовка сетевой загрузки по шагам.

1. Установите сервер TFTP. Убедитесь, что устанавливаете сервер TFTP с поддержкой bootp (например, на Linux таким сервером может быть tftp-hpa), и что у этого сервера есть сетевой доступ к Вашему роутеру/шлюзу.

2. Сконфигурируйте роутер и его сервер DHCP. Узнайте MAC-адрес целевой машины, на которую будете устанавливать Ubuntu. Самый простой путь - настроить для целевой машины фиксированный IP, например 192.168.1.42. Это можно сделать по MAC-адресу, если сделать соответствующую настройку на сервере DHCP. Также запомните адрес шлюза роутера (пусть это будет адрес 192.168.1.1).

3. Установите на хосте Linux сервис bootp. Проще всего установить из консоли командами apt:

sudo apt-get update
sudo apt-get install bootp

4. Отредактируйте файл /etc/bootptab. Пример:

client:\
ha="00:00:39:2B:54:B5":\
ip=192.168.1.42:\
gw=192.168.1.1:\
sm=255.255.255.0:\
td=/: hd=/: bf=pxelinux.0

Здесь настроено следующее:

ha MAC-адрес сетевой карты целевой машины.
ip IP-адрес, который назначил роутер для целевой машины.
gw IP-адрес роутера (gateway).
sm маска подсети для Вашей локальной сети.
td директория на сервере tfptboot, где находятся файлы PXE, относительно корневого каталога сервера tftpboot.
hd дальнейший путь, который заканчивается либо на файле pxe boot, либо на ссылке на него (скорее всего, этот путь можно оставить как есть).
bf файл pxe boot (скорее всего, тут будет именно такое имя файла).

Для дополнительной справки используйте man bootpd, man bootptab. Также некоторую информацию по настройке можно найти в комментариях файла etc/bootptab.

Если Вы не знаете аппаратный адрес целевой машины (т. е. MAC-адрес её сетевой карты), или какой IP-адрес целевой машине назначил DHCP-сервер роутера, то это можно сделать несколькими способами. Первый способ - настроить в BIOS целевой машины сетевую загрузку. Значение MAC-адреса будет отображаться либо в самом BIOS, либо на экране целевой машины, когда она делает попытку загрузиться через свой сетевой адаптер (также может отображаться и IP-адрес, выданный сервером DHCP). Второй способ - открыть лог DHCP-сервера или его файл текущих назначений IP-адресов. После того, как узнаете MAC адрес и IP-адрес, обновите /etc/bootptab на сервере bootp, после чего перезапустите bootpd.

5. Запустите bootp. Ниже приведена обертка, предназначенная для запуска и остановки bootpd из командной строки.

vDaemon=bootpd
vCd=/var/lib/tftpboot
 
Start () {
    echo -n "Starting $vDaemon: default current directory is at $vCd ... :"
    /usr/sbin/$vDaemon -d 4 -c $vCd >/tmp/$vDaemon.log 2>/tmp/$vDaemon.err &
    sleep 1
    Status
}
 
Stop () {
        echo "Stopping $vDaemon ..."
    kill `pidof $vDaemon`
}
 
Reload () {
    if [ "`pidof $vDaemon`" ] ; then
        echo "Reloading config file for $vDaemon ..."
        kill -HUP "`pidof $vDaemon`"
    fi
    Status
}
 
Status () {
    vPid="`pidof $vDaemon`"
    if [ "$vPid" ] ; then
        echo "$vDaemon running, pid=$vPid"
    else
        echo "$vDaemon not running"
    fi
}
 
case "$1" in
    start)      Start ;;
    stop)       Stop ;;
    reload) Reload ;;
    restart) Stop ; sleep 2; Start ;;
    status) Status ;;
    ""|*) echo `basename $0` parameter: start stop status reload or restart ;;
esac

В документации есть больше информации по bootp, включая инструкции по запуску bootp, используя inetd как альтернативу (см. [2], раздел "Setting up BOOTP server").

6. Сконфигурируйте сервер tftpd-hpa. Его конфигурация в /etc/default/tftpd-hpa должна быть следующей:

RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"

Параметр -s указывает на корневой каталог сервера tftp.

7. Загрузите tar-файл для netboot installer из архив Ubuntu Archives (karmic, jaunty, ищите по этим ключевым словам файл netboot.tar.gz на сайте bootboot.org; пример строки для поиска: netboot.tar.gz karmic site:bootboot.org). Распакуйте его содержимое в корневой каталог сервера tftpboot, указанный в конфигурации выше. Больше дополнительной информации есть в статье [2].

[Десктоп-установка Ubuntu на целевую машину]

Под "десктоп-установкой" подразумевается установка, когда на целевой машине есть монитор, где пользователь выбирает опции установки Ubuntu.

Установка с зеркал Интернет. Выполните сетевую загрузку на целевой машине. Сервер tftpboot передаст клиентской машине ядро для инсталлятора и initrd. При запуске инсталлятор отобразит меню с различными опциями инсталляции. Кликните Enter для запуска стандартной установки.

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

Установка с локального сервера. Если установка через Интернет невозможна, то есть вариант установки с сервера, расположенного в локальной сети. Для этого нужно смонтировать источники инсталляционных данных (loop-back mount) из файла образа .ISO. Установка по локальной сети может происходить даже быстрее, чем с крутящегося привода DVD-ROM.

1. Сначала нужно скачать ISO-файл образа инсталляционного диска. Например:

# wget http://old-releases.ubuntu.com/releases/9.10/ubuntu-9.10-desktop-amd64.iso

2. После окончания загрузки смонтируйте этот файл ISO в отдельный каталог:

# mkdir /mnt/ubuntu
# mount -o loop ubuntu-9.10-desktop-amd64.iso /mnt/ubuntu

3. Опубликуйте инсталляционные данные образа через Ваш сервер HTTP. Если у Вас работает Apache, его конфигурация по умолчанию должна быть достаточной, чтобы позволить Вам использовать символьную ссылку:

# cd /var/www/html
# sudo ln -s /mnt/ubuntu ubuntu

Проверьте, что инсталляционный каталог доступен для отображения в браузере. Например, если Apache был запущен на машине 192.168.1.50, то должна работать в браузере Chrome следующая ссылка: http://192.168.1.50/ubuntu. 

4. Выполните сетевую загрузку на целевой машине, перейдите к диалогу выбора зеркала. В ответ на выбор зеркала выберите вверху списка пункт "Enter Manually" (ввести вручную.). Здесь введите IP-адрес HTTP-сервера, который опубликовал установочные пакеты Ubuntu (вместо IP-адреса локальной машины HTTP-сервера можно использовать имя, если система доменных имен локальной сети настроена правильно).

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

[Альтернативная установка]

Когда Вы устанавливаете Ubuntu на "безголовую" машину (т. е. на компьютер без монитора), или когда к компьютеру есть только последовательное консольное подключение (через RS-232), то вариант "десктоп-установки" не сработает. Вам понадобится вместо этого альтернативный способ установки, с помощью альтернативного носителя инсталляционных данных ("alternate" media).

1. Измените файл pxelinux.cfg/default так, чтобы ядро использовало ttyS0 для консоли:

LABEL alt
kernel ubuntu-alt/linux
append initrd=ubuntu-alt/initrd.gz console=ttyS0,115200n8 quiet --

2. Загрузите "alternate" media:

# wget http://old-releases.ubuntu.com/releases/9.10/ubuntu-9.10-alternate-amd64.iso

После этого выполните те же самые шаги из раздела "Десктоп-установка Ubuntu на целевую машину" выше, начиная с шага 2, заменяя везде "desktop" на "alternate" для указания правильного источника пакетов установки.

[Загрузка с образа "Live CD"]

Live CD это загрузочный диск, позволяющий получить на компьютере полноценную систему (почти) без установки на жесткий диск. Т. е. это способ временного запуска Linux на компьютере. Это дает еще один вариант установки, потому что загрузив образ Desktop Edition Live CD вместо инсталлятора, можно далее запустить установку Linux на жесткий диск. Процесс по шагам:

1. Загрузите Desktop CD iso (например /8.10/ubuntu-8.10-desktop-i386.iso с зеркала http://www.ubuntu.com/getubuntu/downloadmirrors). Распакуйте его содержимое, включая скрытую директорию .disk, или смонтируйте ISO-файл в корневой каталог tftp. Этот каталог должен быть достижим через экспорт nfs; например на хосте nfs (192.168.1.10 как в примере ниже). Если Вы сделаете 'nfs-export' /, например всю файловую систему сервера nfs, то у Вас не будет проблем :-). Альтернативно Вы могли бы использовать сервер ftp или http, как описано далее в следующем разделе.

2. Добавьте 3 строки в файл конфигурации ubuntu-installer/i386/pxelinux.cfg/default:

LABEL live
kernel ubuntu-desktop/casper/vmlinuz
append initrd=ubuntu-desktop/casper/initrd.gz boot=casper netboot=nfs
 nfsroot=192.168.0.10:/mnt/u01/tftpboot/ubuntu-desktop --

3. Добавьте строку в файл меню ubuntu-installer/i386/boot-screens/f3.txt для записи Вашего выбора, чтобы можно было запомнить дополнительную live-опцию.

Ваша целевая машина может теперь загрузить "Live CD" Ubuntu вместо alternate CD installer, после чего на машине отобразится рабочий стол Ubuntu. Затем, если хотите, Вы можете установить Ubuntu кликом на иконке "Install".

Примечания:

1. На системах Ubuntu Gutsy или Hardy может обнаружится остановка загрузки со следующей строкой сообщения: "squashfs: version 3.2-UBUNTU (2007/07/26) Phillip Lougher". В этом случае попробуйте нажать Alt-Enter, и загрузка должна продолжиться с завершением на рабочем столе Live CD Ubuntu.

2. Вплоть до конца июля 2008 для Hardy или более ранних версий, если Вы не выполнили копирование скрытой директории .disk, то установка остановится на 82%, заполнив файловую систему squash. После этого процесс должен оборваться чисто. Для подробностей см. баг-репорт на Launchpad (Live install via nfs fails filling the squashfs site:bugs.launchpad.net).

[Базовая интерактивная установка Network Server Edition]

Другое описание установки дистрибутива Ubuntu по сети, как если бы Вы загрузились и запустили установку Ubuntu installation CD. Этот вариант в основном почти повторяет вышеописанную установку, кроме использования сервера на машине Linux. На сервере (или на нескольких серверах) понадобятся службы:

• dhcp или bootp: чтобы поддержать сервер netboot.
• tftp: чтобы передать образ загрузки на целевую машину netboot, когда он будет запрошен сервером netboot.
• http, ftp или nfs: чтобы предоставить дистрибутив Ubuntu для целевой машины в процессе инсталляции.

Кроме того, целевая машина должна быть в состоянии выполнить загрузку через её сетевую карту, иначе с дискеты, которая собрана Вами для 'netboot'.

Это описание сфокусировано на комбинации dhcp, tftp и http. В примерах ниже 'myserver' это сервер для этих трех сервисов (каждый из них при желании может работать на отдельном сервере). Итак, процесс по шагам:

1. Установка сервера DHCP:

root@myserver:~ # apt-get install dhcp3-server

2. Конфигурация сервера DHCP, чтобы указать клиентам, что загружать. Было добавлено имя хоста по умолчанию. Вам оно не пригодится, однако это может быть полезно для других целей.

oot@myserver:~ # cat /etc/dhcp3/dhcpd.conf
subnet 192.168.1.0  netmask 255.255.255.0 {
        range 192.168.1.10 192.168.1.254;
         }
# Поместите сюда IP-адреса Ваших серверов DNS:
option domain-name-servers 192.168.1.7, 68.87.66.196 ;
filename="ubuntu/feisty/alternate/install/netboot/pxelinux.0";

Перезапустите сервер DHCP:

root@myserver:~ # /etc/init.d/dhcp3-server restart
Stopping DHCP server: dhcpd3.
Starting DHCP server: dhcpd3.

3. Установка и конфигурирование сервера TFTP. Рекомендуется пакет tftpd-hpa, установите его. Он разрешается через /etc/default/tftpd-hpa.

RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"

Обратите внимание на базовый каталог сервера tftp. Выше показана настройка по умолчанию.

4. Смонтируйте CD (физический носитель или его образ) в эту базовую директорию tftpboot, например:

root@myserver:/var/lib/tftpboot/ubuntu/feisty$ mount -o loop feisty-alternate-i386.iso alternate/

Или Вы можете просто скопировать содержимое CD в эту папку, вместо того, чтобы оставить смонтированным ISO (см. [3]).

5. Установите и сконфигурируйте Apache, например:

root@myserver:~ # apt-get install apache2

6. Сделайте символьную ссылку из каталога документов пользователя для корня сервера (doc Root) Apache на CD:

root@myserver:/var/www # ln -s /var/lib/tftpboot/ubuntu/

Или скопируйте туда директорию /ubuntu с CD.

Для использования чистого сервера ftp (vs-ftpd, vsftpd) вместо Apache, установите сервер ftp, и сконфигурируйте его для анонимного доступа (anonymous ftp access). Затем скопируйте директорию /ubuntu с CD в домашний каталог анонимного пользователя (anonymous ftp home). На сервере vs-ftpd это установлено на /home/ftp (проверьте /etc/passwd для подтверждения anonymous ftp home). Затем проверьте, как работает анонимный доступ к ftp, и найдите на ftp инсталляционные файлы, например с помощью команды ftp localhost на этой же машине. Эта установка должна быть в режиме 'expert', чтобы можно было выбрать протокол ftp вместо протокола по умолчанию http.

7. Включите целевую машину, настройте её BIOS на сетевую загрузку, и Вы должны получить экран Ubuntu и приглашение загрузки.

[Автоматическая, заранее настроенная сетевая установка]

Выше была показана интерактивная установка, которая происходит точно так же, как если бы загрузка происходила с CD. Есть возможность реализации установки, которая будет происходить полностью без участия человека, ответы на все опции будут подготовлены и переданы инсталлятору. Кроме того, в этом варианте ничего не будет скачиваться из Интернет. Подробное описание см. в статье [1].

[Ссылки]

1. Installation/LocalNet site:ubuntu.com.
2. Preparing Files for TFTP Net Booting site:debian.org.
3. Installation/WindowsServerNetboot site:ubuntu.com.
4. PXELINUX config site:wiki.syslinux.org.
5. Ubuntu: установка с помощью Netboot.