Etsitkö asiaa kotimaan kielellä kotiautomaatiosta (X10, 1-wire) tai talonrakennukseen liittyvistä asioista? Ne löytyvät nykyään täältä toiselta osastolta.
Blog previously known as 'Home Theatre PC'
« "HTPC"Reset browser »

Diskless setup details

Permalink 11/16/07 10:06, by Esa Viitala, Categories: Software

Someone from Slashdot googled this site and didn't find enough details on my setup, so here it goes.

The client part used to be just a regular ubuntu install on a local hdd, to make it boot over NFS all that had to be done on client side was to create a new initrd and copy the hdd contents to server.

Edit /etc/mkinitramfs/initramfs.conf

#
# BOOT: [ local | nfs ]
#
# local - Boot off of local media (harddrive, USB stick).
#
# nfs - Boot using an NFS drive as the root of the drive.
#

BOOT=nfs

Create new initrd image

mkinitramfs -o /tmp/your-shiny-initrd

That's it, remove the hdd and copy the contents to server. Change boot setting in BIOS to try to PXE boot.

On the server side you need to have nfs server, dhcp server, tftp server and pxelinux package.

NFS config is really just adding one line to /etc/exports

/tftproot/diskless          *(rw,no_root_squash,async)

(replace * with proper mask if you want to be careful ;) )

Relevant parts of DHCP server config, let's play that the server ip is 10.10.10.1 and client 10.10.10.2

option pxe-menu code 150 = text;

allow booting;
allow bootp;

subnet 10.10.10.0 netmask 255.255.255.0 {

        host diskless {
                hardware ethernet 00:40:63:E6:61:71;
                fixed-address 10.10.10.2;
                filename "pxelinux.0";
                next-server 10.10.10.1;
        } 

}

TFTP config for gentoo is in /etc/conf.d/in.tftpd

# /etc/init.d/in.tftpd

# Path to server files from
INTFTPD_PATH="/tftproot"

# For more options, see tftpd(8)
INTFTPD_OPTS="-l -p -c -s ${INTFTPD_PATH} -vvvvvv"

Now, I copied the contents of the ubuntu hdd to /tftproot/diskless/, copied ubuntu kernel and the just generated initrd to /tftproot/ and copied pxelinux.0 to /tftproot/ . Next step was to create pxelinux config it should be located in /tfproot/pxelinux.cfg/ (more info on the naming of files etc in that directory can be found here.

My diskless client config (/tftproot/pxelinux.cfg/01-00-40-63-e6-61-71)

timeout 10
prompt 1
default Ubuntu

label Ubuntu
        kernel ubu-vmlinuz
        append root=/dev/nfs initrd=your-shiny-initrd nfsroot=10.10.10.1:/tftproot/diskless ip=dhcp rw nosplash 

All set. Power on your diskless machine. You should see something like this in /var/log/messages

Nov 16 04:56:22 kippo in.tftpd[3760]: RRQ from 10.10.10.3 filename pxelinux.0
Nov 16 04:56:22 kippo in.tftpd[3760]: tftp: client does not accept options
Nov 16 04:56:22 kippo in.tftpd[3761]: RRQ from 10.10.10.3 filename pxelinux.0
Nov 16 04:56:22 kippo in.tftpd[3762]: RRQ from 10.10.10.3 filename pxelinux.cfg/01-00-40-63-e6-61-71
Nov 16 04:56:23 kippo in.tftpd[3763]: RRQ from 10.10.10.3 filename ubu-vmlinuz
Nov 16 04:56:24 kippo in.tftpd[3764]: RRQ from 10.10.10.3 filename ubu-initrd
Nov 16 04:56:37 kippo rpc.mountd: authenticated mount request from diskless:864 for /tftproot/diskless (/tftproot/diskless)

Now, all that is left is to install VDR & plugins on the server and xineliboutput frontend to the client machine. On gentoo, just emerge what you need, here's my /etc/portage/package.keywords which also pretty much shows what plugins I have installed on vdr

media-plugins/vdr-xineliboutput ~x86
media-plugins/vdr-epgsearch ~x86
media-plugins/vdr-subtitles ~x86
media-plugins/vdr-femon ~x86
media-plugins/vdr-burn ~x86
net-www/vdradmin-am ~x86
media-tv/xmltv ~x86

On the client you need only xine & xineliboutput installed, then you can use vdf-sxfe/fbfe (comes with xineliboutput) or just plain xine. My client in VIA EPIA board, and it has unichrome pro chipset (mpeg2 hw acceleration using xxmc), so the command line to get the TV to show

 xine "xvdr:udp://10.10.10.1#nocache;demux:mpeg_block" --fullscreen --hide-gui --video-driver xxmc  --aspect-ratio 4:3 --post vdr -Dtvtime:method=use_vo_driver

or

 vdr-sxfe xvdr://10.10.10.1 --fullscreen --video=xxmc --audio=alsa:iec958 --aspect 4:3 --post tvtime:method=use_vo_driver

(note aspect ratio 4:3 is good for 16:9 CRT TV, logical eh)

And most like you also want to control everything with remote control so you need to install lirc and configure it properly. I won't go into details, but basically you need lirc installed on both client and server, on the client tell lirc to be on listen mode(--listen), and on server tell lirc to connect to the client(--connect=10.10.10.2).

No feedback yet

Leave a comment


Your email address will not be revealed on this site.

Your URL will be displayed.
(Line breaks become <br />)
(Name, email & website)
(Allow users to contact you through a message form (your email will not be revealed.)

Contents

Search

powered by b2evolution