Differences between revisions 1 and 13 (spanning 12 versions)
Revision 1 as of 2009-12-14 08:16:06
Size: 74
Editor: FrBrGeorge
Comment:
Revision 13 as of 2009-12-19 13:06:04
Size: 24316
Editor: FrBrGeorge
Comment:
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
== हरे कृष्ण ==
## Занимательная часть -- про то, как тяжело пребывать со всеми возлюбленными одновременно (16108 штук)
Рабочий полдень застал Системного Администратора в глубоких, но слегка неплодотворных раздумьях.

Дело заключалось в следующем. По слухам, у боговоплощённого Кришны было шестнадцать тысяч сто восемь жён (из них сто восемь главных, из них — восемь главнейших, из них — одна наиглавнейшая). Обладая божественной способностью пребывать со всеми жёнами одновременно, Кришна творил с ними лилы, танцевал и играл на флейте. Древние фрески изображают, как Кришна танцует с флейтой у губ перед каждой из своих жён.

Вот эта-то флейта сейчас и занимает Системного Администратора более всего. Во-первых, она здоровенная, и должна петь басовито и гулко; хорошо бы поиграть на такой. А во-вторых, она, очевидно, переняла у Кришны способность пребывать со всеми жёнами одновременно!

Дело за малым: перенять эту способность — если не у Кришны, так хотя бы у флейты — и распространить на загрузочный DVD «Альт Линукс Ковчег 5.0 Рабочая Станция». Другими словами, Системному Администратору хочется пребывать со всеми рабочими станциями локальной сети одновременно и творить с ними процесс установки. Желание особенно обостряется при мысли, что через неделю (и через две, и через три) ситуация повторится. Однако эффект одновременного пребывания если и наблюдался, то пять с небольшим тысяч лет назад, и с той поры никто его не воспроизводил.

Порция утреннего кофе направляет мысли Системного Администратора в более рациональное русло.

В подведомственной ему локальной сети неожиданно образовалась текучка рабочих станций. Каждую неделю появляется с дюжину ранее не тронутых машин, и примерно такое же число (с установленной системой) убывает в филиалы. На новых компьютерах следует, не щадя из содержимого, устанавливать «Альт Линукс Ковчег 5.0 Рабочая Станция», это если он устанавливается. Если по какой-то причине дистрибутив установить нельзя, желательно (но не обязательно) содержимое жёсткого диска сохранить.

Загрузочный DVD «Альт Линукс Ковчег 5.0 Рабочая Станция» позволяет работать в т. н. режиме «Live CD», при котором система загружается с этого DVD, вообще не затрагивая жёсткого диска. Если LiveCD загрузился, то и установка системы с него пройдёт нормально.

Сюжет новой фрески: Системный Администратор танцует с диском в руках перед каждой их своих рабочих станций одновременно.

== Постановка задачи ==
## Работающий сервер
## Одноранговый класс
## Устанавливать и переустанавливать
Ещё одна порция кофе заставляет Системного Администратора понять, что он чуть было не перепутал ''задачу'' и один из ''способов её решения'' (к тому же трудно реализуемый).
  Дано::
    * Одноранговая локальная сеть, в которой появляются всё новые компьютеры
    * Сеть обслуживается сервером на базе дистрибутива «Альт Линукс Ковчег 5.0 Сервер»
  Требуется::
    * Обеспечить по возможности быструю и простую проверку работоспособности дистрибутива «Альт Линукс Ковчег 5.0 Рабочая Станция» на новых компьютерах (без модификации содержимого жёстких дисков)
    * Обеспечить по возможности быструю и простую установку дистрибутива «Альт Линукс Ковчег 5.0 Рабочая Станция» на новые компьютеры
  Условия::
    * Все новые компьютеры подключаются к локальной сети
    * Сетевые карты этих компьютеров поддерживают т. н. «сетевую загрузку» (по протоколу PXE)
== Решение ==
=== На сервере ===
Самый очевидный — и, по-видимому, правильный — путь решения состоит в том, чтобы заставить рабочую станцию загружать и устанавливать операционную систему ''с сервера'' посредством локальной сети, а не с отдельного носителя. Более точно: надо изыскать способ загрузить по сети ''установщик'' «Альт Линукс Ковчег 5.0 Рабочая Станция» и указать ему ''хранилище пакетов'' для «чистой» установки пакетов.

Здесь нас подстерегает тщательно подготовленная удача: именно такая возможность встроена в дистрибутивы Пятой платформы! В конфигураторе сервера
<<Picture(attachment:snap-18_58_43.png, "Ковчег. Пожалуйста, зарегистрируйтесь")>>
есть отдельный модуль «Сервер сетевых установок»:
<<Picture(attachment:snap-18_59_32.png, Волшебный горшочек?)>>
Всё, что от нас требуется, — это вставить DVD с дистрибутивом «Альт Линукс Ковчег 5.0 Рабочая Станция» в привод,
<<Picture(attachment:snap-19_01_30.png, "Добавим диск «Альт Линукс Ковчег 5.0 Рабочая Станция»")>>
скопировать его,
<<Picture(attachment:snap-19_02_01.png, Полузащитник обрабатывает мяч... обрабатывает его... обрабатывает...)>>
и попросить сервер раздавать содержимое этого диска для сетевой загрузки
<<Picture(attachment:snap-19_05_58.png, ...обработал!)>>
=== На клиентской машине ===
Большинство современных сетевых карт, в том числе интегрированных в системные платы, поддерживают загрузку специального вида программ по сети посредством семейства протоколов PXE. На отдельных, не интегрированных, устройствах можно иногда заметить ряды неиспользуемых контактов или колодки для подключения микросхем. Это верный признак того, что устройство ''не'' поддерживает сетевую загрузку. Обычно возможность загрузки по сети обозначена в BIOS (где-нибудь в разделе «Boot priority»), либо самостоятельно анонсируется сетевой картой при включении компьютера.

