User:Keithamus
Contents
Current Setup
I currently have one backend with 2 Zotac Ion frontends.
Frontend 1
|
Frontend 2
|
Backend
|
Why I chose this system
Frontends
- The whole setup was good value for money (considering it is a 5tb fileserver/backend with two frontends + TVs), around £1000 (which is US$1600 (xe.com) at the time of writing).
- The Zotac Ions are fantastic boards. They handle everything nicely, including 1080p content (with VDPAU enabled)
- The Zotac boards are supposed to take around 21w of power under full load.
- The M350 cases are tiny! They can be hidden in corners and crevices very nicely. They also have 2 hidden front usb ports, ideal for bluetooth, usb storage, or other dongles which don't need to see the light of day.
- I have both Zotac machines completely hidden from view, one behind a door frame and one strapped to the back of the benq monitor.
- I chose the Benq for the 1080p, and that it is much cheaper than a 1080p HDTV.
Backend
- Its 5tb in raid5...
- The case was by far the most expensive component, but it almost perfectly suits the 5 1.5tb HDDs that it houses.
- The server is really surprisingly quiet, and runs very cool.
- According to my calculations as well as other peoples reviews, this will use about 60w under full load, when underclocked. Not bad for a 5tb server backend.
- Its 5tb in raid5...
Problems
- Forget about putting anything inside the M350 cases except for a mobo, an hdd or two and some ram. These tiny cases have no room inside them, but then again, theres nothing else you need in them!
- The wireless is utter crap. Read the fix down the page. Even when it is fixed, watching live tv with it is a bit poor - I have a Wireless N switch with Gig eth and when I browse the internet on my laptop, it'll slow the tv down.
- Disk-less is a wild beast. Minor changes to the base system mean running ltsp-update-image which takes about half an hour to finish.
- The servers network card is pretty crap, I recommend replacing them with Intel Pro cards.
Real world figures
In terms of crunching power, wattage and temperatures, this system really can't be complained about;
- Zotac Ions play 1080p fine with VDPAU. No issues. No questions asked. It Just Works (TM).
- I said on the notes to my old setup that 500gb is more media than one can watch. That was a bit of a Bill Gates moment. I stand corrected, 6tb might be enough though (I hope!)
- 2GB is so damn cheap and it runs these systems fine, any more would be overkill. I would say 2GB is overkill but at about £20 for a matched pair noone is complaining.
- The 1.6ghz dual core processor in the Zotac Ions can be a bit slow at times. It is really painful to watch the "prescaling images" bar when you change theme/first open mythtv.
How I built the disk-less server
This documentation is here so I will hopefully never forget it, and so I can repeat the steps in case of disaster.
Setting up PXE/LTSP
First things first, on the server, install the appropriate packages:
sudo apt-get update && sudo apt-get install dhcp3-server ltsp-server tftpd-hpa nbd-server nfs-kernel-server
The dhcp3 server will serve DHCP (Dynamic Host Configuration Protocol) IP addresses to all connected clients, so you need to take down your routers DHCP. The LTSP (Linux Terminal Server Project)package gives you scripts to create & serve LTSP images (for diskless clients with persistent storage). TFTPD (Trivial File Transfer Protocol Daemon) will give DHCP clients the ability to download the initrd and vmlinuz kernel files, and finally the NBD (Network Block Device) Server gives LTSP a port to connect to download the SquashFS images. Once these are installed, the following needs doing:
sudo nano /etc/dhcp3/dhcpd.conf
Here is my dhcpd.conf:
default-lease-time 600;
max-lease-time 1440;
ddns-update-style ad-hoc;
authoritative;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.110 192.168.0.199;
filename "pxelinux.0";
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option netbios-name-servers 192.168.0.101;
option netbios-node-type 2;
option domain-name-servers 208.67.222.222,208.67.220.220;
use-host-decl-names on;
host ...your reserved IP leases go like this. one host for each.. well host... {
hardware ethernet 00:12:34:AB:CD:EF;
fixed-address 192.168.0.102;
}
host ...your reserved DISKLESS hosts go like this, with the host-name option added... {
hardware ethernet 00:12:34:AB:CD:EF;
fixed-address 192.168.0.103;
option host-name "myth1";
}
The "pxelinux.0" file comes from the root dir of TFTPD. So lets edit TFTPD to point to a sensible place.
sudo nano /etc/default/tftpd-hpa
#Defaults for tftpd-hpa RUN_DAEMON="yes" # All the v's are for "verbose", the more vs the more verbose. OPTIONS="-l -s -vvvvvvvv /raid/pxe/"
I chose /raid/pxe/ because my RAID device is mounted at /raid/. Choose a sensible directory for you. And make it before you start the server:
sudo mkdir -p /raid/pxe/
We're also going to do a few softlinks so we later don't have to move stuff. Everything will be in our raid folder:
sudo mkdir -p /raid/diskless/ /raid/pxe/ltsp/ /raid/pxe/pxelinux.cfg sudo ln -s /var/cache/mythbuntu-diskless/overlay /raid/diskless sudo ln -s /opt/ltsp /raid/pxe/ltsp
Now lets make an LTSP image:
sudo ltsp-build-client --mythbuntu --mythbuntu-user-credentials USERNAME:PASSWORD --chroot mythbuntu-karmic-`date +%Y%m%d`
This will start building a mythbuntu base install client. Leave it for a few hours and come back to find your "mythbuntu-karmic-TODAYSDATE" image installed! The build-client script also automatically manages NBD, so there isnt much to do there. But look out for the "port number" as stated toward the end of the script.
Next we'll make a pxelinux.cfg file for the mac addresses of our clients. So my client is 00-12-34-AB-CD-EF. So I'll do this:
sudo nano /raid/pxe/pxelinux.cfg/01-00-12-34-AB-CD-EF
Pay special attention to the "01-" at the beginning. In this file will be:
DEFAULT mythbuntu
LABEL mythbuntu
KERNEL ltsp/mythbuntu-karmic-20091205/vmlinuz nbdport=2001
APPEND rw root=/dev/ram0 initrd=ltsp/mythbuntu-karmic-20091205/initrd.img nbdport=2001 hostnameoverride=HOSTNAME ipv6.disable=1
Note because we put the "ltsp" dir in /raid/pxe/, we've made our lives alot easier inside the pxelinux scripts :D.
One last thing to do:
sudo nano /etc/exports
/raid/pxe/ 192.168.0.0/24(sync,ro,no_subtree_check) /raid/diskless/ 192.168.0.0/24(rw,no_root_squash,async,no_subtree_check)
Just shove the whole pxe dir into the whole subnet on NFS, not the most secure way of doing things but saves alot of fiddling around and hours of confusion as to why a particular directory isn't loading. Same goes for the diskless overlay dir, but make it rewritable otherwise our clients wont have persistent storage!
Finally, we'll restart the server, and test out our image. Working ok? Great. Lets customize it!!
sudo mount -o bind /proc /raid/pxe/ltsp/mythbuntu-karmic-TODAYSDATE/proc/ sudo chroot /raid/pxe/ltsp/mythbuntu-karmic-TODAYSDATE
We're now Chrooted into our LTSP image. Any work done on this will effect the image and not your server, and it will mean re-updating the image file. To reupdate we do this:
sudo ltsp-update-image -a mythbuntu-karmic-`date +%Y%m%d`
It is very, VERY recommended that whenever you make a change to your image, make a snapshot of it incase you mess anything up:
sudo cp /raid/pxe/ltsp/mythbuntu-karmic-NEWESTDATE/ /raid/pxe/ltsp/mythbuntu-karmic-`date +%Y%m%d` sudo mount -o bind /proc /raid/pxe/ltsp/mythbuntu-karmic-`date +%Y%m%d`/proc/ sudo chroot /raid/pxe/ltsp/mythbuntu-karmic-`date +%Y%m%d` #make your changes here sudo ltsp-update-image -a mythbuntu-karmic-`date +%Y%m%d` sudo nano /raid/pxe/pxelinux.cfg/01-00-12-34-AB-CD-EF #change the name of the old PXE details over to the new ones.
Stuff to install on the Mythbuntu build
For my particular setup, I made the following changes to the default mythbuntu build:
# enable mythbuntu mythtv updates repository wget http://www.mythbuntu.org/files/mythbuntu-repos.deb && dpkg -i mythbuntu-repos.deb
#update os apt-get update && apt-get upgrade
# install essentials + extras apt-get install lirc openssh-server mythtv-themes* mythbuntu-apple-trailers mythplugins nano bash-completion flashplugin-installer gstreamer0.10-plugins-good gstreamer0.10-plugins-bad nfs-common openssh-server vlc wget nvidia-common nvidia-current
# make sure nonfree drivers are loaded echo -e "\nblacklist nouveau" | sudo tee -a /etc/modprobe.d/blacklist.conf
# autostart mythtv mkdir -p /home/<USER>/.config/autostart/ ln -s /usr/share/applications/mythtv.desktop /home/<USER>/.config/autostart/mythtv.deskop
# autologin mythbuntu nano /etc/gdm/custom.conf
# /etc/gdm/custom.conf [daemon] DefaultSession=mythbuntu TimedLoginEnable=false AutomaticLoginEnable=true TimedLogin=<USER> AutomaticLogin=<USER> TimedLoginDelay=0
nano /etc/lirc/hardware.conf
# /etc/lirc/hardware.conf REMOTE="Cyberlink Remove Control" REMOTE_MODULES="lirc_dev" REMOTE_DRIVER="devinput" REMOTE_DEVICE="/dev/input/by-path/pci-0000:00:04.0-usb-0:6:1.1-event-mouse" REMOTE_SOCKET="" REMOTE_LIRCD_CONF="/etc/lirc/lircd.conf" REMOTE_LIRCD_ARGS="" START_LIRCD="true" LOAD_MODULES="true" LIRCMD_CONF="" FORCE_NONINTERACTIVE_RECONFIGURATION="false" START_LIRCMD=""
nano /etc/lirc/lircd.conf
begin remote
name cyberlink
bits 32
eps 30
aeps 100
one 0 0
zero 0 0
gap 135995
toggle_bit_mask 0x0
begin codes
#NoGap
Home 0x80010066
DVD 0x8001018E
Music 0x8001018F
Pictures 0x80010190
Videos 0x80010191
Radio 0x80010181
LiveTV 0x80010179
#NoGap
SAP 0x80010188
Teletext 0x80010184
LastCH 0x8001016B
Subtitle 0x80010172
Language 0x80010170
Aspect 0x80010173
Back 0x8001009E
Guide 0x80010082
Menu 0x8001008B
#NoGap
VolUp 0x80010073
VolDown 0x80010072
Mute 0x80010071
ChanUp 0x80010192
ChanDown 0x80010193
#NoGap
Pause 0x80010077
Record 0x800100A7
Play 0x800100CF
Rewind 0x800100A8
Forward 0x800100D0
SkipFoward 0x800100A3
SkipBack 0x800100A5
#NoGap
end codes
end remote
nano /etc/lirc/mythtv.conf
# LIRCRC Created by Keithamus
# Author: Keithamus
# Created for use with LIRCRC, completely free for any use whatsoever.
begin
remote = cyberlink
prog = mythtv
button = Home
config = ALT+H
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = DVD
config = ALT+D
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = Music
config = ALT+M
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = Pictures
config = ALT+P
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = Videos
config = ALT+V
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = Radio
config = ALT+R
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = LiveTV
config = ALT+T
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = SAP
config = F8
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = Teletext
config = F2
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = LastCH
config = H
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = Subtitle
config = T
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = Language
config = +
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = Aspect
config = W
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = Back
config = Esc
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = Guide
config = I
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = Menu
config = M
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = VolUp
config = F11
repeat = 1
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = VolDown
config = F10
repeat = 1
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = Mute
config = F9
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = ChanUp
config = Up
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = ChanDown
config = Down
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = Pause
config = P
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = Record
config = R
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = Play
config = Enter
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = Rewind
config = <
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = Forward
config = >
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = SkipForward
config = PgDown
repeat = 0
delay = 0
end
begin
remote = cyberlink
prog = mythtv
button = SkipBack
config = PgUp
repeat = 0
delay = 0
end
mkdir /home/myth/.lirc/ && ln -s /etc/hardware/mythtv.conf /home/myth/.lirc/mythtv