Какие методы установки дистрибутивов linux вам известны? Должно быть что-то типа такого:
- с CD или DVD
- с USB накопителя
- с жёсткого диска
- по сети
Во время установки системы надо решить пару задач: загрузка программы установки и предоставления источника файлов для устанавливаемой системы.
В традиционном способе установки с CD или DVD уже всё готово и настроено: есть загружаемый диск, многие компы умеют загружаться с дисководов, установщик готов использовать пакеты или образ системы находящийся на диске. От пользователя требуется только выполнить несколько несложных шагов по предварительной настройке.
Установка с USB накопителя
LiveUSB из LiveCD
Должно быть уже достаточно много дистрибутивов, которые предоставляют какие-то готовые средства для создания загрузочных флешек. Например, в Ubuntu Desktop прямо на LiveCD есть графическая программа для создания LiveUSB.
В Fedora на LiveCD есть bash-скрипт, выполняющий всё тоже самое. С подробной инструкцией можете ознакомиться в официальной документации. Замечу только, что после выполнения скрипта, вручную ставил syslinux в качестве загрузчика. Все необходимые конфигурационные файлы уже есть не флешке и чтобы сделать это достаточно выполнить одну команду:
# syslinux /dev/sdb1 |
(вместо /dev/sdb1 укажите на файл, соответствующий вашей флешке)
В предыдущих примерах установочная программа расположена в SquashFS вместе с исходными для устанавливаемой системы файлами (см. рис. 1). Поэтому при успешной загрузке с LiveUSB очень вероятна и успешная установка.

Рис. 1. Установка из SquashFS

