Появилась задача - поставить Linux Mint на ноутбук, на котором отсутствовал привод CD/DVD. Поэтому родилась идея в пределах рабочей локальной сети сделать загрузку по сети Live-образа операционной системы. То есть обычный сервер сетевой загрузки. К сожалению, более-менее простых руководств на просторах Интернет я не нашел, поэтому расскажу, как сделал это сам.

Для этого используется сервер Ubuntu, на котором установлены три сервиса:

Итак, прежде всего, поставим все эти три службы.

sudo apt-get install nfs-kernel-server dhcp3-server tftpd-hpa

Далее - настройка. Начнем с TFTP. Его настройки я не менял, однако приведу их здесь, на случай, если у вас они уже изменены. Смотрим содержимое файла /etc/default/tftpd-hpa

1
 # /etc/default/tftpd-hpa
1
2
3
4
 TFTP_USERNAME="tftp"
 TFTP_DIRECTORY="/var/lib/tftpboot"
 TFTP_ADDRESS="0.0.0.0:69"
 TFTP_OPTIONS="--secure"

Небольшое примечание. На следующий день я поднимал это дело на CentOS. Установка tftpd тут немного другая:

  • Установка TFTP
1
2
3
4
5
 yum install tftp-server
 yum install xinetd
 chkconfig tftp on
 chkconfig xinetd on
 chmod 777 /tftpboot

Ну а теперь вернемся к нашим “баранам”.

Итак, настройки NFS. Они просто указывают директорию, в которую можно будет попасть по NFS и диапазон IP, которому это разрешено делать. Проверяем содержимое /etc/exports

1
 /var/lib/tftpboot 192.168.1.0/24(rw,fsid=0,insecure,no_subtree_check,async)

Здесь вы видите, что файлы будут браться из той же директории, что указана и для TFTP|TFTPD.

Снова отступление на тему CentOS - установка NFS:

yum install nfs-utils

Теперь настройки службы DHCP. Она должна не только раздавать IP, но и указывать сервер загрузки и какой именно файл нужно взять. Смотрим содержимое /etc/dhcp3/dhcpd.conf

1
2
3
4
5
6
7
 ping-check = 1;
 subnet 192.168.1.0
 netmask 255.255.255.0 {
 range 192.168.1.3 192.168.1.100;
 filename = "pxelinux.0";
 interface eth1;
 }

Тут указана подсеть 192.168.1.0-192.168.1.254, файл для загрузки - pxelinux.0. Сервер next не указываю, т.к. этот файл находится на этом же сервере. Чтобы вам все это не пришлось искать в сети, выкладываю архив с pxelinux.0 и другими файлами, в том числе с файлами настроек сюда: Ссылка на архив.

Итак, службы настроены. Теперь идем в /var/lib/tftpboot. В данном каталоге мы поместим файл pxelinux.0, каталог pxelinux.cfg и каталоги, в которых у нас будут лежать распакованные образы. Для примера, я выбрал Linux Mint и Ubuntu Server, чтобы можно было выбирать, что грузить на компьютер. Это позволит заливать не только пользовательские машинки, но и сервера. Поэтому создал каталоги mint и server. Думаю, как скопировать файлы из ISO-образов, рассказывать вам не надо.

Теперь посмотрим файл default в pxelinux.cfg. Итак, содержимое:

1
2
3
4
5
6
7
8
9
10
 LABEL live
 kernel mint/casper/vmlinuz
 append initrd=mint/casper/initrd.lz boot=casper netboot=nfs nfsroot=192.168.1.1:/var/lib/tftpboot/mint -- 
 
 LABEL server
 kernel server/boot/vmlinuz
 append initrd=server/boot/initrd.lz boot=casper netboot=nfs nfsroot=192.168.1.1:/var/lib/tftpboot/server -- 
 
 PROMPT 1
 TIMEOUT 0

В данном случае видно, что при загрузке можно указать live - и тогда будет грузиться Linux Mint, если server - Ubuntu Server, nfsroot=192.168.1.1 - это адрес нашего сервера, который так щедро раздает IP и операционки в сети. Итак, подключаем к сети компьютер для заливки, ставим загрузку по сети - и в путь! На этом все. Если замечены какие-либо неточности или ошибки - просьба исправить или подсказать. Надеюсь, это руководство вам поможет.

Загрузка других систем

  • opensuse

Придется вам качать и положить в корень 2 файлика: linux (около 5МБ)и initrd (около 45МБ)

1
2
 wget http://download.opensuse.org/factory/repo/oss/boot/i386/loader/linux
 wget http://download.opensuse.org/factory/repo/oss/boot/i386/loader/initrd