Meine Dockstar kann Debian, Samba, Webradio vom NAND - und hört auf Fernbedienung..
Beim Aufsetzen der zweiten Dockstar schreibe ich mit. Vielleicht interessiert es jemand - vielleicht hilft es auch nur mir selbst mich in einem halben Jahr zu erinnern..
Disclaimer: Ohne Gewähr, bitte richtet Euch drauf ein ggf. ein serielles Consolenkabel für 5€ bestellen und anpassen zu müssen..
A) Dockstar in Betrieb und 'in Besitz' nehmen:
1) Internet Zugriff abschalten - sonst läd die Dockstar evlt. eine neue Firmware mit unbekanntem Root Passwort
Eine Möglichkeit ist es der dem DSL Router das Kabel zum Splitter für 10 Minuten zu klauen.
2) Dockstar an Strom + den DHCP Server (Fritzbox) anschliessen.
3) Dockstar IP finden.
Im Netz gibt es alternative Ideen - ich habe einfach meine Subrange gepingt. Da ich nur wenige Geräte habe die in der Regel zwsichen 20 und 40 liegen habe ich die Suche beschränkt. 192.168.178. ist für mein Subnetz spezifisch - wer das nicht 'kennt' sollte evlt. hier aufhören zu lesen.
for i in `seq 20 45`; do ping -n 1 192.168.178.$i |grep Reply; done ## Schneller
for i in `seq 2 255`; do ping -n 1 192.168.178.$i |grep Reply; done ## Komplettes Subnetz
4) Per ssh verbinden
$ for i in `seq 20 45`; do ping -n 1 192.168.178.$i |grep Reply; done
Reply from 192.168.178.21: bytes=32 time<1ms TTL=128
Reply from 192.168.178.36: bytes=32 time<1ms TTL=64
Die .21 bin ich - die .36 ist neu - hallo Dockstar!
Wir sind im 'Pogoplug', dem Orginal OS der Dockstar!
5) Heimtelefonie & FW update unterbinden
Den Start des Update managers auskommentieren:
PID steht hier für die Process ID - die wahrscheinlich in der zweiten Spalte steht.
Das kill -9 ruhig zweimal ausführen.
Anschliessend noch einmal schauen das nix mehr läuft:
Wenn hier nix mehr auftaucht den DSL Router mit der grossen weiten Welt verbinden.
B) UBoot tauschen & Debian vom USB Stick booten (The Doozan way..)
1) USB Stick partitionieren
Ich nehme eine 500 MB Parition auf dem 8GB Stick - damit kann ich das Image einfach mit partImage sichern und notfalls auch auf einem kleineren Stick restoren.
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-972, default 1): Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-972, default 972): +500M
2) Installation orginal laut Jeff Doozan - allerdings nur Schritt I.
Alles nur geklaut.. http://forum.doozan.com/read.php?2,72
Hierbei wir das Uboot erneuert, ?heimtelefonieren? Pogoplug services ausgeschaltet und ein Debian auf dem Stick installiert.
cd /tmp
wget http://jeff.doozan.com/debian/dockstar.emdebian-squeeze-readonly.sh
chmod +x dockstar.emdebian-squeeze-readonly.sh
Patch - zusätzliches Package 'dialog' installieren - sonst fällt der Install auf die Nase?
3) Build starten, Kaffee trinken - oder Doku schreiben..
export PATH=$PATH:/usr/sbin:/sbin
./dockstar.emdebian-squeeze-readonly.sh# Would you like to disable the pogoplug services? [Y/n] Y
# Installing /uboot-original-mtd0.kwb...
Jetzt baut Sie - ganz alleine
Installation complete
You can now reboot your device into Debian.
If your device does not start Debian after rebooting,
you may need to restart the device by disconnecting the power.
Reboot now? [Y/n]
C) Debian booten und 'customizen'
Grün blinken - wir laden noch - das dauert vom USB Stick doch deutlich länger. Eventuell ändert sich jetzt auch die MAC Adresse - also wie oben beschrieben nach der neuen IP suchen. Kabel sitzt noch fest? Dann klappts auch per DHCP..
$ for i in `seq 30 39`; do ping -n 1 192.168.178.$i |grep Reply; done
Reply from 192.168.178.36: bytes=32 time<1ms TTL=64
Da ist sie wieder - gleich ip - jetzt aber mit neuen Passwort: 'root'
1) Root filesystem als rw mounten
mount -o remount,rw /
2) Zusätzliche emdebian Packete installieren
Achtung! Die Samba emdebian packete lassen sich installieren, aber das Package samba-common-bin mit wichtigen Programmen wie smbpasswd fehlen mir. Ich habe keine funktionierende Userberechtigung hin bekommen, sobald man von security share auf user umstellt wirds schwierig.
Sollte es jemand ans fliegen bekommen - comments welcome. Derweil nutze ich das Debian Samba. (s.u.)
apt-get install screen rsync ntp htop update-inetd cron
E: Directory '/var/log/apt/' missing # Don't worry
3) (debian) Samba installieren
vi /etc/apt/sources.list
#deb http://www.emdebian.org/grip squeeze main
deb http://ftp.us.debian.org/debian squeeze main
apt-get update
apt-get install samba samba-common
vi /etc/apt/sources.list
deb http://www.emdebian.org/grip squeeze main
#deb http://ftp.us.debian.org/debian squeeze main
apt-get update
Display More
smb.conf anpassen, user anlegen, shares / mount points anlegen
4) root password ändern
Und jetzt noch eine valide smb.conf erstellen
vi /etc/samba/smb.conf
[global]
workgroup = WORKGROUP
server string = %h server
security = user
[mnt]
comment = Dockstar share
read only = no
browseable = no
path = /mnt
guest ok = yes
valid users = user
Display More
Ich habe einen kleinen workaround eingebaut um die smb.conf (wird vom webserver gezogen) auch im ro mode noch anpassen zu können. (Auf dem Webserver, Änderung wird durch reboot angezogen.
5) Bei Bedarf ssh keys generieren, authorized keys importieren
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): # leave blank
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
If you know how & why - place the public ssh key of your desktop in
6) Eine statische IP vergeben
/etc/network/interfaces
Ändern von
nach (sicherstellen das die IP im Subnetz liegt und nicht vom DHCP Server verwendet wird)
auto lo eth0
iface lo inet loopback
iface eth0 inet static
address 192.168.178.100
netmask 255.255.255.0
network 192.168.178.0
broadcast 192.168.178.255
gateway 192.168.178.1
dns-nameservers 192.168.178.1
/sbin/init-ro fixen:
vi /sbin/init-ro
nach:
7) Disable IPV6
Zeitzone einstellen
9) hd-idle - Festplatte in den Standby fahren
Das Package liegt im Source vor - da zum compilieren einiges nachinstalliert werden muss habe ich ein tgz erstellt.
cd /tmp
wget http://vdr.itsmee.de/dockstar/hd-idle.tgz
tar -zxvf hd-idle.tgz
cd hd-idle
install -g root -o root hd-idle /usr/local/sbin
7) WLan installieren
apt-get install wpasupplicant wireless-tools
cd /lib/firmware/2.6.32-dockstar
wget http://vdr.itsmee.de/dockstar2/rt73.bin
wpa_supplicant -D wext -i wlan0 -c /etc/wpa_supplicant.conf
Hier fehlt noch etwas..
10) mpd / mpc als Webradio / Medienbibliothek installierne
Wieder auf das Debian Repo umstellen (siehe C-3)
Lautstärke einstellen
MPD configurieren
vi /etc/mpd.conf
audio_output {
type "alsa"
name "ALSA"
device "hw:0,0" # optional
# format "44100:16:2" # optional
# mixer_device "default" # optional
# mixer_control "PCM" # optional
# mixer_index "0" # optional
}
MPD beim booten automatisch starten
Alsa output umstellen - hilft gegen Knacksen
vi /etc/asound.conf
pcm.!default {
type plug
slave.pcm {
type dmix
ipc_key 1024
slave {
pcm "hw:0,0"
# rate 44100
rate 44800
}
}
}
Display More
Los geht's - ausprobieren!
/etc/init.d/mpd start
mpc add http://swr.ic.llnwd.net/stream/swr_mp3_m_swr3b
mpc add http://gffstream.ic.llnwd.net/stream/gffstream_mp3_w69a
mpc add http://tiscali.project-fx.de/play.mp3?radio=ant1
mpc add http://swr.ic.llnwd.net/stream/swr_mp3_m_dasdinga
mpc add http://tiscali.project-fx.de/play.mp3?radio=harmonyfm
mpc add http://tiscali.project-fx.de/play.mp3?radio=kiss-fm
mpc add http://tiscali.project-fx.de/play.mp3?radio=planetradio
mpc play
11) Lirc mit Fernbedienung einrichten
Jetzt eine valide lircd.conf + lircrc nach /var/tmp/ legen Das ist ein andere Thema, das ich hier ignoriere.
cat /var/tmp/lircrc
begin
button = CH+
prog = irexec
repeat = 0
config = mpc next && echo "next"
end
begin
button = CH-
prog = irexec
repeat = 0
config = mpc prev && echo "previous"
end
begin
button = VOL+
prog = irexec
repeat = 0
config = mpc volume +10 && echo "vol+"
end
Display More
Fehlt: /var/tmp Sichern für den reboot
vi /etc/lirc/hardware.conf
# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS=""
#Don't start lircmd even if there seems to be a good config file
START_LIRCMD=false
#Don't start irexec, even if a good config file seems to exist.
START_IREXEC=false
#Try to load appropriate kernel modules
LOAD_MODULES=true
# Run "lircd --driver=help" for a list of supported drivers.
DRIVER="dvico"
# If DEVICE is set to /dev/lirc and udev is in use /dev/lirc0 will be
# automatically used instead
DEVICE="/dev/usb/hiddev0"
MODULES=""
# Default configuration files for your hardware if any
LIRCD_CONF=""
LIRCMD_CONF=""
Display More
D) USB content auf den internen NAND flashen
Eigentlich sind wir jetzt schon fertig. Vom USB Stick kann man jetzt noch mehrere Tage booten und ggf. anpassen. Auf Dauer ist der Flash aber schneller.
Ich bin mir nicht ganz sicher - denke aber das hier auch während des Bootvorgangs nicht viel auf NAND geschrieben wird - die Lebensdauer also eigentlich nicht wesentlich verringert werden sollte?
Wichtig aber - sobald die Box gebootet hat ist das root filesystem als read only gemountet. Da die Box eh durchlaufen soll dürfte also nix passieren?
Wieder streng nach doozan - nur im tar exclude ich noch ein paar Packete - sonst reicht mein Nand nicht..
flash_eraseall /dev/mtd3
ubiformat /dev/mtd3 -y
ubiattach /dev/ubi_ctrl -m 3
ubimkvol /dev/ubi0 -m -N rootfs
mkdir /tmp/ubifs
mount -t ubifs ubi0:rootfs /tmp/ubifs
tar \
--exclude=/lost+found \
--exclude=/tmp \
--exclude=/sys \
--exclude=/proc \
--exclude=/var/cache/apt \
--exclude=/var/lib/apt/lists \
-cf - / | ( cd /tmp/ubifs ; tar -xpvf - )
mkdir /tmp/ubifs/tmp
mkdir /tmp/ubifs/sys
mkdir /tmp/ubifs/proc
# change root fs type from ext2 to ubifs
sed -i 's/^\(\/dev\/root.*\)ext2/\1ubifs/' /tmp/ubifs/etc/fstab > /dev/null 2>&1
sed -i 's/^\/dev\/sda1.*$//' /tmp/ubifs/etc/fstab
umount /tmp/ubifs
Display More
fw_setenv set_bootargs_ubi 'setenv bootargs console=$console ubi.mtd=3 root=ubi0:rootfs rootfstype=ubifs $mtdparts init=/sbin/init-ro'
fw_setenv bootcmd_ubi 'run set_bootargs_ubi; ubi part data; ubifsmount rootfs; ubifsload 0x800000 /boot/uImage; ubifsload 0x1100000 /boot/uInitrd; bootm 0x800000 0x1100000'
# Configure new bootloader to run old uBoot
fw_setenv bootcmd 'usb start; run usb_bootcmd; run bootcmd_ubi; run pogo_bootcmd; reset'
E) Offene Fragen / fehlt noch
- NTFS geht nur als ro? (mount /dev/sdb1 /mnt -o fmask=0111,dmask=000)
- Speedtest (WLAN / Kable)
- MPD spielt noch keine wma / mms ab - evtl fehlt hier curl?
ItsMee