пятница, 21 января 2011 г.

Diskless debian clients

Linux debian для загрузки по сети
необходимые пакеты: dhcp3-server atftpd nfs-kernel-server initramfs-tools

server# - команда на сервере
chroot# - команда с chroot'ом в /netboot директорию

адрес сервера: 192.168.0.1

/etc/dhcp/dhcpd.conf
ddns-update-style none;
#
# Сдесь указано доменное имя, DNS сервера и время аренды IP адресов клиентам, по умолчанию неделя, максимум 10 суток.
option domain-name "example.com";
option domain-name-servers 192.168.0.1, 192.168.0.1;
default-lease-time 604800;
max-lease-time 864001;
#
# Логирование работы сервера
log-facility local7;
#
# allow booting;
# allow bootp;
next-server 192.168.0.1;
# option tftp-server-name "192.168.0.1";
# Сдесь указана подсеть адресов для выдачи клиентам, DNS сервера, NETBIOS сервера доменных имен,
# доменное имя, широковещательный адрес, и диапазон выдаваемых адресов.
subnet 192.168.0.0 netmask 255.255.255.0 {
option domain-name-servers 192.168.0.1, 192.168.0.1;
option domain-name "example.com";
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
range 192.168.0.2 192.168.0.250;
deny unknown-clients;
group {
next-server 192.168.0.1;
filename "pxelinux.0";

host virtual {
hardware ethernet 52:54:00:12:34:56;
fixed-address 192.168.0.10;
# filename "pxelinux.0";
# next-server 192.168.0.1;
option host-name "qemu";
}

host virtual_box {
hardware ethernet 08:00:27:08:e2:7d;
fixed-address 192.168.0.11;
option host-name "virtualbox";
}
}
}


Установка базовой системы:
server# debootstrap --arch i386 squeeze /netbootdir
chroot# aptitude install linux-image-2.6.32-5-686
server# wget http://www.linuxpoweruser.com/files/pxelinux.0 -o /netbootdir/boot
server# mkdir /netbootdir/boot/pxelinux.cfg


/netbootdir/boot/pxelinux.cfg/default
DEFAULT linux

LABEL linux
KERNEL vmlinuz-2.6.32-5-686
APPEND root=/dev/nfs initrd=initrd.img.netboot nfsroot=192.168.0.1:/netbootdir ip=dhcp rw


/etc/default/atftpd

OPTIONS="--daemon --port 69 --tftpd-timeout 300 --retry-timeout 5 --mcast-ttl 1 --maxthread 100 --verbose=5 /netbootdir/boot"


server# cd /etc/initramfs-tools/
server# cp initramfs.conf initramfs.conf.bkp


initramfs.conf
MODULES=netboot
BUSYBOX=y
KEYMAP=n
COMPRESS=gzip
BOOT=nfs
DEVICE=
NFSROOT=auto


server# mkinitramfs -o /netbootdir/boot/initrd.img.netboot
server# cp initramfs.conf.bkp initramfs.conf


/netbootdir/etc/fstab
/dev/nfs / nfs defaults 0 0
tmpfs /etc/network/run tmpfs defaults,noatime 0 0
tmpfs /tmp tmpfs defaults,noatime 0 0
tmpfs /var/lock tmpfs defaults,noatime 0 0
tmpfs /var/log tmpfs defaults,noatime 0 0
tmpfs /var/mail tmpfs defaults,noatime 0 0
tmpfs /var/run tmpfs defaults,noatime 0 0
tmpfs /var/spool/cron tmpfs defaults,noatime 0 0
tmpfs /var/tmp tmpfs defaults,noatime 0 0
tmpfs /etc/udev/rules.d tmpfs defaults,noatime 0 0
192.168.0.1:/nethomefldr /home nfs rw,nolock,auto,_netdev,intr,soft 0 0


/etc/exports
/media/archive/netboot 192.168.0.0/24(ro,no_subtree_check,async)
/media/archive/homefldr 192.168.0.0/24(rw,no_subtree_check,async)


/nrtbootdir/etc/network/interfaces
# Used by ifup(8) and ifdown(8). See the interfaces(5) manpage or
# /usr/share/doc/ifupdown/examples for more information.
auto lo
iface lo inet loopback

iface eth0 inet dhcp


chroot# rm /etc/hostname
chroot# rm /etc/mailname
chroot# rm /etc/mtab
chroot# ln -s /proc/mounts /etc/mtab
chroot# rm -f /etc/blkid.tab*
chroot# ln -s /dev/null /etc/blkid.tab
chroot# rm -rf /etc/resolvconf/run
chroot# ln -s /dev/shm/resolvconf /etc/resolvconf/run