В некоторых версиях BIOS даже есть возможность не меняяя настроек BIOS разово выбрать иное учстройство для загрузки:
<<Picture(attachment:snap-19_16_26.png, Спасибо тебе, разработчик BIOS!)>>

Иногда в этих меню пишут ключевое слово «PXE», иногда «int 18», иногда показывают модель сетевого устройства, а иногда без затей предлгают «загрузку по сети»:
<<Picture(attachment:snap-19_16_62.png, Выбор сетевой загрузки)>>

Сетевая карта самостоятельно обращается к DHCP-серверу, и требует у него два вида информации: сетевый настройки и имя файла с программой, которую следует загрузить по сети (испльзуетеся протокол TFTP) и запустить; адрес TFTP-сервера также предварительно запрашивается:
<<Picture(attachment:snap-19_22_05.png, Сетевая загрузка: DHCP)>>

Загрузчик (в нашем слкчае он называется `pxelinux.0`), в свою очередь, скачивает с сервера конфигурвационный файл:
<<Picture(attachment:snap-19_23_41.png, Сетевая загрузка: PXE-загрузчик)>>
«Лесенка» на этой картинке показывает, что ни один из конфигурационных файлов найти не удалось, кроме последнего, с именем `pxelinix.cfg/default` («unknown keyword», т. е. нераспознанное ключевое слово, очевидно, не сказалось на работоспособности загрузчика). Намётанный глаз Системного Администратора уловил соответствие MAC-адреса сетевой карты и ''первого'' из имён конфигурационного файла, а вот что последующие имена представляют собой шестнадцатеричное выражение ''IP-адреса'' и его частей, ему в голову не пришло.

Так или иначе, конфигурацонный файл загружен; можно выбирать разные профили загрузки, если ничего не трогать, будет использован профиль по умолчанию:
<<Picture(attachment:snap-19_23_49.png, Сетевая загрузка: меню выбора)>>

Загрузчик, опять-таки по SFTP, добудет ядро Linux и стартовый виртуальный диск
<<Picture(attachment:snap-19_24_09.png, Сетевая загрузка: ядро и стартовый виртуальный диск)>>
и передаст управление ядру.

Ядро, как водится, запустит со стартового виртуального диска «маленький Linux»
<<Picture(attachment:snap-19_26_33.png, Старт установщика по сети)>>
В дистрибутивах принято «занавешивать» процесс загрузки экраном-индикатором, но можно нажать `ESC`, и
появятся сообщения, выводимые при загрузке различными подсистемами.

<<Picture(attachment:snap-19_27_02.png, Задача сведена к уже решённой!)>>
А это уже совсем настоящий установщик системы!

Далее мы без особых трудностей устанавливаем «Альт Линукс Ковчег 5.0 Рабочая Станция»; надо только не забыть подключиться к имеющемуся домену.
<<Picture(attachment:snap-20_13_48.png, Не забыть зарегистрироваться в домене)>>

=== Аппетит приходит во время еды ===

С одной стороны, загрузчик, дошедший до стадии «разметка диска» — вполне серьёзное тестирование компьютера на предмет устанавливаемости дистрибутива: сеть работает, графическая подсистема работает, диск виден. С другой стороны, это совсем не эффектно: ни приложение запустить, ни в Интернет выйти, не говоря уже о том, что начальству показывать ровным счётом нечего.

В конце концов, раз уж можно ''установщик'' загрузить по сети, то почему нельзя загрузить ''LiveCD''?

Отчего же нельзя? Можно; для этого достаточно загрузчику указать имя профиля `live`, отличного от профиля `altinst` по умолчанию:
<<Picture(attachment:snap-1217-13_19_37.png, Загрузка профиля «live»)>>

Система чудесным образом загрузится! Правда, интерфейс отчего-то окажется на английском языке:
<<Picture(attachment:snap-1217-13_31_04.png, Отсутствие DNS при загрузке по сети)>>
Вдобавок сетевые настройки в таком режиме явно недостаточные: например, нет информации о DNS-сервере, что означает невозможность

Однако задача-то протестировать работу дистрибутива решена!

== Первые шаги: шаг вправо, шаг влево, прыжок на месте ==
## Про NM и почему выключен
## про PXE и гигабит
{{{
[root@host-15 ~]# cat /etc/dhcp/dhcpd.conf
 . . .
subnet 10.30.50.0 netmask 255.255.255.0 {
        next-server 10.30.50.1;
        filename "pxelinux.0";
        option root-path "/var/srv/public/netinst/current";
        option routers 10.30.50.1;
        option domain-name-servers 10.30.50.1;
        option domain-name "office";
        default-lease-time 86400;
        max-lease-time 86400;
        range 10.30.50.10 10.30.50.100;
}
}}}

