linux:diskless
Inhaltsverzeichnis
Diskless System
We want to boot via PXE and mount everything via NFS. At first we create a basic directory structure:
export DISKLESS=vdrhd1 export DISKLESS=diskless mkdir /usr/local/$DISKLESS/ cd !$ mkdir boot mkdir dev mkdir bin mkdir sbin mkdir lib mkdir etc mkdir usr mkdir root mkdir home mkdir proc mkdir tmp chmod a+w tmp mkdir sys mkdir var mkdir var/empty mkdir var/lock mkdir var/log mkdir var/run mkdir var/spool mkdir var/lib mkdir var/lib/dbus mkdir var/tmp mkdir var/cache mkdir var/cache/hald mknod dev/console c 5 1 mknod -m 666 dev/null c 3 1
Be sure you have the following settings in the kernel config:
# # Networking options # CONFIG_PACKET=y CONFIG_INET=y CONFIG_IP_MULTICAST=y CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y # # Network File Systems # CONFIG_NFS_FS=y CONFIG_NFS_V3=y CONFIG_NFS_V4=y CONFIG_ROOT_NFS=y
Compile and install the kernel with:
make make INSTALL_PATH=/usr/local/$DISKLESS/boot install make INSTALL_MOD_PATH=/usr/local/$DISKLESS modules_install
You must copy or symlink your kernel to the tftp directory so the client can download the kernel via tftp.
Install NVIDIA Driver
Execute on the headless system:
sh NVIDIA-Linux-x86-275.09.07.run -a
Prepare DHCPD
Put the following lines to your dhcpd.conf:
next-server 192.168.0.251; filename "pxelinux.0"; option tftp-server-name "server.idefix.lan";
Boot the Kernel with PXE
Create a directory on your TFTP directory called pxelinux.cfg now place their the config files. I have one file called default:
DEFAULT memtest PROMPT 1 TIMEOUT 10 LABEL memtest MENU HIDE MENU LABEL memtest KERNEL memtest86+.bin LABEL local LOCALBOOT 0
And one file with the MAC address 00-de and so on:
PROMPT 1 DEFAULT vdr TIMEOUT 10 LABEL vdr MENU HIDE MENU LABEL ^VDR KERNEL vmlinuz-2.6.22-gentoo-r5-diskless APPEND ip=dhcp root=/dev/nfs nfsroot=192.168.0.149:/usr/local/diskless LABEL memtest MENU HIDE MENU LABEL ^memtest86+ KERNEL memtest.bin
Synchronize folders
rsync -az --delete --ignore-errors --numeric-ids --stats --progress /bin /usr/local/$DISKLESS/ rsync -az --exclude "*$DISKLESS*" --delete --ignore-errors --numeric-ids --stats --progress /lib /usr/local/$DISKLESS/ rsync -az --delete --ignore-errors --numeric-ids --stats --progress /sbin /usr/local/$DISKLESS/ rsync -az --exclude "/var/lib*" --exclude "/var/cache*" --exclude "/var/log*" --exclude "/var/tmp" --exclude "/var/db*" \ --exclude "/var/www" --delete --ignore-errors --numeric-ids --stats --progress /var /usr/local/$DISKLESS/ rsync -az --delete --ignore-errors --numeric-ids --stats --progress /etc /usr/local/$DISKLESS/
linux/diskless.txt · Zuletzt geändert: 2013/12/16 13:44 von idefix