Gentoo, ION 330 and XBMC == perfect HTPC
During last two days I managed to install my HTPC (soon I will add printers and samba to it). There is a lot of useful information around the internet which helped me on the way. I really like to create Gentoo from scratch logs, so I would like to share it with you together with used patches (in my iElectric gentoo repository).
DISCLAIMER: This is far from perfect (even the ebuilds), but it works;)
DISCLAIMER2: I'm aware this is not the noobs guide, it's more of a reference manual
# some stolen from http://en.gentoo-wiki.com/wiki/Acer_Aspire_Revo_R3600_/_R3610#VDPAU * ping google.com * fdisk /dev/sda # boot partition n p 1 <enter> +30M # swap partition n p 2 <enter> +1G # root partition n p 3 <enter> <enter> w # create filesystems mkfs.ext2 /dev/sda1 mkswap /dev/sda2 mkfs.ext4 /dev/sda3 # activate swap swapon /dev/sda2 # prepare/mount chroot mount /dev/sda3 /mnt/gentoo mkdir /mnt/gentoo/boot mount /dev/sda1 /mnt/gentoo/boot cd /mnt/gentoo # stage3/portage download (use d shortcut for download) links http://www.gentoo.org/main/en/mirrors.xml server->releases->x86->current stage3 i686 + DIGEST + CONTENTS server->snapshosts->portage-latests + digest # validate size md5sum -c stage*.DIGEST md5sum -c portage*.md5sum # install portage/stage3 tar xvjpf stage3-*.tar.bz2 tar xvjf portage-latests.tar.bz2 -C /mnt/gentoo/usr # select mirrors (in terminal 2) mirrorselect -i -o >> /mnt/gentoo/etc/make.conf mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf # add slovenian mirror # copy dns settings cp -L /etc/resolv.conf /mnt/gentoo/etc/ # create local portage overlay mkdir /mnt/gentoo/usr/local/portage # edit make.conf (back in terminal 1) vim /mnt/gentoo/etc/make.conf # chroot mount -t proc none /mnt/gentoo/proc mount -o bind /dev /mnt/gentoo/dev chroot /mnt/gentoo /bin/bash env-update . /etc/profile # refresh tree emerge --sync # select profile eselect profile list eselect profile set #n # emerge must-have stuff under install emerge -v vim eix pciutils gentoo-sources # setup slovene locale (terminal 2) vim /etc/locale.gen vim /etc/env.d/02locale locale-gen # setup slovene keymap vim /etc/conf.d/keymaps # setup zone cp /usr/share/zoneinfo/Europe/Ljubljana /etc/localtime # setup clock vim /etc/conf.d/clock # setup hostname vim /etc/conf.d/hostname (server.domain.si) # add basic startup scripts rc-update add net.eth0 default rc-update add sshd default # install distcc # http://www.gentoo.org/doc/en/distcc.xml # http://www.gentoo.org/doc/en/cross-compiling-distcc.xml emerge -av distcc vim /etc/distcc/hosts # do the magic in /usr/lib/distcc/bin/ # compile kernel lspci (terminal 2) cd /usr/src/linux make menuconfig - kernel settings Procesesor type and features --> (Intel Atom) Processor family Power management and ACPI options --> CPU frequency scaling --> everything Device drivers --> Serial Ata and Parallel ATA drivers --> NVIDIA SATA support Networking drivers -> Ethernet (10 or 1000mbit) --> [M] nForce Ethernet support Wireless LAN --> Atheros Wireless Cards --> [M] everything Sound card support --> ALSA --> PCI Sound devices --> Intel HD Audio --> [*] everything [ ] Multiple devices driver support --> File systems -> [*] Ext2 [*] Ext4 [*] FUSE # compile kernel and place it make && make modules_install cp arch/i386/bzImage /boot/kernel- # add modules to startup vim /etc/modules.autoload.d/kernel2.6 # set root password emerge -av pwgen dhcpcd grub pwgen passwd # create user # gost==guest useradd -m -G users,wheel,video,cdrom -U -s /bin/bash ielectric useradd -m -G users,video,cdrom -U -s /bin/bash gost # setup grub conf vim /boot/grub/grub.conf # setup fstab vim /etc/fstab # setup MBR grub --no-floppy root (hd0,0) setup (hd0) quit # cleanup and reboot rm /portage* rm /stage* reboot ### after basic OS setup # on local machine setup hosts vim /etc/hosts # back to server # setup rc.conf vim /etc/rc.conf # local: copy ssh key over cat ~/.ssh/id_rsa.pub | ssh server.domain.si "cat - >> ~/.ssh/authorized_keys" # back to remote chmod 744 /home/ielectric/.ssh/autorhized_keys # setup sshd vim /etc/ssh/sshd_config # system update eix-sync emerge -DuNav world # install autounmask flagedit emerge -av autounmask gentoolkit flagedit # eix and screen install emerge -av eix screen echo "*" > /etc/eix-sync.conf # layman flagedit app-portage/layman +subversion +git +mercurial emerge -av layman layman -a iElectric layman -a sunrise # ntp emerge -av ntp /etc/init.d/ntpd start /etc/init.d/ntp-client start rc-update add ntpd default rc-update add ntp-client default # update startup script rc-update add acpid default rc-update add nscd default rc-update add dbus default rc-update add hald default rc-update add consolekit default # bacula client flagedit app-backup/bacula +bacula-nodir +bacula-nosd +bacula-clientonly emerge -av bacula # update directory name in bacula-df.conf # update bacula-dir.conf on central server /etc/init.d/bacula-fd start rc-update add bacula-fd default # logrotate, syslog-ng, vixie-cron, slocate emerge -av slocate logrotate syslog-ng vixie-cron rc-update add syslog-ng default rc-update add vixie-cron default # munin echo "net-analyzer/munin postgres ssl" >> /etc/portage/package.use echo "x11-libs/cairo svg" >> /etc/portage/package.use emerge -av munin sudo -u munin munin-node-configure --shell | bash # update allowed host in /etc/munin/munin-node.conf # update munin.conf on central server /etc/init.d/munin-node start rc-update add munin-node default # update cronjob crontab -e slocate, eix-sync # random stuff emerge -av links mailx ntfs3g # xbmc # ebuild should be taken from iElectric overlay autounmask -a media-tv/xbmc-9.11-r5 emerge -av xdm gdm gnome-session xbmc rc-update add xdm default # set default session to xbmc cd /etc/X11/Sessions/ ln -s /usr/bin/xbmc-standalone vim /etc/rc.conf # switch to nvidia opengl implementation eselect opengl set 1 # give guest user permissions for reboot/shutdown.. polkit-auth --user gost --grant org.freedesktop.hal.power-management.reboot polkit-auth --user gost --grant org.freedesktop.hal.power-management.shutdown polkit-auth --user gost --grant org.freedesktop.hal.power-management.suspend # install transperancy skin cd /home/gost/.xbmc/skin/ svn checkout http://transparency-xbmc.googlecode.com/svn/trunk/ Transparency # install svn repo installer http://marshalleq.wordpress.com/2009/08/22/how-to-install-svn-installer-on-xbmc-live-to-enable-automatic-skin-and-plugin-upgradesinstalls/ # install OpenSubtitles OSD http://code.google.com/p/opensubtitles-osd/wiki/Instalation # go to scripts and setup the plugin # go to skin settings and enable subtitle OSD plugin -> default.py # install remote support # ebuild should be taken from iElectric overlay # BIG BIG THANKS to # http://forum.sabayon.org/viewtopic.php?f=56&t=20113&start=10#p114286 autounmask -a app-misc/lirc-0.8.6-r4 echo 'LIRC_DEVICES="wpc8769l"' >> /etc/make.conf emerge -av lirc rc-update add lirc default echo "lirc_wb677" >> /etc/modules.autoload.d/kernel-2.6 # check if everything boots correctly reboot # TODO: list of all conf files # TODO esata?
UPDATE: fixed typo and added dummy module for lirc