Changes between Initial Version and Version 1 of ppc/dreambox


Ignore:
Timestamp:
08/08/08 00:10:42 (16 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ppc/dreambox

    v1 v1  
     1= Syn-3 dreambox image =
     2
     3Deze pagina legt stap voor stap uit hoe we een image gemaakt hebben op basis van het Syn-3 buildsysteem en met de Syn-3 filosofie.
     4
     5Aan het eind vind je een samenvatting van alle settings, packages en daemons voor als je snel aan de slag wit.
     6
     7= Basis omgeving =
     8
     9Eerst moeten we zover komen dat we een eigen kernel kunnen booten die een NFS root filesystem heeft om te testen. Hierna kunnen we pas beginnen met het daadwerkelijk verzamellen en configureren van software, en het inelkaar zetten van een simpel init script.
     10
     11== Crosscompile toolchain ==
     12
     13Zelf heb ik een dm500, met powerpc architectuur. We moeten dus gaan crosscompilen en werken met andere architecturen.
     14
     15In wiki:npl/toolchains vind je de toolchains voor andere architecturen. Hiervoor was nog geen aanpassing nodig aan het buildsysteem
     16
     17Hierna konden we beginnen met het maken van een kernel.
     18
     19Omdat deze kernel ook de package naam linux_src en linux krijgt, zul je een conflict krijgen met de huidige i386 kernel. Hiervoor hebben we het buildsysteem aangepast. npl/ is vanaf nu voor i386 packages en i386 crosscompilers. ppc/ is nu voor powerpc packages.
     20
     21Hiervoor is source:trunk/npl/findfile is aangepast, zodat deze naar de ARCH environment variabelle kijkt. Hij zal dan eerst in syn3/$ARCH kijken en daarna in syn3/npl. Zo kunnen we eenvoudig meerdere architecturen aan. '''Vergeet deze variabelle dus niet te zetten als je zelf met de dreambox bezig gaat!'''
     22
     23== Kernel ==
     24
     25We beginnen eerst met de kernel. Deze willen we zelf compilen. Hierna gaan we vervolgens via tftp deze kernel booten en testen met de huidige image die in de flash staat.
     26
     27Info over het maken en de problemen met de kernel vind je hier in wiki:ppc/kernel.
     28
     29Damn...wat fscking veel werk om dat voorelkaar te krijgen. (2 dagen)
     30
     31== NFS boot ==
     32
     33Om handig te kunnen testen, moeten we eerst het booten over nfs voorelkaar krijgen. Hiervoor gebruik ik de bestaande gemini project omgeving als root filesystem.
     34
     35Gemini image: http://www.dreambox4u.com/dm500/gemini/Gemini_410_DM500_23102007.img
     36
     37Zon image is vrij kut ingepakt: een cramfs + squashfs aanelkaar geplakt (heb ik uit tuxbox). Bovendien in de endianness verkeert, dus het lukte me niet om hem 'uit te pakken'. Dan maar met scp de image gekopieert. (half krikky, zonder symlinks en devices).
     38
     39Dit is eerst voldoende om mee te testen. Als het enigsinds in busybox komt weten we dat het nfs deel werkt en kunnen we beginnen aan onze eigen omgeving.
     40
     41De kernelimage word dus al geboot via tftp. Nu moet de kernel zelf dus nog zn rootfs over nfs kunnen mounten.
     42
     43In Documentation/nfsroot.txt van de kernel sources vind je meer info over nfsroot filesystem.
     44
     45De kernel parameters voor mijn nfsboot zien er zo uit:
     46{{{
     47console=ttyS0,115200n8 ro root=/dev/nfs nfsroot=192.168.13.1:/home/dreamboxroot ip=dhcp
     48}}}
     49
     50Dit lijkt te werken, kernel krijgt ip en wil nfs mounten:
     51{{{
     52NET: Registered protocol family 17
     53Sending DHCP requests ., OK
     54IP-Config: Got DHCP answer from 0.0.0.0, my address is 192.168.13.2
     55IP-Config: Complete:
     56      device=eth0, addr=192.168.13.2, mask=255.255.255.0, gw=192.168.13.1,
     57     host=192.168.13.2, domain=psy.datux.nl, nis-domain=(none),
     58     bootserver=0.0.0.0, rootserver=192.168.13.1, rootpath=
     59Looking up port of RPC 100003/2 on 192.168.13.1
     60portmap: server 192.168.13.1 not responding, timed out
     61Root-NFS: Unable to get nfsd port number from server, using default
     62Looking up port of RPC 100005/1 on 192.168.13.1
     63...
     64}}}
     65
     66Nu nog de nfs server opzetten.
     67
     68Dit gaat heel simpel: standaard slackware pakketjes nfsd en portmap installen en starten. /etc/exports editten zodat ie naar de /home/dreamboxroot wijst.
     69
     70Rebooten met juiste kernel parameters en BOOM...het werkt ...half :). Dit komt omdat gemini het ip adress veranderd of weggooit, maar boeie...het werkt !
     71
     72Nou nog even verder kutten zodat we generieke kernel paramaters voor nfs hebben. (niet gebonden aan mijn ip adres)
     73
     74Zie volgende paragraaf.
     75
     76= Overzicht instellingen basis omgeving netwerk boot =
     77
     78De volgende deamons en configs heb je nodig om van linux server te kunnen booten.
     79
     80== Firewall ==
     81
     82Ik had geen zin om alle poorten uit te zoeken, dus ik heb mn firewall volledig open voor de lan-kant.
     83
     84== Minicom seriele settings ==
     85
     86Je moet de  seriele console gebruiken om te booten vanaf het netwerk.
     87
     88Minicom settings zijn: 115200,n,8,1 geen flowcontrol.
     89
     90Je moet op METEEN op enter drukken tijdens het booten om in het boot menu te komen.
     91
     92Kernel commandline dreambox (is hardcoded in onze image, dus moet standaard goed staan als je zometeen via tftp boot):
     93{{{
     94console=ttyS0,115200n8 root=/dev/nfs ip=both ro
     95}}}
     96
     97== DM500 Root filesystem ==
     98
     99Zorg dat je het root filesystem maakt onder /home/dm500_root. Hier zal onze eigen dreambox omgeving ook komen als we straks pakketjes gaan maken. Als test heb ik even geminie er in gescp-ed om te kijken of het wil.
     100
     101Voor andere dreamboxen zullen we straks dus andere directories krijgen.
     102
     103== tftp deamon en kernel image ==
     104Deze is nodig om de kernel in te laden via het netwerk. Installeer de package atftpd.
     105
     106Installeer eerst dm500_linux op je server, zodat je de kernel in /home/dm500_root/boot/zImage.treeboot krijgt.
     107
     108atftpd deamon parameters, om de kernel te kunnen laten booten:
     109{{{
     110atftpd --daemon -v /home/dm500_root
     111}}}
     112
     113== NFS server ==
     114
     115De nfs server is nodig om het rootfilesystem te kunnen mounten, zodat alles vanaf het netwerk boot.
     116
     117Installeer de standaard slackware pakketjes nfs-utils en portmap.
     118
     119Daarna de volgende dingen doen om nfs server te starten. Hij zal bij een reboot vanaf nu ook automatisch starten:
     120{{{
     121[Syn-3] root@psy.datux.nl /home/dreamboxroot# chmod +x /etc/rc.d/rc.nfsd
     122[Syn-3] root@psy.datux.nl /home/dreamboxroot# chmod +x /etc/rc.d/rc.portmap
     123[Syn-3] root@psy.datux.nl /home/dreamboxroot# cat /etc/exports
     124# See exports(5) for a description.
     125# This file contains a list of all directories exported to other computers.
     126# It is used by rpc.nfsd and rpc.mountd.
     127/home/dm500_root
     128[Syn-3] root@psy.datux.nl /home/dreamboxroot# /etc/rc.d/rc.portmap start
     129[Syn-3] root@psy.datux.nl /home/dreamboxroot# /etc/rc.d/rc.nfsd start
     130}}}
     131
     132== DHCP server ==
     133
     134De dhcp server bepaald het ip van je box en geeft aan waar de kernel via tftp en de nfsroot staan.
     135
     136Instelling dhcp server in /etc/dhcpd.conf:
     137{{{
     138            host db {
     139              hardware ethernet 00:09:34:3b:34:44;
     140              fixed-address 192.168.13.2;
     141              option root-path "192.168.13.1:/home/dm500_root";
     142              filename "/boot/zImage.treeboot";
     143            }
     144}}}
     145
     146Restarten met svcrestart /service/dhcpd
     147
     148== Booten ==
     149
     150Nu moet je kunnen booten.
     151
     152 * Zet dreambox aan
     153 * Druk gelijk op enter in minicom (of houdt deze vast)
     154 * Zorg dat je van netwerk boot
     155 * De zooi moet geboot worden nu. :)
     156
     157Werkt het niet? Probeer het dan te fixen met behulp van het hele verhaal wat je op deze pagina vind :)
     158
     159
     160= Opzet root file system =
     161
     162Nu we onze eigen kernel hebben EN kunnen booten via het netwerk, is het tijd om losch te gaaaaan. :)
     163
     164We kunnen nu onze eigen omgeving in deze root zetten.
     165
     166Omdat we nu verschillende pakketjes gaan krijgen, ga ik 1 verzamel pakket maken voor het dm500 root filesystem. Op deze manier kunnen we bepaalde pakketten generiek houden en voor meerdere dreamboxen of andere platvormen gebruiken.
     167
     168Dit pakketje zal in ppc/dreambox/dm500_root komen, en alleen files in /home/dm500_root hebben. Allerlei andere losse pakketjes zoals busybox, enigma en closed source driver pakketten zullen verzameld worden in dit ene pakketje.
     169
     170== Basis systeem ==
     171
     172 * wiki:ppc/system/glibc
     173 * wiki:ppc/system/busybox
     174
     175
     176
     177