Рис. 2. Установка из пакетов
Установка из пакетов
Чуть сложнее организовать работу установщиков использующих пакеты. На рис. 2 видно, что установочная программа не привязана к пакетам, то есть они могут находиться на одном или разных носителях. Рассмотрим в качестве примеров установщики Debian-Installer и Fedora (Anaconda)
Debian-Installer используется в Ubuntu Alternate. При попытке создания загрузочной флешки из ubuntu-9.10-alternate-i386.iso, следуя гибкому методу из документации Debian по подготовке файлов для загрузки с карты памяти USB, столкнулся с тем, что вариант установщика Ubuntu Alternate наотрез отказывается искать пакеты где-либо кроме CD-диска. Не помогло даже монтирование iso-образа в /cdrom/.
На ubuntu.com спрятана небольшая инструкция Alternate Install (Ubuntu 9.10) в статье «USB Installation Media». Выяснилось, что надо использовать специальное ядро (vmlinuz) и образ ramdisk (initrd.gz) для архитектур i386 или amd64.
Напишем bash-скрипт и дадим ему имя, например, make-karmicinstall-flash.sh:
#!/bin/bash # Секция настройки параметров скрипта. # Для правильной работы скрипта вы должны изменить значения переменных. # Путь до каталога, в который вы сохранили файлы vmlinuz и initrd.gz HD_MEDIA=/path/to/dir/with/vmlinuz-and-initrd.gz/ # Точка монтирования флешки (этот каталог уже должен существовать) USB_MNT=/mnt/flash # Файл из каталога /dev/, указывающий на раздел USB_DEV=/dev/sdb1 # Полный путь до iso-образа ubuntu-9.10-alternate ISO_FILE=/path/to/ubuntu-9.10-alternate.iso # Полный путь до точки монтирования iso-образа (этот каталог уже должен существовать) ISO_MNT=/mnt/iso # ***** mount $USB_DEV $USB_MNT -t vfat -o fmask=111,dmask=000 mount -o loop $ISO_FILE $ISO_MNT cd $USB_MNT cp -R $ISO_MNT/isolinux syslinux cd syslinux mv isolinux.cfg syslinux.cfg cd .. cp -R $ISO_MNT/install . cp $HD_MEDIA/vmlinuz $HD_MEDIA/initrd.gz $USB_MNT/install cp $ISO_FILE ubuntu.iso umount $ISO_MNT cd / umount $USB_MNT syslinux $USB_DEV |
Выполним скрипт от root’а
# chmod a+x make-karmicinstall-flash.sh # ./make-karmicinstall-flash.sh |
Установка с жёсткого диска
Здесь должно быть много общего с флешками. Отличие заключается в том, что ваш жёсткий диск уже загрузочный. Вероятнее всего в MBR стоит GRUB. Подготавливать файлы можно также как и в предыдущем разделе, но вместо конфигурации и настройки syslinux, переносите параметры загрузки ядра и образа в конфиг GRUB’а.
Если установка не будет завершена нормально, то есть небольшой шанс остаться совсем без загрузчика. Подумайте заранее о других методах.
Подготовка Fedora LiveCD к установке с жёсткого диска
Следуйте той же инструкции, что и в случае с флешкой. После того как всё будет выполнено откройте файл syslinux/syslinux.cfg с раздела жёсткого диска, на который был скопирован Fedora LiveCD.
default vesamenu.c32 timeout 100 menu background splash.jpg menu title Welcome to Fedora-12-i686-Live! menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title 0 #ffffffff #00000000 menu color tabmsg 0 #ffffffff #00000000 menu color unsel 0 #ffffffff #00000000 menu color hotsel 0 #ff000000 #ffffffff menu color hotkey 7 #ffffffff #ff000000 menu color timeout_msg 0 #ffffffff #00000000 menu color timeout 0 #ffffffff #00000000 menu color cmdline 0 #ffffffff #00000000 menu hidden menu hiddenrow 5 label linux0 menu label Boot kernel vmlinuz0 append initrd=initrd0.img root=live:UUID=4B09-28C9 rootfstype=vfat ro liveimg quiet rhgb rd_NO_LUKS rd_NO_MD noiswmd menu default label check0 menu label Verify and Boot kernel vmlinuz0 append initrd=initrd0.img root=live:UUID=4B09-28C9 rootfstype=vfat ro liveimg quiet rhgb check label memtest menu label Memory Test kernel memtest label local menu label Boot from local drive localboot 0xffff |
На основании строчек 20 и 21 в menu.lst основного загрузчика прописываю такие строчки:
title Fedora 12 Live HDD (direct load) root (hd1,5) kernel /syslinux/vmlinuz0 root=live:UUID=4B09-28C9 rootfstype=vfat ro liveimg quiet rd_NO_LUKS rd_NO_MD noiswmd initrd /syslinux/initrd0.img |
Запуск установки по сети
Пакеты положить рядом с загружаемым по сети установщиком не получится. Программа установки должна уметь находить их где-либо ещё. Этот метод рассмотрим на примере Fedora.
Нам понадобится:
- Специальное ядро и загрузочный образ
- Установленные на сервере и настроенные tftp и dhcp
- Быстрый и стабильный доступ к какому-нибудь зеркалу дистрибутива
Ядро и загрузочный образ можно взять на любом зеркале, например с mirrors.se.eu.kernel.org:
- Для i386: initrd.img и vmlinuz
- Для x86_64: initrd.img и vmlinuz
Или ищите на другом зеркале папку «pxeboot» для вашей версии дистрибутива и архитектуры.
Например, в качестве сервера будет работать Ubuntu 9.10. Установим пакеты dhcp3-server и tftpd-hpa:
$ sudo apt-get install dhcp3-server tftpd-hpa |
Пропишите корневой каталог tftp в конфигурационном файле /etc/init.d/tftpd-hpa:
#Defaults for tftpd-hpa RUN_DAEMON="yes" OPTIONS="-l -s /var/lib/tftpboot" |
В этот каталог надо скопировать vmlinuz, initrd.img, загрузчик pxelinux (в моём случае это /usr/lib/syslinux/pxelinux.0 из пакета syslinux) и его конфиг в pxelinux.cfg/default с таким содержимым:
default linux prompt 1 timeout 100 label linux kernel vmlinuz append initrd=initrd.img ramdisk_size=9216 |
В конфиг dhcp-сервера /etc/dhcp3/dhcpd.conf необходимо как-либо прописать строчки filename (используемый загрузчик, который ранее был скопирован в корневой каталог tftp) и next-server (указывает на адрес tftp-сервера, который может совпадать или не совпадать с dhcp-сервером). Пример для подсети:
subnet 192.168.56.0 netmask 255.255.255.0 { filename "pxelinux.0"; next-server 192.168.56.1; range 192.168.56.2 192.168.56.9; option subnet-mask 255.255.255.0; option broadcast-address 192.168.56.255; option routers 192.168.56.1; } |
или для конкретного компа
host tftpclient { filename "pxelinux.0"; next-server 192.168.56.1; hardware ethernet 08:00:27:EB:DA:24; fixed-address 192.168.56.2; option subnet-mask 255.255.255.0; option broadcast-address 192.168.56.255; option routers 192.168.56.1; } |
Перезагружайте комп, на котором собираетесь устанавливать по сети систему. Установщик должен уметь находить пакеты в сети. Вы можете выбрать любое зеркало Fedora или создайте внутри сети своё.
Подробнее про установку по сети можете прочитать в статье «Создание мультиустановочного PXE сервера на основе Ubuntu Edgy Eft».
Небольшие дополнения:
Все необходимые файлы можно скачать в одном архиве. Вообще, всё, что связано с сетевой установкой обычно лежит на сервере в каталоге /ubuntu/dists/имя_дистрибутива/main/installer-архитектура/rc/images/netboot/
Для Ubuntu 10.04 названия файлов немного не совпадают с теми, что приведены в статье.
Таким образом, pxelinux.cfg/default будет иметь вид:
default linux
prompt 1
timeout 100
label linux
kernel linux
append initrd=initrd.gz ramdisk_size=9216
Также стоит отметить, что интернет не всегда доступен, а полного зеркала репозитория под рукой может не быть. В этом случае можно поднять свой репозиторий, используя используя каталоги dists и pool с диска с Ubuntu.
Уведомление: Зеркало репозитория для сетевой установки Debian/Ubuntu | Linux в Новосибирске