{{{
[root@host-15 ~]# ls /var/lib/tftpboot/
pxelinux.0 pxelinux.cfg syslinux
}}}

{{{
[root@host-15 ~]# ls /var/lib/tftpboot/syslinux/
16x16.fnt da.hlp fi.tr init lt.tr pt.tr timer_a.jpg
af.tr da.tr fr.hlp isolinux.bin memtest pt_BR.tr tr.tr
alt0 de.tr fr.tr isolinux.cfg mr.hlp ro.hlp uk.hlp
ar.hlp el.hlp gfxboot.cfg it.hlp mr.tr ro.tr uk.tr
ar.tr el.tr gl.hlp it.tr nb.hlp ru.hlp wa.tr
back.jpg en.hlp gl.tr ja.tr nb.tr ru.tr xh.tr
bg.tr en.tlk gu.hlp ka.tr nl.hlp sk.hlp zh_CN.hlp
boot.cat en.tr gu.tr ko.hlp nl.tr sk.tr zh_CN.tr
bootlogo es.hlp hi.tr ko.tr pa.hlp sl.tr zh_TW.hlp
ca.hlp es.tr hr.tr kroete.dat pa.tr sr.tr zh_TW.tr
ca.tr et.hlp hu.hlp lang pl.hlp sv.hlp zu.tr
cs.hlp et.tr hu.tr languages pl.tr sv.tr
cs.tr fi.hlp id.tr lt.hlp pt.hlp ta.tr
}}}

{{{
[root@host-15 ~]# ls /var/lib/tftpboot/syslinux/alt0/
full.cz vmlinuz
}}}

{{{
[root@host-15 ~]# cat /var/lib/tftpboot/pxelinux.cfg/default.orig
default linux
prompt 1
timeout 100
gfxboot syslinux/bootlogo
display syslinux/boot.msg
implicit 1

label harddisk
  localboot 0x80

label linux
  kernel syslinux/alt0/vmlinuz
    append initrd=syslinux/alt0/full.cz changedisk ramdisk_size=65536 lang=ru_RU vga=0x314 splash=silent splashcount=17 xdriver=auto showopts automatic=method:nfs,network:dhcp tz=Europe/Moscow

 . . .

label live
  kernel syslinux/alt0/vmlinuz
  append initrd=syslinux/alt0/full.cz live fastboot vga=0x314 splash=silent splashcount=17 stagename=live showopts automatic=method:nfs,network:dhcp tz=Europe/Moscow

 . . .
}}}

{{{
[root@host-15 ~]# cat /etc/exports
/srv/public -ro,insecure,no_subtree_check,no_root_squash *
/srv/share -rw,insecure,fsid=0,sec=krb5 *
}}}
----
==== Загрузка с LiveCD на сервере ====
<<Picture(attachment:snap-1217-13_32_51.png, 1217-13_32_51)>>
{{{
[root@localhost ~]# cat /etc/fstab
proc /proc proc nosuid,noexec,gid=proc 0 0
devpts /dev/pts devpts nosuid,noexec,gid=tty,mode=620 0 0
tmpfs /tmp tmpfs nosuid 0 0
/dev/root / auto defaults,ro 0 0
UUID=b391cc0a-59c0-4313-b6f2-31f9096b6ba4 swap swap defaults 0 0
UUID=e40fc352-f031-4827-ab7c-a7ebe12ecc5e /mnt/hda2 ext3 noauto 0 0
UUID=2a86bf2b-5d8c-4c04-9acf-0f47448ea45c /mnt/hda5 ext3 noauto 0 0
UUID=a12e05b3-671f-4914-9d5e-f07cefd2570c /mnt/hda6 ext3 noauto 0 0
}}}

{{{
[root@localhost ~]# mount /mnt/hda5
[root@localhost ~]# ls /mnt/hda5/
adm avahi empty local lost+found nobody resolv srv yp
aquota.group cache ftp lock mail opt run tmp
aquota.user db lib log nis preserve spool www
}}}

{{{
[root@localhost ~]# mount -t squashfs -o loop /image/live /mnt/hda2
[root@localhost ~]# cp -a /mnt/hda2 /mnt/hda5/srv/public/netinst
}}}

{{{
[root@localhost ~]# mkdir /mnt/hda5/srv/public/netinst/livefs
[root@localhost ~]# cd /image
[root@localhost image]# cp -a .??* [^l]* lic* /mnt/hda5/srv/public/netinst/livefs/
}}}

