supersede domain-name "private.net";
prepend domain-name-servers 127.0.0.1;
Перший рядок вказує домен пошуку, а друга - додає додатковий (до того, який буде отриманий від DHCP сервера) DNS сервер. Ці зміни необхідні для формування правильного файлу resolv.conf. Тепер, при завантаженні клієнта, на екрані повинні відобразитися IP адреси клієнта і сервера, отримані від сервера (службу DHCP попередньо необхідно перезапустити). Більш докладну інформацію з налаштування DHCP можна знайти в [3].
4.4 Налаштування FTP і TFTP
Перекачування ядра з сервера на клієнт здійснюється по протоколу TFTP. Для його коректної роботи у файлі / etc / inetd.conf повинна бути присутнім рядок: tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /exports
Останнім параметром зазначений каталог, у якому буде проводитись пошук ядра операційної системи. Всі директорії та файли повинні бути доступні на читання всім. Якщо при спробі завантажити клієнта, ви отримуєте повідомлення TFTP error 1 (File not found), значить TFTP налаштований правильно. Для налаштування ftp відредагуємо файл / etc / ftpusers, видаливши з нього рядок root, що дозволить підключатися до сервера за ftp під ім'ям root з ОС Windows.
4.5 Настройка DNS
Доменом нашій віртуальній мережі буде називатися private.net. Сервер буде мати ім'я server.private.net, а клієнти імена nodeXX.private.net, де XX - порядковий номер клієнта.
Основним конфігураційних файлів DNS сервера є / etc / bind / named.conf. В розділ options цього фала додамо рядок:
listen-on { 192.168.223.2; 127.0.0.1; };
Перший IP адреса - адреса інтерфейсу eth0. Тепер DNS сервер буде обробляти запити тільки з цих адрес. У кінець файлу додамо рядки:
zone "223.168.192.in-addr.arpa" {
type master;
file "/etc/bind/server.rev";
};
zone "private.net" {
type master;
file "/etc/bind/server.hosts";
};
Далі необхідно створити файли / etc / bind / server.rev і / etc / bind / server.hosts. Нижче наведено їх листинги.
Файл server.rev:
@ IN SOA server.private.net. root.server.private.net. (
2004120420 ; Serial
8H ; Refresh
4H ; Retry
4W ; Expire
1D ) ; Negative Cache TTL
IN NS server.private.net.
2 IN PTR server.private.net.
3 IN PTR node01.private.net.
Файл server.hosts:
@ IN SOA server.private.net. root.server.private.net. (
2004120420 ; Serial
8H ; Refresh
4H ; Retry
4W ; Expire
1D ) ; Negative Cache TTL
IN NS server.private.net.
localhost IN A 127.0.0.1
server IN A 192.168.223.2
node01 IN A 192.168.223.3
На цьому налаштування DNS-сервера закінчена. За додатковою інформацією звертайтеся до [4].
4.6 Створення ядра
Компіляція ядра
Стандартне ядро не підходить для завантаження по мережі, тому необхідно його перекомпілювати. Перед компіляцією ядра необхідно з'ясувати конфігурацію устаткування віртуального сервера. Для цього в Debian можна скористатися командою lspci. Запишемо моделі IDE, SCSI і Ethernet контролерів. У VMware 4.0 це Intel Corp.82371AB PIIX4 IDE, BusLogic BT-946C [MultiMaster 10] і AMD 79c970 [PCnet LANCE] відповідно. Перейдемо в каталог / usr / src і виконаємо команду tar - bzip2-x-f kernel-source-2.4.18.tar.bz2 Тепер зайдемо в каталог / usr/src/kernel-source-2.4.18 і виконаємо команду make mrproper config.
Зараз необхідно вибрати конфігурацію ядра, відповідаючи на питання. Все, що може знадобитися до того, як стануть доступні мережеві ресурси (мережеві карти, підтримка чіпсетів, протоколу TCP, NFS і т.д.) необхідно включити в ядро. Додатково, необхідно включити наступні налаштування:
· CONFIG_BLK_DEV_LOOP
· CONFIG_BLK_DEV_NBD
· CONFIG_BLK_DEV_RAM (тільки при підключенні кореневої файлової системи з RAM диска)
· CONFIG_BLK_DEV_RAM_SIZE = 30720 (тільки при підключенні кореневої файлової системи з RAM диска)
· CONFIG_BLK_DEV_INITRD (тільки при підключенні кореневої файлової системи з RAM диска)
· CONFIG_PACKET
· CONFIG_FILTER
· CONFIG_IP_PNP
· CONFIG_IP_PNP_DHCP
· CONFIG_NFS_FS
· CONFIG_NFS_V3
· CONFIG_ROOT_NFS (тільки при підключенні кореневої файлової системи через NFS)
Після завершення налаштувань скомпіліруем ядро командою make bzImage
Передбачається, що версії встановленого і компіляції ядра збігаються. Якщо ж це не так, і при компіляції ядра деякі з опцій були скомпільовані як модулі, необхідно командою make modules призвести перекомпіляцій модулів. Докладніше про компіляції ядра можна дізнатися в [5].
Підготовка ядра для віддаленого завантаження
Щоб ядро можна було завантажувати через мережу за допомогою Etherboot або Netboot, воно має бути спеціальним чином підготовлено. Для цього служить програма mknbi, що входить в пакет mknbi (при створенні цього документа використовувалася версія 1.4.4). Помістити її на сервер можна, підключившись з OC Windows до сервера по ftp.
Для її установки необхідно розпакувати файл з вихідними текстами в каталог / usr/src/mknbi-1.4.4 і виконати команди
make
mkdir / usr / local / lib / mknbi
cp first32elf * / usr / local / lib / mknbi
Програма має декілька параметрів, з яких ми розглянемо чотири:
- Format = format Вказує формат вихідного файлу.
- Target = target Вказує тип цільового двійкового коду.
- Rootdir = rootdir Зазначає ім'я каталогу, з якого буде подмонтірована коренева файлова система
- Ip = string Дозволяє задати IP адреси клієнта, сервера, шлюзу і маску підмережі. Також можливо вказати dhcp або bootp для автоматичної настройки за допомогою цих протоколів.
Створимо каталог, в якому буде розташовуватися ядро для віддаленого завантаження: mkdir / exports
Подальші дії залежать від того, яким чином ми будемо підключати корову файлову систему. Для підключення через NFS необхідно виконати команду (передбачається, що коренева файлова система буде розташовуватися в каталозі / exports/node01) . / Mknbi - format = elf - target = linux - rootdir = / exports/node01 - ip = dhcp / usr/src/kernel-source-2.4.18/arch/i386/boot/bzImage> / exports / net_boot_kernel
Для варіанта з RAM диском команда виглядає трохи інакше: . / Mknbi - format = elf - target = linux - rootdir = / dev/ram0 - ip = dhcp / usr/src/kernel-source-2.4.18/arch/i386/boot/bzImage / initrd / initrd . gz> / exports / net_boot_kernel
Про те, як створити файл / initrd / initrd.gz, який містить образ кореневої файлової системи, розповідається в п.4.8.
Після закінчення цього етапу клієнтський комп'ютер вже може завантажувати ядро. За інформацією з mknbi звертайтеся до [6].
4.7 Налаштування NFS
Налаштування що надаються сервером NFS в мережеве використання ресурсів здійснюється за допомогою файлу / etc / exports.
У нашому прикладі використовуємо такий файл
/usr node01.private.net(rw,no_root_squash)
/exports node01.private.net(rw,no_root_squash)
/ 192.168.223.4(rw,no_root_squash)
Останній рядок потрібна для доступу робочого віртуального комп'ютера (на якому ми будемо формувати файлову систему клієнта) до сервера і після створення файлової системи клієнта її необхідно видалити.
Додаткова інформація з налаштування NFS доступна в [7].
4.8 Налаштування файлової системи для клієнта
Для завершення настроювання мережевої завантаження необхідно підготувати файлову систему клієнта. Для цього на самому початку нами було створено третій віртуальний комп'ютер. Встановимо на нього ОС Debian згідно з тими ж, рекомендаціями, що були дані в п.4.1.
Є один нюанс: оскільки ми роздаємо IP адреси статично, перш, ніж новий комп'ютер зможе отримати конфігурацію від DHCP сервера, необхідно підправити файл / etc / dhcpd.conf. Коли установник Debian задасть питання про конфігурацію по DHCP, переключимося на другий термінал (натиснувши Alt + F2), виконаємо команду ifconfig-a і запишемо MAC-адреса адаптера. Після цього переключимося у віртуальний комп'ютер сервера, і відредагуємо файл / etc / dhcpd.conf, додавши в розділ group рядки:
host work {
hardware ethernet 00:0C:29:03:AB:CA;
fixed-address 192.168.223.4;
}
У другому рядку необхідно вказати записаний MAC адресу. Щоб зміни вступили в силу, необхідно перезапустити DHCP сервер командою / Etc / init.d / dhcp restart
Можна продовжувати установку. Команда для встановлення пакунків з програмним забезпеченням тепер буде виглядати наступним чином: apt-get install mc portmap
Для варіанту з підключенням кореневої файлової системи по NFS будемо користуватися каталогом / tmp. Для варіанта з RAM-диском необхідно заздалегідь створити образ RAM-диска. Зробити це можна різними способами. Наведемо один з них:
dd if = / dev / zero of = / initrd / initrd bs = 1k count = 30720
mke2fs-m0-F / initrd / initrd
mount-t ext2-o loop / initrd / initrd / mnt
Тут ми створюємо порожній файл об'ємом 30 Мб, потім формуємо у ньому файлову систему ext2 і монтуємо його як loop пристрій у каталог / mnt, в якому і будемо створювати файлову систему.
Процес створення файлової системи однаковий для обох варіантів і полягає в наступному:
1. Скопіюйте каталоги / bin, / dev, / etc, / lib, / sbin цілком;
2. Створити каталоги home, root, proc, tmp;
3. Створити каталоги usr, usr / bin; скопіювати каталог / usr / sbin, скопіювати файл expr в каталог usr / bin;
4. Створити каталоги var, var / lock, var / log, var / log / news, var / run, var / tmp, var / lib; скопіювати каталог var / lib / dhcp.
Підправимо файл / mnt / etc / fstab. У самому простому вигляді він може виглядати так:
/dev/ram0 / ext2 errors=remount-ro 0 1
proc /proc proc defaults 0 0
server.private.net:/usr /usr nfs
Для підключення кореневої файлової системи по NFS перший рядок необхідно замінити на
server.private.net:/exports/node01 / nfs
Тепер необхідно створити файл / etc / dhclient-enter-hooks, внести до нього наступні два рядки, щоб кожен клієнт встановив своє ім'я, отримане від DHCP сервера
echo "$new_host_name" > /etc/hostname
hostname -F /etc/hostname
і зробити цей файл виконуваним: chmod a + x / etc / dhclient-enter-hooks
Якщо ви скомпілював ядро більш нової версії, то необхідно в каталог / lib / modules скопіювати каталог з перекомпілювати модулями, а старий каталог видалити.
Якщо змонтований файл з RAM диском, його необхідно відключити командою umount / mnt, а потім виконати команду mount-t nfs server.private.net: / / mnt
для підключення файлової системи сервера в каталог / mnt. Далі, для першого варіанта необхідно скопіювати вміст / tmp в каталог / mnt/exports/node01, а для другого - виконати команди
gzip -9 / initrd / initrd
cp / initrd / initrd.gz / mnt / initrd
після чого файлову систему сервера необхідно демонтувати, виконавши umount / mnt
Тепер необхідно приєднати отриманий образ до ядра, як описано в кінці п.4.6.
Висновок
Отже, ми докладно розглянули організацію процесу мережевий завантаження. У прикладі ми створили тільки одного клієнта, з назвою node01. Для підключення наступних, на сервері в файли dhcpd.conf, server.rev, server.hosts, exportfs потрібно додати відповідні записи. При необхідності можна створити і нову файлову систему, помістивши її в каталог / exports / nodeXX, або створивши нове ядро для віддаленого завантаження. Всі вищеописані дії без будь-яких змін можуть бути застосовані для створення реальної мережі з реальних машин.
Література
1. Введення в завантаження по мережі і Etherboot
2. Installing Debian GNU / Linux 3.0 For Intel x86
3. DHCP mini-HOWTO
4. DNS HOWTO
5. Ставимо ядро 2.6, або Ядерна фізика для домогосподарки
6. Документація по mknbi
7. NFS HOWTO
8. Завантаження машин по мережі
9. Віддалене завантаження і Linux: Налаштування віддалено завантажуються робочих станцій з Linux, DOS, Windows 95/98 і Windows NT