Установка и настройка инструментов, позволяющих использовать Debian систему в качестве источника PXE загрузки ОС (Linux, Windows и прочее.)
Автором завершена активная разработка страницы
20 мая 2012 г. из содержимого раздела удалён ряд материалов, публикация которых, по мнению одного из редакторов, недопустима из-за взаимодействия с проприетарным ПО. 31 мая 2012 г. удалённые материалы были восстановлены автором из-за бездействия уважаемого PavloRudyj, рассмотренного как безразличие к содержимому раздела. В настоящий момент устраивающее всех решение на найдено и находится в стадии ожидания. Уважаемый PavloRudyj! Прошу связаться со мной по e-mail для цивилизованного решения возникшего вопроса.
Наши опечатки и ошибки в статье можно править смело, нет необходимости сообщать об этом на почту, просьба соблюдать стилевое оформление страницы и использовать разделители разделов (серые линии различной толщины)
В указанных ниже программах есть масса дополнительных возможностей, поэтому если есть время и желание - проверяйте их работу и смело добавляйте сюда новые рецепты.
Contents
Теория процесса
Задача: запустить и\или установить ОС (Linux, Windows и прочее.) на компьютере с помощью сетевого подключения к выделенному Debian серверу.
Нам понадобятся:
- Компьютер под управлением Debian
- Компьютер с поддержкой PXE загрузки (любой младше 10 лет), на котором мы будем запускать\устанавливать ОС.
- Сетевое подключение между ними.
На сервере Debian мы установим:
Служба DHCP - будет выдавать настройки сети + информацию о том где искать загрузочные файлы и какой из них запускать первым (dhcp3-server, dnsmasq и пр.).
Служба TFTP - будет раздавать загрузочные файлы на начальном этапе (dnsmasq, tftpd-hpa и пр.).
Служба Syslinux обеспечит удобное меню для выбора ОС и опций её загрузки.
Cлужба доступа к файлам - будет раздавать файлы на поздних этапах по протоколам SMB, NBD, HTTP, NFS и пр.
Ниже представлены, различные варианты ПО реализующие в себе один или несколько вышеуказанных инструментов. Необходимо выбрать лишь один
Общие настройки
DHCP сервер
Dnsmasq (1-й вариант)
Устанавливаем dnsmasq: - простую и функциональную утилиту способную работать и DHCP сервером . В примерах ниже рассматриваются примеры для домашнего роутера. Этот вариант лучше подходит для сервера "всё-в-одном"
aptitude install dnsmasq
Общие настройки
Делаем backup оригинального файла настроек
mv /etc/dnsmasq.conf /etc/dnsmasq.conf.BAK
Редактируем настройки
nano /etc/dnsmasq.conf interface=eth0 #Указываем сетевую карту listen-address=192.168.0.1,127.0.0.1 #Указываем адреса на которых слушаем запросы
DHCP настройки
Добавляем строки
nano /etc/dnsmasq.conf dhcp-range=192.168.0.20,192.168.0.50,255.255.255.0,2h #Указываем диапазон адресов, маску сети и время аренды адреса dhcp-option=option:ntp-server,192.168.0.1 #Указываем IP NTP сервера dhcp-boot=pxelinux.0,gate.local,192.168.0.1 #Указываем имя загрузочного файла,имя и IP TFTP сервера dhcp-leasefile=/var/log/dnsmasq.leases #Аренду адреса логируем dhcp-host=00:14:D1:C9:53:B4,192.168.0.15,infinite #Жёсткая привязка mac адреса к IP
Кеширование DNS (для RIS не обязательно)
Кешировани dns полезно, если сервер раздаёт доступ в интернет
Добавляем строки
nano /etc/dnsmasq.conf domain=home #чтобы работал локальный DDNS domain-needed #никогда не пересылать адреса без доменной части bogus-priv #никогда не пересылать адреса из немаршрутизируемого пространства strict-order #пересылать запросы, с первого и по порядку address=/gate.local/192.168.0.1 #DNS запись о нашем сервере local=/home/ #Не помню зачем, но нужно #log-queries #Лог запросов не ведём
Прописываем dnsmasq в сетевых настройках:
Если адресация статическая? то добавляем строку в начало:
nano /etc/resolv.conf nameserver 127.0.0.1 nameserver первый DNS сервер провайдера nameserver второй DNS сервер провайдера
Если динамическая то добавляем строку между :
nano /etc/dhcp/dhclient.conf #supersede domain-name-servers 127.1.2.3; prepend domain-name-servers 127.0.0.1; request subnet-mask, broadcast-address, time-offset, routers,
и обновляем настройки dhcp от провайдера
/etc/init.d/networking restart
Применение настроек
Перезапускаем dnsmasq для применения новых настроек
/etc/init.d/dnsmasq restart
Isc-dhcp-server (2-й вариант)
Устанавливаем isc-dhcp-server: - популярный DHCP сервер, ставший стандартом де-факто для большинства UNIX систем . Рекомендую для использования на выделенном сервере, где требуется индивидуальный подход для каждого клиента в сети
aptitude install isc-dhcp-server
Редактируем настройки утилиты в файле /etc/dhcp3/dhcp.conf
# Указываем подсеть и маску сети
subnet 192.168.0.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option routers 192.168.0.1;
option domain-name-servers 192.168.0.1;
filename "startrom.0";
next-server 192.168.0.1;
# Привязываем mac адрес сетевой карты к её индивидуальным настройкам IP
host net_install {
hardware ethernet XX:XX:XX:XX:XX:XX;
fixed-address 192.168.0.20;}
}Перезапускаем isc-dhcp-server для применения новых настроек
/etc/init.d/isc-dhcp-server restart
TFTP сервер
tftpd-hpa
Устанавливаем tftpd-hpa: - ТFTP сервер с поддержкой специфичных требований к PXE. Пока что, это единственный известный инструмент позволяющий работать с идеологией именования файлов от Microsoft
aptitude install tftpd-hpa
Во время установки указываем путь к корневому каталогу с загрузочными файлами. Например /mnt/data/tftpboot
Запускаем подробную настройку
dpkg-reconfigure tftpd-hpa
* Учётную запись рекомендую не изменять.
* Корневой каталог был уже указан при установке, не меняем.
* Указываем IP системы, на котором tftpd-hpa будет слушать запросы, если сетевых карт несколько.
* Опции пока оставляем по-умолчанию.
Примечание: TFTP сервер способен отдавать содержимое только указанного корневого каталога.
Syslinux
Базовая настройка
Устанавливаем syslinux: - набор загрузчиков ядра Linux, среди которых есть и вариант для PXE.
aptitude install syslinux
Копируем PXE загрузчик в корневую директорию TFTP сервера
cp /usr/lib/syslinux/pxelinux.0 /mnt/data/tftpboot/
Создаём папку для хранения служебных файлов pxelinux
mkdir /mnt/data/tftpboot/pxelinux.cfg
Копируем бинарный файл меню в папку pxelinux.cfg
cp /usr/lib/syslinux/menu.c32 /mnt/data/tftpboot/pxelinux.cfg/
Создаем конфигурационный файл:
nano /mnt/data/tftpboot/pxelinux.cfg/default
default pxelinux.cfg/menu.c32
menu title Boot menu
label bootHDD
menu label Boot from с HDD
#menu default
localboot 0x0Этих настроек достаточно чтобы загрузиться по сети и запустить локально установленную ОС.
Расширенная настройка
Графическое меню
Копируем бинарный файл vesa-меню в папку pxelinux.cfg
cp /usr/lib/syslinux/vesamenu.c32 /mnt/data/tftpboot/pxelinux.cfg/
Для размещения фоновой картинки нужно скопировать 8 битное изображение с разрешением меню (например 800х600) в формате png в папку pxelinux.cfg.
Указываем новый бинарник меню, фоновую картинку, разрешение экрана и количество строк:
nano /mnt/data/tftpboot/pxelinux.cfg/default" #default pxelinux.cfg/menu.c32 default pxelinux.cfg/vesamenu.c32 menu background pxelinux.cfg/splash.png menu resolution 800 600 menu rows 25
Таймаут выполнения
Опция TIMEOUT задаёт время ожидания командной строки перед автоматической загрузкой в условных единицах = 0,1 с. Таймаут отключается как только пользователь нажимает какую-либо клавишу. Нулевой таймаут вовсе отключает эту функцию (по-умолчанию).
Опция TOTALTIMEOUT задаёт время ожидания перед автоматической загрузкой и не отменяется нажатием клавиши.
Указываем время выполнения пункта меню по-умолчанию (1 и 5 минут)
nano /mnt/data/tftpboot/pxelinux.cfg/default menu autoboot Auto boot # s. timeout 600 totaltimeout 3000
Локализация
Копируем кириллический шрифт в папку pxelinux.cfg (должен быть установлен пакет console-cyrillic)
cp /usr/share/console-cyrillic/alt-sans-8x16.psf /mnt/data/tftpboot/pxelinux.cfg/
Делаем копию конфигурационного файла
cp /mnt/data/tftpboot/pxelinux.cfg/default /mnt/data/tftpboot/pxelinux.cfg/defaultUTF
Указываем шрифт и переводим английские названия пунктов меню на Русский язык
nano /mnt/data/tftpboot/pxelinux.cfg/defaultUTF font pxelinux.cfg/alt-sans-8x16.psf #menu title Boot menu menu title Загрузочное меню ...
Конвертируем конфигурационный файл в CP866
iconv -f UTF8 -t CP866 /mnt/data/tftpboot/pxelinux.cfg/defaultUTF -o /mnt/data/tftpboot/pxelinux.cfg/default
Теперь любые строки будут правильно отображать кириллицу.
Установка Windows XP
Подключение дистрибутива
Создаём общую папку для хранения базовых установочных файлов и папку для дистрибутива.
mkdir /mnt/data/tftpboot/winxp. mkdir /mnt/data/tftpboot/winxp/distrib
Копируем в distrib cодержимое установочного диска.
Устанавливаем распаковщики cab файлов, переходим в winxp и извлекаем загрузчики.
aptitude install cabextract unzip cd /mnt/data/tftpboot/winxp cabextract /mnt/data/tftpboot/winxp/distrib/I386/SETUPLDR.EX_ mv setupldr.exe ntldr cabextract /mnt/data/tftpboot/winxp/distrib/I386/STARTROM.N1_ mv startrom.n12 startrom.0 cp /mnt/data/tftpboot/winxp/distrib/I386/NTDETECT.COM ntdetect.com
Для русской версии Windows XP копируем кириллический шрифт
cp /mnt/data/tftpboot/winxp/distrib/BOOTFONT.BIN /mnt/data/tftpboot/winxp/bootfont.bin
Расшаривание по сети
Устанавливаем Samba и выставляем базовые настройки
aptitude install samba dpkg-reconfigure samba dpkg-reconfigure samba-common
Выставляем дополнительные настройки в файле /etc/samba/smb.conf
# nano /etc/samba/smb.conf [global] # сначала производится вход с локальными логином и паролем клиента security = user # Если будет получен неправильный пароль, то клиенту будет дан гостевой доступ. map to guest = Bad Password [winxp] path = /mnt/data/tftpboot/winxp/ browsable = yes read only = yes guest ok = yes
Перезапускаем samba для применения новых настроек
/etc/init.d/samba restart
Обработка сетевых драйверов
Во время установки Windows XP должна получить информацию, какой драйвер для сетевой платы она должна использовать. Эту информация предоставляет служба BINL. Эта программа написана на языке Python и поэтому, необходимо еще установить интерпретатор этого языка.
Устанавливаем распаковщик zip файлов и Python 2.6
aptitude install unzip python-minimal
Загружаем и распаковываем BINL сервер + сборник дров к самым популярным сетевым картам.
cd /usr/local/bin wget http://oss.netfarm.it/guides/ris-linux-0.4.tar.gz tar -xvf ris-linux-0.4.tar.gz rm ris-linux-0.4.tar.gz cd /mnt/data/tftpboot/winxp wget http://unattendedxp.com/articles/wxpris/files/lan-drivers.zip unzip lan-drivers.zip -d drv rm lan-drivers.zip
Добавить новые драйвера можно (и нужно) самостоятельно. Для этого надо извлечь из установочных архивов inf и sys файлы в папки drv и drv/sys соответственно.
Создадим скрипт запуска BINL: * Формирует актуальную базу драйверов. * Запускает сервер
nano /usr/local/bin/binl.sh #!/bin/sh cd /usr/local/bin/ris-linux-0.4 ./infparser.py /mnt/data/tftpboot/winxp/drv/ ./binlsrv.py
Делаем исполняемым и запускаем сервер.
chmod +x /usr/local/bin/binl.sh /usr/local/bin/binl.sh
Настройка установщика
Создаём файл конфигурации winnt.sif
nano /mnt/data/tftpboot/winxp/winnt.sif
[Data]
MsDosInitiated="1"
floppyless="1"
LocalSourceOnCD=1
UnattendedInstall="Yes"
AutomaticUpdates="Yes"
OriSrc="\\ip_сервера\winxp\distrib\i386"
OriTyp="4"
[SetupData]
OsLoadOptions = "/noguiboot /fastdetect"
SetupSourceDevice = "\Device\LanmanRedirector\ip_сервера\winxp\distrib"
[RemoteInstall]
Repartition = No
UseWholeDisk = No
[Unattended]
AutoActivate=No
FileSystem=*
DUDisable = Yes
CrashDumpSetting=0
DriverSigningPolicy=Ignore
FactoryMode=No
UnattendMode=FullUnattended
UnattendSwitch="Yes"
Repartition=No
TargetPath=\WINDOWS
OemSkipEula=Yes
WaitForReboot=No
NtUpgrade=No
OverwriteOemFilesOnUpgrade=No
OEMPreinstall=Yes
; OemPnPDriversPath="install\drivers\sisraid;install\drivers\atisb7xx"
DriverSigningPolicy=Ignore
[GuiUnattended]
; EncryptedAdminPassword=Yes
OEMSkipRegional=1
;AdminPassword=add2f3e23a77f2aaaad3b435b51404eea3c3dde4000a38b5373112c243ee6cee
AutoLogon=Yes
AutoLogonCount=1
TimeZone=145
OemSkipWelcome=1
[UserData]
FullName="_"
OrgName="_"
ComputerName=host
ProductKey=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
[Identification]
JoinDomain=GSPK
[Networking]
InstallDefaultComponents=No
[Display]
BitsPerPel=16
Xresolution=1024
YResolution=768
Vrefresh=75
[GuiRunOnce]
; "regedit /s %systemdrive%\install\tweak.reg"
; "regedit /s %systemdrive%\install\current.reg"
; "%systemdrive%\install\hide.cmd"
[TapiLocation]
CountryCode=7
Dialing=Pulse
AreaCode=495
[RegionalSettings]
LanguageGroup=1,5
SystemLocale=00000419
UserLocale=00000419
InputLocale=0409:00000409,0419:00000419
[Branding]
BrandIEUsingUnattended=Yes
[URL]
Home_Page=www.yandex.ru
[Proxy]
Proxy_Enable=0
Use_Same_Proxy=0
[NetAdapters]
Adapter1=params.Adapter1
[NetClients]
MS_MSClient=params.MS_MSClient
[NetServices]
MS_SERVER=params.MS_SERVER
[NetProtocols]
MS_TCPIP=params.MS_TCPIP
[params.MS_TCPIP]
DNS=Yes
UseDomainNameDevolution=No
EnableLMHosts=Yes
AdapterSections=params.MS_TCPIP.Adapter1
[params.MS_TCPIP.Adapter1]
SpecificTo=Adapter1
DHCP=Yes
WINS=No
NetBIOSOptions=0
[TerminalServices]
AllowConnections=0
[PCHealth]
RA_AllowToGetHelp=0
[Components]
AccessOpt=Off
charmap=Off
clipbook=Off
freecell=Off
hearts=Off
IEAccess=Off
media_clips=Off
minesweeper=Off
mousepoint=Off
msnexplr=Off
mswordpad=Off
netoc=Off
OEAccess=Off
pinball=Off
Pop3Srv=Off
rec=Off
rootautoupdate=Off
templates=Off
zonegames=Off
Chat=Off
Deskpaper=Off
IEAccess=Off
Media_utopia=Off
Mousepoint=Off
Msnexplr=Off
OEAccess=Off
Templates=Off
WMAccess=Off
WMPOCM=Off
Wms=Off
Wms_admin_asp=Off
Wms_admin_mmc=Off
Wms_isapi=Off
Wms_server=Off
Настройка syslinux
Добавляем в основной конфигурационный файл ссылку на Windows XP
nano /mnt/data/tftpboot/pxelinux.cfg/default label Windows XP Professional SP3 RU network install kernel winxp/startrom.0
Решение проблем и настройка переназначения адресов
На текущий момент останутся следующе пробелмы.
Проблема 1. Согласно нашей файловой иерархии, установочные файлы ntldr, BOOTFONT.BIN, ntdetect.com и winnt.sif НЕ лежат в корневой папке TFTP сервера, а значит установщик startrom.0 их не получит. А должен искать в папке winxp.
Проблема 2. Согласно нашей файловой иерархии, sys файлы сетевых драйверов НЕ лежат в \distrib\i386, а значит установщик startrom.0 их не получит. А должен искать в папке winxp/drv/sys.
Проблема 3. Путь к файлу в Windows разделяется "/", а в Линуксе "\". Пути изначально неверные. Пути должны содержать именно "\".
Проблема 4. Windows при обработке файлов НЕ обращает внимание на регистр букв, а вот Linux обращает. Из-за этого Linux не может отдать файл на запрос типа BOOT.dll, когда по-факту нужно отдать BOOT.DLL. Имена всех запросов должны быть в маленьком регистре.
Проблема 5. Согласно нашей файловой иерархии, прочие установочные файлы НЕ лежат в папке distrib, а значит установщик startrom.0 их не получит. А должен искать в папке winxp/distrib.
Для решения этих проблем создадим правило переназначения имён файлов. Этим мы заставим наш tftp-hpa сервер преобразовывать поступающие от startrom.0 строки запросов, в "правильные", соответствующие нашей файловой иерархии и правилам именования.
Единственный известный мне TFTP сервер, который способен понимать такие правила - tftp-hpa.
Если вы его ещё не установили, то удаляем/отключаем любой другой tftp сервер и инсталлируем tftp-hpa
Сначала создадим и откорректируем такое правило:
nano /mnt/data/tftpboot/winxp/tftpd.rules r ntldr /winxp/ntldr r ntdetect.com /winxp/ntdetect.com r winnt.sif /winxp/winnt.sif r BOOTFONT.BIN /winxp/BOOTFONT.BIN rg \\ / # Переводим имена запрашиваемых файлов в нижний регистр r .* \L\0 r distrib/i386 winxp/distrib/i386 r /winxp/distrib/i386/vmxnet.sys /winxp/drv/sys/vmxnet.sys r /winxp/distrib/i386/_e100b325.sys /winxp/drv/sys/_e100b325.sys r /winxp/distrib/i386/atl01_xp.sys /winxp/drv/sys/atl01_xp.sys r /winxp/distrib/i386/b06nd51x.sys /winxp/drv/sys/b06nd51x.sys r /winxp/distrib/i386/b57xp32.sys /winxp/drv/sys/b57xp32.sys r /winxp/distrib/i386/e1e5132.sys /winxp/drv/sys/e1e5132.sys r /winxp/distrib/i386/E1000325.sys /winxp/drv/sys/E1000325.sys r /winxp/distrib/i386/el2k_xp.sys /winxp/drv/sys/el2k_xp.sys r /winxp/distrib/i386/fetnd5bv.sys /winxp/drv/sys/fetnd5bv.sys r /winxp/distrib/i386/l251x86.sys /winxp/drv/sys/l251x86.sys r /winxp/distrib/i386/nvefd2k.sys /winxp/drv/sys/nvefd2k.sys r /winxp/distrib/i386/nvnrm.sys /winxp/drv/sys/nvnrm.sys r /winxp/distrib/i386/Rtenicxp.sys /winxp/drv/sys/rtenicxp.sys r /winxp/distrib/i386/Rtnicxp.sys /winxp/drv/sys/rtnicxp.sys r /winxp/distrib/i386/vmxnet.sys /winxp/drv/sys/vmxnet.sys r /winxp/distrib/i386/yk51x86.sys /winxp/drv/sys/yk51x86.sys
Далее для решения проблемы 4, необходимо переименовать всех файлы в папке distrib в нижний регистр.
Создаём скрипт переименования.
nano /usr/local/bin/rn.sh
#!/bin/sh
if test "x$1" = x; then
exit -1
fi
cd "$1" || exit -1
for n in `find -maxdepth 1 | tail -n +2`; do
x=`echo "$n" | tr "[:upper:]" "[:lower:]"`
if test "x$n" != "x$x"; then
mv -v "$n" "$x"
fi
done
for n in `find -maxdepth 1 -type d | tail -n +2`; do
echo "$0" "$n"
"$0" "$n"
done Делаем исполняемым и запускаем переименование
chmod +x /usr/local/bin/rn.sh /usr/local/bin/rn.sh /mnt/data/tftpboot/winxp/distrib
И наконец, нужно указать tftp-hpa вновь созданный файл правил.
Указываем новые параметры для tftp-hpa
dpkg-reconfigure tftpd-hpa
В последнем окне "Дополнительные параметры сервера TFTP" выставляем опции
--secure -m /mnt/data/tftpboot/winxp/tftpd.rules -vvv
"-vvv" означает очень подробный вывод в лог "/var/log/syslog", "/var/log/daemon.log". Все пути в логах указываются относительно корневой папки tftp сервера (например /mnt/data/tftpboot/). Если проблем не наблюдается, то опцию рекомендую отключить.
Теперь всё должно работать.
Установка Debian 6
Размещение дистрибутива
Ищем на ftp://ftp.debian.org/debian/dists/ нужную версию дистрибутива.
Создаём временную и основную папки для хранения дистрибутива сетевой установки. Например так:
mkdir -p /mnt/data/tftpboot/temp mkdir -p /mnt/data/tftpboot/debian/amd64/20110106+squeeze3_text
Загружаем его во временную папку.
Например так:
wget -P /mnt/data/tftpboot/temp ftp://ftp.debian.org/debian/dists/squeeze/main/installer-amd64/20110106+squeeze3/images/netboot/netboot.tar.gz
Распаковываем архив.
cd /mnt/data/tftpboot/temp tar -xvz -f netboot.tar.gz
Перемещаем нужные файлы и прибираемся за собой
mv /mnt/data/tftpboot/temp/debian-installer/amd64/* /mnt/data/tftpboot/debian/amd64/20110106+squeeze3_text/ cd .. && rm -r temp
Замена путей к файлам
Этот дистрибутив заранее подготовлен только для собственной установки, поэтому нам нужно внедрить его в нашу схему размещения дистрибутивов.
Создаём скрипт замены путей в cfg файлах на соответствующие нашей файловой иерархии.
nano /usr/local/bin/rpl_text.sh
#!/bin/sh
sour='debian-installer/amd64/boot-screens/'
targ='debian/amd64/20110106+squeeze3_text/boot-screens/'
dirr='/mnt/data/tftpboot/debian/amd64/20110106+squeeze3_text/boot-screens/'
grep --color -oiIrn $sour $dirr | awk -F':' '{print $1, $2, $0}' |
while read file string all
do
what=$(echo "${all}" | cut -d: -f3-)
sed -i -e "${string}s@${what}@${targ}@gi" "${file}"
done
sour='debian-installer/amd64/linux'
targ='debian/amd64/20110106+squeeze3_text/linux'
dirr='/mnt/data/tftpboot/debian/amd64/20110106+squeeze3_text/boot-screens/'
grep --color -oiIrn $sour $dirr | awk -F':' '{print $1, $2, $0}' |
while read file string all
do
what=$(echo "${all}" | cut -d: -f3-)
sed -i -e "${string}s@${what}@${targ}@gi" "${file}"
done
sour='debian-installer/amd64/initrd.gz'
targ='debian/amd64/20110106+squeeze3_text/initrd.gz'
dirr='/mnt/data/tftpboot/debian/amd64/20110106+squeeze3_text/boot-screens/'
grep --color -oiIrn $sour $dirr | awk -F':' '{print $1, $2, $0}' |
while read file string all
do
what=$(echo "${all}" | cut -d: -f3-)
sed -i -e "${string}s@${what}@${targ}@gi" "${file}"
done Делаем исполняемым и запускаем переименование
chmod +x /usr/local/bin/rpl_text.sh /usr/local/bin/rpl_text.sh
Настройка syslinux
Добавляем в основной конфигурационный файл ссылку на дистрибутив
nano /mnt/data/tftpboot/pxelinux.cfg/default
menu begin Debian
menu title Debian network install
label Debian squeeze amd64 text
kernel debian/amd64/20110106+squeeze3_text/boot-screens/vesamenu.c32
config debian/amd64/20110106+squeeze3_text/boot-screens/syslinux.cfg
label mainmenu
menu label ^Back..
menu exit
menu endТеперь будет работать 8)
Автоматизация установки
Внимание! Автоматическая разметка разделов ЖД не рассматривается, т.е. вопросы от установщика Debian всё же будут.
Устанавливаем систему в экспертном режиме на типовой машине
Устанавливаем на этом компьютере утилиты для работы с БД debconf и системной БД пользователй
aptitude install debconf-utils whois
Формируем MD5 хеш пароля администратора
printf "наш_пароль" | mkpasswd -s -m md5
Выгружаем все выбранные при установке ответы в файл
debconf-get-selections --installer > /preseed_full.cfg
В preseed_full.cfg содержится много лишней информации, внимательно ищем знакомые вопросы и ответы.
Затем на RIS сервере создаём свой, новый файл ответов.
nano /mnt/data/tftpboot/debian/amd64/20110106+squeeze3_text/preseed.cfg
# Указываем зеркало
d-i mirror/country string manual
d-i mirror/http/hostname string mirror.yandex.ru
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
# Загружаем дополнительные модули установщика
d-i anna/choose_modules multiselect cfdisk-udeb, crypto-dm-modules-2.6.32-5-amd64-di, crypto-modules-2.6.32-5-amd64-di, lvmcfg, ntfs-modules-2.6.32-5-amd64-di, parted-udeb, partman-reiserfs, qnx4-modules-2.6.32-5-amd64-di, reiserfs-modules-2.6.32-5-amd64-di, speakup-modules-2.6.32-5-amd64-di, squashfs-modules-2.6.32-5-amd64-di
# Устанавливаемая версия.
d-i mirror/suite string stable
# Включить поддержку теневых (shadow) паролей?
user-setup-udeb passwd/shadow boolean true
# ------------------Настройка пользователей - только root -----------------
# Разрешаем вход в систему пользователю root
user-setup-udeb passwd/root-login boolean true
# Других пользователей не создаём
user-setup-udeb passwd/make-user boolean false
# Указываем MD5 хеш пароль администратора
d-i passwd/root-password-crypted password MD5хеш
# ----------Вариант настройки пользователей - только Ivan с sudo ----------
# Разрешить вход в систему суперпользователем root?
#user-setup-udeb passwd/root-login boolean false
# Создать учётную запись обычного пользователя?
#user-setup-udeb passwd/make-user boolean true
# Введите полное имя нового пользователя:
#user-setup-udeb passwd/user-fullname string Petrov Ivan
# Имя вашей учётной записи:
#user-setup-udeb passwd/username string ivan
# Пароль обычного пользователя
#d-i passwd/user-password-crypted password md5-хэш
#---------------------------------------------------------------------------
# По-умолчанию рекомендуемые пакеты не устанавливаем
d-i base-installer/install-recommends boolean false
# Указываем ядро
bootstrap-base base-installer/kernel/image select linux-image-2.6.32-5-amd64
# Так переключаем раскладки
d-i keyboard-configuration/toggle select Alt+Shift
# Временная зона
tzsetup-udeb time/zone select Europe/Moscow
# Страна
tzsetup-udeb tzsetup/country/RU select Europe/Moscow
# Разрешаем все источники пакетов
d-i apt-setup/non-free boolean true
d-i apt-setup/contrib boolean true
d-i apt-setup/security-updates boolean true
# Система чистая - никаких сборок пакетов. Что нужно поставим сами.
tasksel tasksel/first multiselect
# Дополнительно устанавливаем нужные нам пакеты
d-i pkgsel/include string console-cyrillic localepurge mc screen htop less hwinfo lshw dnsutils
# Отвечаем на вопросы console-cyrillic
d-i console-cyrillic/switch select Нет временного переключателя
d-i console-cyrillic/toggle select Alt+Shift
# Отвечаем на вопросы localepurge
d-i localepurge/nopurge multiselect en, en_US.UTF-8, ru, ru_RU.UTF-8
#Обновлять ли пакеты после debootstrap.
#d-i pkgsel/upgrade select safe-upgrade
# Не учавствуем в опросе популярности пакетов
popularity-contest popularity-contest/participate boolean false
# Слабо представляю, что зачем оно нужно, но ответ оставляем
dictionaries-common dictionaries-common/default-wordlist select настройка символьных ссылок вручную
# Устанавливаем GRUB2 в MBR
grub-installer grub-installer/only_debian boolean true
#d-i grub-installer/bootdev string (hd0,0)
# Добавляем опцию к параметрам запуска ядра
d-i debian-installer/add-kernel-opts string vga=788
# Сразу ребутаем систему после установки
d-i finish-install/reboot_in_progress noteОбновляем раздел Debian в основном конфигурационном файле syslinux
nano /mnt/data/tftpboot/pxelinux.cfg/default
label OEM
menu label Debian squeeze amd64 text OEM install
kernel debian/amd64/20110106+squeeze3_text/linux
append vga=788 initrd=debian/amd64/20110106+squeeze3_text/initrd.gz preseed/url=tftp://10.108.167.93/debian/amd64/20110106+squeeze3_text/preseed.cfg hostname=host domain=local debian-installer/locale=ru_RU.UTF-8 console-keymaps-at/keymap=ru --
Запуск Systemrescuecd
Размещение дистрибутива
Создаём временные и основную папки для хранения дистрибутива .
mkdir -p /mnt/data/tftpboot/temp mkdir -p /mnt/data/tftpboot/temp/mnt mkdir -p /mnt/data/tftpboot/sysrescd/2.3.0/
Загружаем и монтируем образ диска
wget --no-check-certificate -P /mnt/data/tftpboot/temp https://sourceforge.net/projects/systemrescuecd/files/sysresccd-x86/2.3.0/systemrescuecd-x86-2.3.0.iso mount -o loop /mnt/data/tftpboot/temp/systemrescuecd-x86-2.3.0.iso /mnt/data/tftpboot/temp/mnt
Перемещаем файлы в основную папку и прибираемся за собой
cp -R /mnt/data/tftpboot/temp/mnt/* /mnt/data/tftpboot/sysrescd/2.3.0/ umount /mnt/data/tftpboot/temp/mnt rm -r /mnt/data/tftpboot/temp
По замыслу сборщиков дистрибутива, sysrescd изначально поддерживает TFTP,HTTP,NFS,NBD протоколы для запуска через сеть.
Далее рассмотрим вариант по протоколу NBD, т.к. он очень прост и НЕ требует более 400 Мб оперативной памяти на клиентском компьютере. Остальные варианты смотрим здесь
Устанавливаем NBD. Нам нужна 1 копия сервера на порту 2000. Экспортируемый файл "/mnt/data/tftpboot/sysrescd/2.3.0/sysrcd.dat"
aptitude install nbd-server dpkg-reconfigure nbd-server
Замена путей к файлам
Sysrescd заранее подготовлен только для собственной установки, поэтому нам нужно внедрить его в нашу схему размещения дистрибутивов.
Создаём скрипт замены путей в cfg файлах на соответствующие нашей файловой иерархии.
nano /usr/local/bin/rpl_text.sh
#!/bin/sh
# бинарники syslinux
sour='vesamenu.c32'
targ='pxelinux.cfg/vesamenu.c32'
dirr='/mnt/data/tftpboot/sysrescd/2.3.0/isolinux/'
grep --color -oiIrn "$sour" $dirr | awk -F':' '{print $1, $2, $0}' |
while read file string all
do
what=$(echo "${all}" | cut -d: -f3-)
sed -i -e "${string}s@${what}@${targ}@gi" "${file}"
done
sour='kdbmap.c32'
targ='pxelinux.cfg/kdbmap.c32'
dirr='/mnt/data/tftpboot/sysrescd/2.3.0/isolinux/'
grep --color -oiIrn "$sour" $dirr | awk -F':' '{print $1, $2, $0}' |
while read file string all
do
what=$(echo "${all}" | cut -d: -f3-)
sed -i -e "${string}s@${what}@${targ}@gi" "${file}"
done
sour='memdisk'
targ='pxelinux.cfg/memdisk'
dirr='/mnt/data/tftpboot/sysrescd/2.3.0/isolinux/'
grep --color -oiIrn "$sour" $dirr | awk -F':' '{print $1, $2, $0}' |
while read file string all
do
what=$(echo "${all}" | cut -d: -f3-)
sed -i -e "${string}s@${what}@${targ}@gi" "${file}"
done
sour='chain.c32'
targ='pxelinux.cfg/chain.c32'
dirr='/mnt/data/tftpboot/sysrescd/2.3.0/isolinux/'
grep --color -oiIrn "$sour" $dirr | awk -F':' '{print $1, $2, $0}' |
while read file string all
do
what=$(echo "${all}" | cut -d: -f3-)
sed -i -e "${string}s@${what}@${targ}@gi" "${file}"
done
# Ядра sysrescd
sour='LINUX rescue'
targ='LINUX sysrescd/2.3.0/isolinux/rescue'
dirr='/mnt/data/tftpboot/sysrescd/2.3.0/isolinux/'
grep --color -oiIrn "$sour" $dirr | awk -F':' '{print $1, $2, $0}' |
while read file string all
do
what=$(echo "${all}" | cut -d: -f3-)
sed -i -e "${string}s@${what}@${targ}@gi" "${file}"
done
sour='LINUX altker'
targ='LINUX sysrescd/2.3.0/isolinux/altker'
dirr='/mnt/data/tftpboot/sysrescd/2.3.0/isolinux/'
grep --color -oiIrn "$sour" $dirr | awk -F':' '{print $1, $2, $0}' |
while read file string all
do
what=$(echo "${all}" | cut -d: -f3-)
sed -i -e "${string}s@${what}@${targ}@gi" "${file}"
done
# initram sysrescd
sour='INITRD initram.igz'
targ='INITRD sysrescd/2.3.0/isolinux/initram.igz'
dirr='/mnt/data/tftpboot/sysrescd/2.3.0/isolinux/'
grep --color -oiIrn "$sour" $dirr | awk -F':' '{print $1, $2, $0}' |
while read file string all
do
what=$(echo "${all}" | cut -d: -f3-)
sed -i -e "${string}s@${what}@${targ}@gi" "${file}"
done
# Опции запуска sysrescd
sour='APPEND scandelay=1'
targ='APPEND nonm setkmap=ru scandelay=5 netboot=nbd://192.168.0.25:2000'
dirr='/mnt/data/tftpboot/sysrescd/2.3.0/isolinux/'
grep --color -oiIrn "$sour" $dirr | awk -F':' '{print $1, $2, $0}' |
while read file string all
do
what=$(echo "${all}" | cut -d: -f3-)
sed -i -e "${string}s@${what}@${targ}@gi" "${file}"
done
# Бинарники floppy tools
sour='/bootdisk/'
targ='/sysrescd/2.3.0/bootdisk/'
dirr='/mnt/data/tftpboot/sysrescd/2.3.0/isolinux/'
grep --color -oiIrn "$sour" $dirr | awk -F':' '{print $1, $2, $0}' |
while read file string all
do
what=$(echo "${all}" | cut -d: -f3-)
sed -i -e "${string}s@${what}@${targ}@gi" "${file}"
done
sour='initrd=/ntpasswd/initrd.cgz,/ntpasswd/scsi.cgz'
targ='initrd=/sysrescd/2.3.0/ntpasswd/initrd.cgz,/sysrescd/2.3.0/ntpasswd/scsi.cgz'
dirr='/mnt/data/tftpboot/sysrescd/2.3.0/isolinux/'
grep --color -oiIrn "$sour" $dirr | awk -F':' '{print $1, $2, $0}' |
while read file string all
do
what=$(echo "${all}" | cut -d: -f3-)
sed -i -e "${string}s@${what}@${targ}@gi" "${file}"
done
sour='/ntpasswd/vmlinuz'
targ='/sysrescd/2.3.0/ntpasswd/vmlinuz'
dirr='/mnt/data/tftpboot/sysrescd/2.3.0/isolinux/'
grep --color -oiIrn "$sour" $dirr | awk -F':' '{print $1, $2, $0}' |
while read file string all
do
what=$(echo "${all}" | cut -d: -f3-)
sed -i -e "${string}s@${what}@${targ}@gi" "${file}"
doneДелаем исполняемым и запускаем переименование
chmod +x /usr/local/bin/rpl_text.sh /usr/local/bin/rpl_text.sh
Настройка syslinux
Копируем дополнительные бинарные файлы syslinux в папку pxelinux.cfg
cp /usr/lib/syslinux/vesamenu.c32 /mnt/data/tftpboot/pxelinux.cfg/ cp /usr/lib/syslinux/chain.c32 /mnt/data/tftpboot/pxelinux.cfg/ cp /usr/lib/syslinux/kbdmap.c32 /mnt/data/tftpboot/pxelinux.cfg/ cp /usr/lib/syslinux/memdisk /mnt/data/tftpboot/pxelinux.cfg/
Добавляем в основной конфигурационный файл ссылку на дистрибутив
nano /mnt/data/tftpboot/pxelinux.cfg/default
label systemrescuecd-x86-2.3.0
kernel pxelinux.cfg/vesamenu.c32
config sysrescd/2.3.0/isolinux/isolinux.cfgНе забудьте проверить открыты ли порты на сервере.
Теперь все пункты меню должны работать 8)
Запуск Acronis True Image Echo Enterprise Server
Создаём папку для хранения дистрибутива. Например так:
mkdir -p /mnt/data/tftpboot/acronis/tuees
Устанавливаем в среде Windows Acronis True Image Echo Enterprise Server Заходим в C:\Program Files\Acronis\?TrueImageEchoEnterpriseServer\BartPE\Files
Ищем 2 файла: kernel.dat и ramdisk.dat
Копируем их в папку /mnt/data/tftpboot/acronis/tuees
Переименовываем в kernel и ramdisk соответственно.
Добавляем в основной конфигурационный файл ссылку на дистрибутив
nano /mnt/data/tftpboot/pxelinux.cfg/default
menu begin Acronis
menu title acronis utilites
label Acronis True Image Echo Enterprise
kernel /acronis/tu/kernel
append initrd=acronis/tu/ramdisk /s ramdisk_size=40000 quiet vga=791
label mainmenu
menu label ^Back..
menu exit
menu endТеперь будет работать. 8)
Запуск Windows PE