==== Настройка сервера ====
{{{
[root@host-15 ~]# diff -u /srv/public/netinst/livefs/live/etc/init.d/livecd-fstab{.orig,}
--- /srv/public/netinst/livefs/live/etc/init.d/livecd-fstab.orig 2009-12-17 21:52:20 +0300
+++ /srv/public/netinst/livefs/live/etc/init.d/livecd-fstab 2009-12-17 21:52:51 +0300
@@ -16,9 +16,9 @@
 MNT_PREFIX="/mnt"
 FSTAB="/etc/fstab"
 UDEVADM="/sbin/udevadm"
-MOUNT_OPTIONS_VFAT="users,noatime,codepage=866,shortname=winnt,iocharset=utf8,gid=0100,fmask=111,dmask=0000"
-MOUNT_OPTIONS_NTFS3G="users,locale=ru_RU.utf8,gid=100,fmask=111,force,dmask=000" # force
-MOUNT_OPTIONS_OTHER="noauto"
+MOUNT_OPTIONS_VFAT="users,ro,noatime,codepage=866,shortname=winnt,iocharset=utf8,gid=0100,fmask=111,dmask=0000"
+MOUNT_OPTIONS_NTFS3G="users,ro,locale=ru_RU.utf8,gid=100,fmask=111,force,dmask=000" # force
+MOUNT_OPTIONS_OTHER="noauto,ro"
 
 log() {
     initlog $INITLOG_ARGS -n $0 -s "$1"
}}}

{{{
[root@host-15 ~]# cat /etc/exports
/srv/public -ro,insecure,no_subtree_check,no_root_squash *
/srv/share -rw,insecure,fsid=0,sec=krb5 *
}}}

{{{
[root@host-15 ~]# service nfs restart
Stopping NFS mount service: [ DONE ]
Stopping NFS daemon: [ DONE ]
Stopping NFS svcgssd service: [ DONE ]
Stopping NFS quotas service: [ DONE ]
Unexporting NFS file systems: [ DONE ]
Exporting NFS file systems: [ DONE ]
Starting NFS quotas service: [ DONE ]
Starting NFS svcgssd service: [ DONE ]
Starting NFS daemon: [ DONE ]
Starting NFS mount service: [ DONE ]
Stopping rpc.idmapd service: [ DONE ]
Starting rpc.idmapd service: [ DONE ]
}}}

{{{
[root@host-15 ~]# cd /srv/public/netinst/
[root@host-15 netinst]# mv hda2 livefs/live
[root@host-15 netinst]# chmod 755 hda2/
}}}

{{{
[root@host-15 ~]# cat /var/lib/tftpboot/pxelinux.cfg/default
default live
prompt 0
timeout 0
noescape 1

label live
  kernel syslinux/alt0/vmlinuz
  append initrd=syslinux/alt0/full.cz live fastboot lang=ru_RU vga=0x314 splash=silent splashcount=17 stagename=live showopts automatic=method:nfs,network:dhcp tz=Europe/Moscow
}}}

{{{
[root@host-15 ~]# ln -sf livefs /srv/public/netinst/current
[root@host-15 ~]# l /srv/public/netinst/
total 2630452
drwxr-xr-x 5 root _ahttpd 4096 Dec 18 15:45 ./
lrwxrwxrwx 1 root root 6 Dec 18 15:45 current -> livefs/
drwxr-xr-x 8 root root 4096 Dec 17 21:01 livefs/
drwxr-xr-x 3 root root 4096 Dec 17 21:00 ../
drwxr-xr-x 2 root root 4096 Dec 17 20:35 mnt/
drwxr-xr-x 2 root _ahttpd 4096 Dec 17 20:35 download/
-rw-r--r-- 1 root root 67 Dec 17 20:34 list
-rw-r--r-- 1 root root 2690922496 Dec 17 20:34 1.img
}}}

==== Настройка файловой системы клиента ====

{{{
[root@host-15 ~]# chroot /srv/public/netinst/livefs/live/
[root@host-15 /]# cat > /etc/rc.d/rc.local
#!/bin/sh
dhcpcd -p eth0
^D
[root@host-15 /]# chmod +x /etc/rc.d/rc.local
[root@host-15 /]# { echo "P@sSw0RD" ; echo "P@sSw0RD" ; } | passwd --stdin root
}}}

{{{
[root@host-15 ~]# diff -u /srv/public/netinst/livefs/live/etc/init.d/livecd-save-nfs{.orig,}
--- /srv/public/netinst/livefs/live/etc/init.d/livecd-save-nfs.orig 2009-12-18 15:39:55 +0300
+++ /srv/public/netinst/livefs/live/etc/init.d/livecd-save-nfs 2009-12-18 15:39:57 +0300
@@ -16,6 +16,7 @@
 {
         if ip -o a | grep -q 'eth.*UP' ; then
                 iface=$(ip -o a | grep 'eth.*UP' | cut -f 2 -d' ' | tr -d ':')
+ ls /etc/net/ifaces > /dev/null
                 mkdir -p /etc/net/ifaces/$iface
                 echo 'NM_CONTROLLED=no' >> /etc/net/ifaces/$iface/options
                 echo 'BOOTPROTO=dhcp' >> /etc/net/ifaces/$iface/options
}}}
## Упомянуть про menu и vesamenu
-----

LiveCD по сети:
  * Загрузиться с Livecd на сервере
  * смонтировать /image/live на /mnt/sda2
  * смонтировать /mnt/sda5
  * скопировать /mnt/sda2 на /mnt/sda5/srv/public/netinst
  * загрузить сервер
  * создать /srv/public/netinst/livefs
  * скопировать /srv/public/netinst/mnt/* (всё, кроме live и ALTLinux) на /srv/public/netinst/livefs
  * mv /srv/public/netinst/sda2 /srv/public/netinst/livefs/live
  * chroot /srv/public/netinst/livefs
    * chkconfig chkconfig livecd-save-nfs off
    * NM_CONTROLLED=no в /etc/net/ifaces/default/options
    * echo "#!/bin/sh\ndhcpcd eth0" > /etc/rc/rc.local; chmod +x /etc/rc/rc.local
    * установить пароль оута
    * убрать монтирование левых разделов
  * ln -sf livefs current

Сетевая установка и сетевая загрузка

हरे कृष्ण

Рабочий полдень застал Системного Администратора в глубоких, но слегка неплодотворных раздумьях.

Дело заключалось в следующем. По слухам, у боговоплощённого Кришны было шестнадцать тысяч сто восемь жён (из них сто восемь главных, из них — восемь главнейших, из них — одна наиглавнейшая). Обладая божественной способностью пребывать со всеми жёнами одновременно, Кришна творил с ними лилы, танцевал и играл на флейте. Древние фрески изображают, как Кришна танцует с флейтой у губ перед каждой из своих жён.

Вот эта-то флейта сейчас и занимает Системного Администратора более всего. Во-первых, она здоровенная, и должна петь басовито и гулко; хорошо бы поиграть на такой. А во-вторых, она, очевидно, переняла у Кришны способность пребывать со всеми жёнами одновременно!

Дело за малым: перенять эту способность — если не у Кришны, так хотя бы у флейты — и распространить на загрузочный DVD «Альт Линукс Ковчег 5.0 Рабочая Станция». Другими словами, Системному Администратору хочется пребывать со всеми рабочими станциями локальной сети одновременно и творить с ними процесс установки. Желание особенно обостряется при мысли, что через неделю (и через две, и через три) ситуация повторится. Однако эффект одновременного пребывания если и наблюдался, то пять с небольшим тысяч лет назад, и с той поры никто его не воспроизводил.

Порция утреннего кофе направляет мысли Системного Администратора в более рациональное русло.

В подведомственной ему локальной сети неожиданно образовалась текучка рабочих станций. Каждую неделю появляется с дюжину ранее не тронутых машин, и примерно такое же число (с установленной системой) убывает в филиалы. На новых компьютерах следует, не щадя из содержимого, устанавливать «Альт Линукс Ковчег 5.0 Рабочая Станция», это если он устанавливается. Если по какой-то причине дистрибутив установить нельзя, желательно (но не обязательно) содержимое жёсткого диска сохранить.

Загрузочный DVD «Альт Линукс Ковчег 5.0 Рабочая Станция» позволяет работать в т. н. режиме «Live CD», при котором система загружается с этого DVD, вообще не затрагивая жёсткого диска. Если LiveCD загрузился, то и установка системы с него пройдёт нормально.

Сюжет новой фрески: Системный Администратор танцует с диском в руках перед каждой их своих рабочих станций одновременно.

Постановка задачи

Ещё одна порция кофе заставляет Системного Администратора понять, что он чуть было не перепутал задачу и один из способов её решения (к тому же трудно реализуемый).

Дано
  • Одноранговая локальная сеть, в которой появляются всё новые компьютеры
  • Сеть обслуживается сервером на базе дистрибутива «Альт Линукс Ковчег 5.0 Сервер»
Требуется
  • Обеспечить по возможности быструю и простую проверку работоспособности дистрибутива «Альт Линукс Ковчег 5.0 Рабочая Станция» на новых компьютерах (без модификации содержимого жёстких дисков)
  • Обеспечить по возможности быструю и простую установку дистрибутива «Альт Линукс Ковчег 5.0 Рабочая Станция» на новые компьютеры
Условия
  • Все новые компьютеры подключаются к локальной сети
  • Сетевые карты этих компьютеров поддерживают т. н. «сетевую загрузку» (по протоколу PXE)

Решение

На сервере

Самый очевидный — и, по-видимому, правильный — путь решения состоит в том, чтобы заставить рабочую станцию загружать и устанавливать операционную систему с сервера посредством локальной сети, а не с отдельного носителя. Более точно: надо изыскать способ загрузить по сети установщик «Альт Линукс Ковчег 5.0 Рабочая Станция» и указать ему хранилище пакетов для «чистой» установки пакетов.

Здесь нас подстерегает тщательно подготовленная удача: именно такая возможность встроена в дистрибутивы Пятой платформы! В конфигураторе сервера

Ковчег. Пожалуйста, зарегистрируйтесь
Ковчег. Пожалуйста, зарегистрируйтесь
есть отдельный модуль «Сервер сетевых установок»:
Волшебный горшочек?
Волшебный горшочек?
Всё, что от нас требуется, — это вставить DVD с дистрибутивом «Альт Линукс Ковчег 5.0 Рабочая Станция» в привод,
Добавим диск «Альт Линукс Ковчег 5.0 Рабочая Станция»
Добавим диск «Альт Линукс Ковчег 5.0 Рабочая Станция»
скопировать его,
Полузащитник обрабатывает мяч... обрабатывает его... обрабатывает...
Полузащитник обрабатывает мяч... обрабатывает его... обрабатывает...
и попросить сервер раздавать содержимое этого диска для сетевой загрузки
...обработал!
...обработал!

На клиентской машине

Большинство современных сетевых карт, в том числе интегрированных в системные платы, поддерживают загрузку специального вида программ по сети посредством семейства протоколов PXE. На отдельных, не интегрированных, устройствах можно иногда заметить ряды неиспользуемых контактов или колодки для подключения микросхем. Это верный признак того, что устройство не поддерживает сетевую загрузку. Обычно возможность загрузки по сети обозначена в BIOS (где-нибудь в разделе «Boot priority»), либо самостоятельно анонсируется сетевой картой при включении компьютера.

В некоторых версиях BIOS даже есть возможность не меняяя настроек BIOS разово выбрать иное учстройство для загрузки:

Спасибо тебе
Спасибо тебе

Иногда в этих меню пишут ключевое слово «PXE», иногда «int 18», иногда показывают модель сетевого устройства, а иногда без затей предлгают «загрузку по сети»:

Выбор сетевой загрузки
Выбор сетевой загрузки

Сетевая карта самостоятельно обращается к DHCP-серверу, и требует у него два вида информации: сетевый настройки и имя файла с программой, которую следует загрузить по сети (испльзуетеся протокол TFTP) и запустить; адрес TFTP-сервера также предварительно запрашивается:

Сетевая загрузка: DHCP
Сетевая загрузка: DHCP

Загрузчик (в нашем слкчае он называется pxelinux.0), в свою очередь, скачивает с сервера конфигурвационный файл:

Сетевая загрузка: PXE-загрузчик
Сетевая загрузка: PXE-загрузчик
«Лесенка» на этой картинке показывает, что ни один из конфигурационных файлов найти не удалось, кроме последнего, с именем pxelinix.cfg/default («unknown keyword», т. е. нераспознанное ключевое слово, очевидно, не сказалось на работоспособности загрузчика). Намётанный глаз Системного Администратора уловил соответствие MAC-адреса сетевой карты и первого из имён конфигурационного файла, а вот что последующие имена представляют собой шестнадцатеричное выражение IP-адреса и его частей, ему в голову не пришло.

Так или иначе, конфигурацонный файл загружен; можно выбирать разные профили загрузки, если ничего не трогать, будет использован профиль по умолчанию:

Сетевая загрузка: меню выбора
Сетевая загрузка: меню выбора

Загрузчик, опять-таки по SFTP, добудет ядро Linux и стартовый виртуальный диск

Сетевая загрузка: ядро и стартовый виртуальный диск
Сетевая загрузка: ядро и стартовый виртуальный диск
и передаст управление ядру.

Ядро, как водится, запустит со стартового виртуального диска «маленький Linux»

Старт установщика по сети
Старт установщика по сети
В дистрибутивах принято «занавешивать» процесс загрузки экраном-индикатором, но можно нажать ESC, и появятся сообщения, выводимые при загрузке различными подсистемами.

Задача сведена к уже решённой!
Задача сведена к уже решённой!
А это уже совсем настоящий установщик системы!

Далее мы без особых трудностей устанавливаем «Альт Линукс Ковчег 5.0 Рабочая Станция»; надо только не забыть подключиться к имеющемуся домену.

Не забыть зарегистрироваться в домене
Не забыть зарегистрироваться в домене

Аппетит приходит во время еды

С одной стороны, загрузчик, дошедший до стадии «разметка диска» — вполне серьёзное тестирование компьютера на предмет устанавливаемости дистрибутива: сеть работает, графическая подсистема работает, диск виден. С другой стороны, это совсем не эффектно: ни приложение запустить, ни в Интернет выйти, не говоря уже о том, что начальству показывать ровным счётом нечего.

В конце концов, раз уж можно установщик загрузить по сети, то почему нельзя загрузить LiveCD?

Отчего же нельзя? Можно; для этого достаточно загрузчику указать имя профиля live, отличного от профиля altinst по умолчанию:

Загрузка профиля «live»
Загрузка профиля «live»

Система чудесным образом загрузится! Правда, интерфейс отчего-то окажется на английском языке:

Отсутствие DNS при загрузке по сети
Отсутствие DNS при загрузке по сети
Вдобавок сетевые настройки в таком режиме явно недостаточные: например, нет информации о DNS-сервере, что означает невозможность

Однако задача-то протестировать работу дистрибутива решена!

Первые шаги: шаг вправо, шаг влево, прыжок на месте

[root@host-15 ~]# cat /etc/dhcp/dhcpd.conf
 . . .
subnet 10.30.50.0 netmask 255.255.255.0 {
        next-server 10.30.50.1;
        filename "pxelinux.0";
        option root-path "/var/srv/public/netinst/current";
        option routers 10.30.50.1;
        option domain-name-servers 10.30.50.1;
        option domain-name "office";
        default-lease-time 86400;
        max-lease-time 86400;
        range 10.30.50.10 10.30.50.100;
}

[root@host-15 ~]# ls /var/lib/tftpboot/
pxelinux.0  pxelinux.cfg  syslinux

[root@host-15 ~]# ls /var/lib/tftpboot/syslinux/
16x16.fnt  da.hlp  fi.tr        init          lt.tr    pt.tr     timer_a.jpg
af.tr      da.tr   fr.hlp       isolinux.bin  memtest  pt_BR.tr  tr.tr
alt0       de.tr   fr.tr        isolinux.cfg  mr.hlp   ro.hlp    uk.hlp
ar.hlp     el.hlp  gfxboot.cfg  it.hlp        mr.tr    ro.tr     uk.tr
ar.tr      el.tr   gl.hlp       it.tr         nb.hlp   ru.hlp    wa.tr
back.jpg   en.hlp  gl.tr        ja.tr         nb.tr    ru.tr     xh.tr
bg.tr      en.tlk  gu.hlp       ka.tr         nl.hlp   sk.hlp    zh_CN.hlp
boot.cat   en.tr   gu.tr        ko.hlp        nl.tr    sk.tr     zh_CN.tr
bootlogo   es.hlp  hi.tr        ko.tr         pa.hlp   sl.tr     zh_TW.hlp
ca.hlp     es.tr   hr.tr        kroete.dat    pa.tr    sr.tr     zh_TW.tr
ca.tr      et.hlp  hu.hlp       lang          pl.hlp   sv.hlp    zu.tr
cs.hlp     et.tr   hu.tr        languages     pl.tr    sv.tr
cs.tr      fi.hlp  id.tr        lt.hlp        pt.hlp   ta.tr

[root@host-15 ~]# ls /var/lib/tftpboot/syslinux/alt0/
full.cz  vmlinuz

[root@host-15 ~]# cat  /var/lib/tftpboot/pxelinux.cfg/default.orig 
default linux
prompt 1
timeout 100
gfxboot syslinux/bootlogo
display syslinux/boot.msg
implicit 1

label harddisk
  localboot 0x80

label linux
  kernel syslinux/alt0/vmlinuz
    append initrd=syslinux/alt0/full.cz changedisk ramdisk_size=65536 lang=ru_RU vga=0x314 splash=silent splashcount=17 xdriver=auto showopts automatic=method:nfs,network:dhcp tz=Europe/Moscow

 . . .

label live
  kernel syslinux/alt0/vmlinuz
  append initrd=syslinux/alt0/full.cz live fastboot vga=0x314 splash=silent splashcount=17 stagename=live showopts automatic=method:nfs,network:dhcp tz=Europe/Moscow

 . . .

[root@host-15 ~]# cat /etc/exports 
/srv/public -ro,insecure,no_subtree_check,no_root_squash *
/srv/share -rw,insecure,fsid=0,sec=krb5 *


Загрузка с LiveCD на сервере

1217-13_32_51
1217-13_32_51
[root@localhost ~]# cat /etc/fstab
proc            /proc                   proc    nosuid,noexec,gid=proc          0 0
devpts          /dev/pts                devpts  nosuid,noexec,gid=tty,mode=620  0 0
tmpfs           /tmp                    tmpfs   nosuid                          0 0
/dev/root / auto  defaults,ro 0 0
UUID=b391cc0a-59c0-4313-b6f2-31f9096b6ba4       swap    swap    defaults        0      0
UUID=e40fc352-f031-4827-ab7c-a7ebe12ecc5e       /mnt/hda2       ext3    noauto  0      0
UUID=2a86bf2b-5d8c-4c04-9acf-0f47448ea45c       /mnt/hda5       ext3    noauto  0      0
UUID=a12e05b3-671f-4914-9d5e-f07cefd2570c       /mnt/hda6       ext3    noauto  0      0

[root@localhost ~]# mount /mnt/hda5
[root@localhost ~]# ls /mnt/hda5/
adm           avahi  empty  local  lost+found  nobody    resolv  srv  yp
aquota.group  cache  ftp    lock   mail        opt       run     tmp
aquota.user   db     lib    log    nis         preserve  spool   www

[root@localhost ~]# mount -t squashfs -o loop /image/live /mnt/hda2
[root@localhost ~]# cp -a /mnt/hda2 /mnt/hda5/srv/public/netinst

[root@localhost ~]# mkdir /mnt/hda5/srv/public/netinst/livefs
[root@localhost ~]# cd /image
[root@localhost image]# cp -a .??* [^l]* lic* /mnt/hda5/srv/public/netinst/livefs/

Настройка сервера

[root@host-15 ~]# diff -u /srv/public/netinst/livefs/live/etc/init.d/livecd-fstab{.orig,}
--- /srv/public/netinst/livefs/live/etc/init.d/livecd-fstab.orig        2009-12-17 21:52:20 +0300
+++ /srv/public/netinst/livefs/live/etc/init.d/livecd-fstab     2009-12-17 21:52:51 +0300
@@ -16,9 +16,9 @@
 MNT_PREFIX="/mnt"
 FSTAB="/etc/fstab"
 UDEVADM="/sbin/udevadm"
-MOUNT_OPTIONS_VFAT="users,noatime,codepage=866,shortname=winnt,iocharset=utf8,gid=0100,fmask=111,dmask=0000"
-MOUNT_OPTIONS_NTFS3G="users,locale=ru_RU.utf8,gid=100,fmask=111,force,dmask=000" # force
-MOUNT_OPTIONS_OTHER="noauto"
+MOUNT_OPTIONS_VFAT="users,ro,noatime,codepage=866,shortname=winnt,iocharset=utf8,gid=0100,fmask=111,dmask=0000"
+MOUNT_OPTIONS_NTFS3G="users,ro,locale=ru_RU.utf8,gid=100,fmask=111,force,dmask=000" # force
+MOUNT_OPTIONS_OTHER="noauto,ro"
 
 log() {
     initlog $INITLOG_ARGS -n $0 -s "$1"

[root@host-15 ~]# cat /etc/exports 
/srv/public -ro,insecure,no_subtree_check,no_root_squash *
/srv/share -rw,insecure,fsid=0,sec=krb5 *

[root@host-15 ~]# service nfs restart
Stopping NFS mount service: [ DONE ]
Stopping NFS daemon: [ DONE ]
Stopping NFS svcgssd service: [ DONE ]
Stopping NFS quotas service: [ DONE ]
Unexporting NFS file systems: [ DONE ]
Exporting NFS file systems: [ DONE ]
Starting NFS quotas service: [ DONE ]
Starting NFS svcgssd service: [ DONE ]
Starting NFS daemon: [ DONE ]
Starting NFS mount service: [ DONE ]
Stopping rpc.idmapd service: [ DONE ]
Starting rpc.idmapd service: [ DONE ]

[root@host-15 ~]# cd /srv/public/netinst/
[root@host-15 netinst]# mv hda2 livefs/live
[root@host-15 netinst]# chmod 755 hda2/

[root@host-15 ~]# cat  /var/lib/tftpboot/pxelinux.cfg/default
default live
prompt 0
timeout 0
noescape 1

label live
  kernel syslinux/alt0/vmlinuz
  append initrd=syslinux/alt0/full.cz live fastboot lang=ru_RU vga=0x314 splash=silent splashcount=17 stagename=live showopts automatic=method:nfs,network:dhcp tz=Europe/Moscow

[root@host-15 ~]# ln -sf livefs /srv/public/netinst/current
[root@host-15 ~]# l /srv/public/netinst/
total 2630452
drwxr-xr-x 5 root _ahttpd       4096 Dec 18 15:45 ./
lrwxrwxrwx 1 root root             6 Dec 18 15:45 current -> livefs/
drwxr-xr-x 8 root root          4096 Dec 17 21:01 livefs/
drwxr-xr-x 3 root root          4096 Dec 17 21:00 ../
drwxr-xr-x 2 root root          4096 Dec 17 20:35 mnt/
drwxr-xr-x 2 root _ahttpd       4096 Dec 17 20:35 download/
-rw-r--r-- 1 root root            67 Dec 17 20:34 list
-rw-r--r-- 1 root root    2690922496 Dec 17 20:34 1.img

Настройка файловой системы клиента

[root@host-15 ~]# chroot /srv/public/netinst/livefs/live/
[root@host-15 /]# cat > /etc/rc.d/rc.local
#!/bin/sh
dhcpcd -p eth0
^D
[root@host-15 /]# chmod +x /etc/rc.d/rc.local
[root@host-15 /]# { echo "P@sSw0RD" ; echo "P@sSw0RD" ; } | passwd --stdin root

[root@host-15 ~]# diff -u /srv/public/netinst/livefs/live/etc/init.d/livecd-save-nfs{.orig,}
--- /srv/public/netinst/livefs/live/etc/init.d/livecd-save-nfs.orig     2009-12-18 15:39:55 +0300
+++ /srv/public/netinst/livefs/live/etc/init.d/livecd-save-nfs  2009-12-18 15:39:57 +0300
@@ -16,6 +16,7 @@
 {
         if ip -o a | grep -q 'eth.*UP' ; then 
                 iface=$(ip -o a | grep 'eth.*UP' | cut -f 2 -d' ' | tr -d ':')
+                ls /etc/net/ifaces > /dev/null
                 mkdir -p /etc/net/ifaces/$iface
                 echo 'NM_CONTROLLED=no' >> /etc/net/ifaces/$iface/options
                 echo 'BOOTPROTO=dhcp' >> /etc/net/ifaces/$iface/options


LiveCD по сети:

  • Загрузиться с Livecd на сервере
  • смонтировать /image/live на /mnt/sda2
  • смонтировать /mnt/sda5
  • скопировать /mnt/sda2 на /mnt/sda5/srv/public/netinst
  • загрузить сервер
  • создать /srv/public/netinst/livefs
  • скопировать /srv/public/netinst/mnt/* (всё, кроме live и ALTLinux) на /srv/public/netinst/livefs
  • mv /srv/public/netinst/sda2 /srv/public/netinst/livefs/live
  • chroot /srv/public/netinst/livefs
    • chkconfig chkconfig livecd-save-nfs off
    • NM_CONTROLLED=no в /etc/net/ifaces/default/options
    • echo "#!/bin/sh\ndhcpcd eth0" > /etc/rc/rc.local; chmod +x /etc/rc/rc.local

    • установить пароль оута
    • убрать монтирование левых разделов
  • ln -sf livefs current

FrBrGeorge/BookP5/NetworkInstall (last edited 2010-02-16 14:53:32 by FrBrGeorge)