User:Keithamus

From MythTV Official Wiki
Revision as of 12:31, 5 December 2009 by Keithamus (talk | contribs) (Old Setup)

Jump to: navigation, search

Current Setup

I currently have one backend with 2 Zotac Ion frontends.

Frontend 1

  • Hanspree 37" 720p HDTV (Native Res: 1366x768)
  • Zotac Ion, Intel Atom 330 1.6ghz (dual), 9400GS
  • M350 Universal Mini-Itx Case
  • 2048MB RAM
  • Mythbuntu 9.10 booting off of the Server via LTSP

Frontend 2

  • Benq 24" 1080p LCD (Native Res: 1920x1080)
  • Zotac Ion, Intel Atom 330 1.6ghz (dual), 9400GS
  • M350 Universal Mini-Itx Case
  • 2048MB RAM
  • Mythbuntu 9.10 booting off of the Server via LTSP

Backend

  • Antec Mini-P180 Case
  • AMD Sempron LE-1250 2.2ghz (planning to underclock to 1.6ghz @ 0.9v)
  • Gigabyte GA-MA74GM-S2H 740G mobo
  • 2048MB RAM
  • 250gb HDD for OS
  • 5 x Samsung F2 1.5TB in RAID 5 (totalling 6000GB or 5.8TB)
  • Hauppauge WinTV Nova-T 500 PCI dual DVB-T tuner

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. The Hanspree is a throwback from the old setup.

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:

more comming soon

OLD notes on MythBuntu tweaks

Hard Drive optimisation

A good partition setup is as follows:

  1. 20gb / ext3
  2. 1GB SWAP (make this the same as the installed memory for easy sleep/hibernation)
  3. Rest as /var/lib/ xfs

I would recommend setting the noatime and nodiratime options to your drives, for less intensive harddisk access. To do this, go to your /etc/fstab which may look like this, for example:

# /dev/sda1
UUID=6e039164-c59f-49f1-9b96-e658a24aac2d /               ext3    errors=remount-ro 0       1
# /dev/sda3
UUID=d8af15ba-f63e-465d-848e-9c8d3d020e4a /var/lib        xfs     relatime        0       2
# /dev/sda2
UUID=07a339be-0944-4a04-a71a-9b1e173cbb6e none            swap    sw              0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto,exec,utf8 0       0

Change this file to look more like this:

# /dev/sda1
UUID=6e039164-c59f-49f1-9b96-e658a24aac2d /               ext3    noatime,errors=remount-ro 0       1
# /dev/sda3
UUID=d8af15ba-f63e-465d-848e-9c8d3d020e4a /var/lib        xfs     noatime,nodiratime,logbufs=8        0       2
# /dev/sda2
UUID=07a339be-0944-4a04-a71a-9b1e173cbb6e none            swap    sw              0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto,exec,utf8 0       0

Fixing LIRC for Hauppauge remotes

Mythbuntu uses the incorrect lircrc for the Hauppauge remote, you should copy and paste the one from the Hauppauge WinTV Nova-T 500 PCI page. Save this as ~/.lircrc and make links from this to ~/.mythtv/lircrc and ~/.lircrc/mythtv

Another annoying problem stems from the "events" on the system. These don't stay put, so on one boot you'll have your receiver on event6, the next, it'll be event3. Obviously Lirc can't magically detect this for you, but luckily, other system processes can.

First you want to find the event the receiver is currently running on:

cat /proc/bus/input/devices | grep -iA4 receiver

Now, run the following command:

udevinfo -a -p $(udevinfo -q path -n /dev/input/[OUTPUT_FROM_ABOVE_COMMAND]) | grep -i vendor

Hopefully you'll get one line saying "SYSFS{vendor}="0x99999" or something to that effect, if you get more than one, then usually its the first you need. Now, using your favourite editor, open /etc/udev/rules.d/10-local.rules:

sudo mousepad /etc/udev/rules.d/10-local.rules

Add the following line:

KERNEL=="event*",SYSFS{vendor}=="0x99999",SYMLINK="lirc0"

Obviously this is bit you replace 0x99999 with the code you received from one of the above commands. Once this is done, restart the udev server:

/etc/init.d/udev restart

And voilas. To test, you can check the listing of lirc0;

ls -la /dev/lirc*

It should output "lirc0 --> event6" or whatever your receivers eventid is.

For reference: /etc/lirc/hardware.conf

# /etc/lirc/hardware.conf
#
REMOTE="Hauppauge TV Card"
REMOTE_DEVICE="/dev/lirc0"
REMOTE_DRIVER="devinput"
REMOTE_MODULES="lirc_dev lirc_i2c"
REMOTE_LIRCD_CONF="/etc/lirc/lircd.conf"
REMOTE_LIRCD_ARGS=""

START_LIRCD="true"
LOAD_MODULES="true"

Recommended extra packages

If using wireless, install WICD!, this will enable mythbuntu to silently connect to your wireless network, without nagging you for keyrings, or d/cing after a sleep. To do this; add

#WICD, Wireless network manager
deb http://apt.wicd.net hardy extras

to your /etc/apt/sources.list file. From this point, just run "sudo apt-get install wicd" and you should be good to go; you might need to add /opt/wicd/tray.py to your startup programs, to get a tray icon.

Also perhaps add wine, depending on how you use the machine, I personally run some windows games I own, so wine is helpful:

# Wine
deb http://wine.budgetdedicated.com/apt gutsy main
deb-src http://wine.budgetdedicated.com/apt gutsy main

Then apt-get install wine!

Mysql Crashing

It would be a good idea to get mythbuntu to repair the tables on reboot. Having to manually repair the tables when the box crashes is annoying, so why not automate. Add this to your system startup, whichever way you prefer:

mysqlcheck -umythtv -pPASSWORD --auto-repair mythconverg