Pull to refresh

Бездисковые рабочие станции. Загрузка по сети полноценного linux

В итоге описанных манипуляций получим debian-6.0.3-amd64 в качестве серверной и ubuntu-11.10-i386 в качестве клиентской ОС.

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


Ставим Debian cdimage.debian.org/debian-cd/6.0.3/amd64/bt-cd
Для того чтобы система раздавала интернет пишем правило для iptables
/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

и сохраняем их
iptables-save > /etc/iptables.up.rules

включаем форвардинг
echo "1" > /proc/sys/net/ipv4/ip_forward

редактируем
apt-get install mc
mcedit /etc/sysctl.conf

добавляем в него строчку:
net.ipv4.ip_forward = 1

Установка pureftpd в качестве DHCP сервера


apt-get install dnsmasq

настравиваем для загрузки по сети
mcedit /etc/apt-get install dnsmasq
раскомментируем строку
dhcp-boot=pxelinux.0

и задаём диапазон раздаваемых ip-адресов
dhcp-range=192.168.100.2,192.168.100.253,12h

Установка NFS


apt-get install nfs-kernel-server

если при запуске будет выдавать ошибку Permission denied — перезагрузить сервер
создаём каталог для клиентской ос
mkdir /kubuntu32
cd /kubuntu32


устанавливаем debootstrap
wget http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.38_all.deb
apt-get install binutils
ar -x debootstrap_1.0.38_all.deb
cd /
zcat /kubuntu32/data.tar.gz | tar xv
скачиваем клиентскую ОС
debootstrap --arch i386 oneiric /kubuntu32 http://mirrors.uaip.org/ubuntu/


настраиваем NFS
mcedit /etc/exports

дописываем путь к клиентской файловой системе и права клиента
/kubuntu32 192.168.100.0/255.255.255.0(rw,sync,no_root_squash,no_subtree_check)

синхронизируем настройки
exportfs -rv

перегружаем NFS-сервер
/etc/init.d/nfs-kernel-server restart

корректируем список зеркал
mcedit /kubuntu32/etc/apt/sources.list
куда вписываем список зеркал которые будут доступны
пользователям клиентской Ubuntu

Настройка клиентской Ubuntu для загрузки по сети


Изменяем кореневой каталог
chroot /kubuntu32

выставляем пароль для root
passwd
настройка ядра
apt-get update
apt-get install mc
mcedit /etc/initramfs-tools/initramfs.conf


ставим
MODULES=netboot
BOOT=nfs


загружаем ядро linux (в окне при установке выбираем yes — продолжить установку без загрузчика)
apt-get install linux-image

создаём образ initramfs
mkdir /bootimg
mkinitramfs -o /bootimg/initrd.img 3.0.0-13-generic
cp /boot/vmlinuz-3.0.0-13-generic /bootimg/vmlinuz


редактируем сетевые интерфейсы
mcedit /etc/network/interfaces

добавляем
auto eth0
iface eth0 inet manual


редактируем разбивку диска
mcedit /etc/fstab
# /etc/fstab: static file system information.
#
# proc /proc proc defaults 0 0
/dev/nfs / nfs defaults 1 1


выходим из клиентской файловой системы
exit


Установка TFTP сервера



apt-get install tftpd-hpa

в появившемся диалоговом окне пишем /tftpboot
настраиваем TFTP сервер
mcedit /etc/default/tftpd-hpa

указываем кореть сервера
TFTP_DIRECTORY="/tftpboot"

Настройка загрузки по сети

cd /tftpboot
wget http://mirrors.uaip.org/ubuntu/dists/oneiric/main/installer-i386/current/images/netboot/pxelinux.0
mkdir pxelinux.cfg
mcedit pxelinux.cfg/default


указываем пути к образам ядра и к корню подгружаемой файловой системы
DEFAULT linux
LABEL linux
KERNEL vmlinuz
APPEND root=/dev/nfs initrd=initrd.img nfsroot=192.168.100.1:/kubuntu32 ip=dhcp rw
PROMPT 0
TIMEOUT 0

скачиваем образы
cp /kubuntu32/bootimg/vmlinuz /tftpboot/vmlinuz
chmod 644 /tftpboot/vmlinuz
cp /kubuntu32/bootimg/initrd.img /tftpboot/initrd.img
chmod -R 777 /tftpboot


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


в настройках BIOS выставляем загрузку по сети, мне нужная опция попадалась в таких местах:
Boot->Boot Settings Configuration->Boot From Onboard NAN=Enabled

Запускаем клиентский компьютер, заходим под root и указанным выше паролем
создаём тестового пользователя
adduser test

устанавливаем графическую среду KDE
apt-get install kubuntu-desktop

по желанию можно еще и GNOME поставить
apt-get install kubuntu-desktop

тогда пользователь при логине сможет выбрать в чём работать
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.