Установка и настройка инструментов, позволяющих использовать 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