Skip to content

Disklös HTPC, nu var det gjort!

Jag skrev tidigare om en kille som gjorde sin HTPC disklös, genom att boota den över nätverket från sin HTPC.
Jag fick blodad tand till slut, och nu har jag gjort likadant.. Häng med på turen!

Först och främst ville jag ha ett nytt och fräscht system (så jag har kan snapshot’a en helt ny installation, om jag framöver vill ”börja om”) så jag installerade Ubuntu 10.04 LTS på en tillfällig disk.

Medans den stod och tuggade sig igenom installationen och uppdateringar av diverse paket, passade jag på att justera min NAS lite. Det behövdes ju lite mer funktioner inuti den för att realisera detta.
Så, jag installerade två stycken paket:

# cd /usr/ports/net/isc-dhcp41-server && make install clean
# cd /usr/ports/ftp/tftp-hpa && make install clean

Dessa två behövde sen justeras lite i sin tur.. så jag ändrade i filen /usr/local/etc/dhcpd.conf;
Här kommenterade jag bort allt som fanns, och lade till dessa rader:

# Own settings
#####################################################
option domain-name "home.net";
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.200 192.168.1.210;
next-server 192.168.1.10; # TFTP server address
filename "/pxelinux.0"; # PXE boot loader filename
option root-path "192.168.1.10:/tank/xbmc";
option host-name htpc;
}
#####################################################

Efter detta så lade jag till, i /etc/rc.conf:

dhcpd_enable="YES"
ftpd_enable="YES"
inetd_enable="YES"

Sen måste man även ändra i /etc/inetd.conf genom att ta bort den lilla fyrkanten, #, framför raden med tftp (den med udp, inte udp6, om sådan finns). Här ändrar jag även i slutet på raden till ”/tank/pxe” istället för ”/tftpboot”.

Sedan fick jag skapa lite mappar också, där jag ville ha min maskin liggandes, på min raid.
Så, med min raid som ligger på /tank, blev det undermappar som såhär:

/tank/pxe/
/tank/pxe/pxelinux.cfg/
/tank/xbmc/

Dessa skapade jag med:
# zfs create tank/pxe (skapa undermappen med mkdir)
# zfs create -o compress=gzip-9 tank/xbmc
# zfs set sharenfs="-maproot=root" tank/pxe
# zfs set sharenfs="-maproot=root" tank/xbmc

Sparkar igång tjänsterna med kommandona:

# service isc-dhcpd restart
# service ftpd restart
# service inetd restart

Efter detta så skapar vi en fil som heter ”default”, och ska ligga i mappen /tank/pxe/pxelinux.cfg/
Den ser ut såhär för mig:

LABEL linux
KERNEL vmlinuz
APPEND root=/dev/nfs netboot=nfs initrd=initrd.img nfsroot=192.168.1.10:/tank/xbmc ip=dhcp rw

Sedan, så ska vi dra ner pxe-filer som behövs för att starta. Detta hämtar vi ifrån Ubuntus arkiv.

# cd /tank/pxe
# fetch http://archive.ubuntu.com/ubuntu/dists/lucid/main/installer-i386/current/images/netboot/pxelinux.0

Nu har vi nog för att boota, men inte mycket mer..
Så vi behöver dra över systemet, från hårddisken till servern.
Jag låter er läsa er till det via (http://www.gnulnx.net/2010/08/17/diskless-xbmc-htpc-with-freebsd-nfs-pfsense-and-pxe/), det är några få kommandon som behövs.
Skriver ner dom relevanta i svensk form nedan:

Kopiera filer till servern.
(Utförs på HTPC)

# sudo -s
# apt-get update
# apt-get install nfs-common portmap
# mkdir /mnt/tmp
# mkdir /mnt/nfs
# mount /dev/sda1 /mnt/tmp
# mount 192.168.1.10:/tank/xbmc /mnt/nfs

Glöm inte ändra IP-adressen!

# cp -a /mnt/tmp/* /mnt/nfs/
Detta tar några minuter.

Detta utförs på HTPC.

# chroot /mnt/nfs
# mount -t proc proc proc

Om terminalen hänger sig, så stäng den, och fortsätt vidare..

Nu behöver vi ändra lite filer.
Utförs på HTPC.

# chroot /mnt/nfs

Ändra BOOT=local till BOOT=nfs
samt ändra MODULES=most till MODULES=netboot
# vi etc/initramfs-tools/initramfs.conf

Uppdatera initrd.img
# update-initramfs -u

Editera etc/fstab så den pekar mot din nya NFS root.
# vi /etc/fstab

Byt ut raden med “/” mot denna:
/dev/nfs / nfs defaults,nolock 0 0

Kopiera de nya kernel-filerna till NAS’en.
Utförs på FreeBSD servern.

# cp /tank/xbmc/vmlinuz /tank/pxe/
# cp /tank/xbmc/initrd.img /tank/pxe/

När allt är kopierat är det ju bra att ha en chans att komma tillbaka till detta läget, så jag gjorde en snapshot på systemet här, utifall nåt går fel framöver :)

# zfs snapshot tank/xbmc@postinstall.2010-09

Jag trodde vid detta laget att jag var klar, och slet mitt hår i mina försök att få det hela att boota. Allt gick bra tills ungefär då skrivbordet ska dyka upp.. Då låste det sig.

Det visade sig vara en enkel lösning, när jag väl hittat felet..

# vi /etc/network/interfaces

Sen fick jag lägga till en rad i den:
”iface eth0 inet manual”

Och vips, så fungerade det. :)
Nu är min HTPC både tyst och sval, och jag har kunnat klämma ut ännu mera nytta ur min NAS.. Toppen!
Min HTPC är endast uppkopplad med 100Mbit, men jag tycker det är väldigt acceptabel hastighet på den. När jag får ordnat en Gbit kabel, så är det nog likvärdig prestanda mot förut.

Posta gärna kommentarer om du upptäcker fel eller annat!

Leave a Reply

You may use basic HTML in your comments. Your email address will not be published.

Subscribe to this comment feed via RSS