DBOX2 flash Howto v 0.1 15.3.01 derget(derget@tuxbox.org) blub , hier wird irgentwie beschrieben wie man in das Flash der dbox2 ppcboot , kernel und linux packt ... 1. Vorraussetzungen 2. Einleitung 3. kurz was zu mtd 4. ppcboot 5. kernel 6. filesysteme und kernel ins flash 1. Vorraussetzungen Eine Nokia oder Sagem dbox2 mit 2*Intel Flash ! alles andere geht noch nicht ... http://www.noernet.de/dbox2/flash/nokia_2xIntel_ppcboot.bz2 http://www.noernet.de/dbox2/flash/mkcramfs http://www.noernet.de/dbox2/flash/eraseall http://dbox.fqdn.org/kernel/2.4.2/linux-2.4.2.dbox+mtd.kju.diff.gz 2. Einleitung Blub also die idee ist das der Bootloader der dbox2 aus dem flfs (das fs das zz auf der box ist) ppcboot lädt , dafür muss ppcboot natürlich am anfang dieses flfs sein. ppcboot lädt dann den kernel direct aus dem flash , und dann kommt in den rest des flashs natürlich noch nen linux unterstütztes filesystem ... zz sieht es so aus 128K Bootloader 640k ppcboot im flfs 640k Kernel RAW im Flash 1024k jffs , das ist nen rw filsystem in das settings , etc sollen 5760k cramfs , das ist nen ro filsystem mit sehr guter komprimierung zz mounte ich / als cramfs(ro) und /var als jffs(rw) das in var dann der ganze scheiss steht der sonst eigentlich in etc gehört is zwar nicht linuxconform , wer ne bessere idee hat soll mir mal ne mail schreiben ... 3. kurz was zu mtd öh die mtd treiber legen verschidenen devices im /dev an /dev/mtd/ sind die devices direct (die bearbeitet man mit cat oder cp) /dev/mtdblock/ sind die block devices (die mountet man) 4. ppcboot also das ist der schwierigste teil und ich weiss noch immer nicht wie ich das irgentwie in nen howto packen soll , deshalb gibts zz nur nen image von mir http://www.noernet.de/dbox2/flash/nokia_2xIntel_ppcboot.bz2 das ist nen 640 kb grosses image das direct nach dem bootloader ins flash gehört also über netzt ppcboot booten dann im ppcboot bootp 100000 /tftpboot/nokia_2xIntel_ppcboot protect off 10020000 107fffff erase 10020000 107fffff cp.l 100000 10020000 28000 Wenn ihr nun die box reebootet sollte sie ppcboot aus dem flfs laden. die env´s von ppcboot stimmen schon für später bootargs=ro root=/dev/mtdblock/4 <=== da ist später das / als cramfs(ro) bootcmd=protect off 10000000 107fffff;bootm 100C0000 <=== der flash muss unprotectet werden ansonsten kann linux nicht in ihn schreiben. und dann wird der kernel aus 100c000 gebootet (768k) 5. kernel also kernel 2.4.2 mit dem diff von kju (http://dbox.fqdn.org/kernel/2.4.2/linux-2.4.2.dbox+mtd.kju.diff.gz) da sind alle mtd und jffs patches mit drinn ... ihr müsst aber trotzdem nochwas an den mtd partitionen ändern , weil die partitionen sind Hardcodet im treiber :( .../linux/driver/mtd/physmap.c ganz am anfang den schnickschnack in : const static struct mtd_partition partition_info[]= {{name: "BR Bootloader", size: 128 * 1024, offset: 0, mask_flags: MTD_WRITEABLE}, {name: "PPC Bootloader", size: 640 * 1024, offset: MTDPART_OFS_APPEND, mask_flags: 0}, {name: "Kernel", size: 640 * 1024, offset: MTDPART_OFS_APPEND, mask_flags: 0}, {name: "var", size: 1024 * 1024, offset: MTDPART_OFS_APPEND, mask_flags: 0}, {name: "System", size: MTDPART_SIZ_FULL, offset: MTDPART_OFS_APPEND, mask_flags: 0}}; ändern .... dann kernel normal configgen ihr braucht aber 2 kernel hier die wichtigsten sachen die jeder beider kernel haben muss CONFIG_MTD=y CONFIG_MTD_CFI=y CONFIG_MTD_CFI_INTELEXT=y CONFIG_MTD_PHYSMAP=y CONFIG_MTD_PHYSMAP_START=10000000 CONFIG_MTD_PHYSMAP_LEN=800000 CONFIG_MTD_PHYSMAP_BUSWIDTH=4 CONFIG_MTD_CHAR=y CONFIG_MTD_BLOCK=y CONFIG_JFFS_FS=y CONFIG_JFFS_FS_VERBOSE=0 CONFIG_CRAMFS=y CONFIG_NFS_FS=y CONFIG_NFS_V3=y der eine kernel , wird normal übers netzt gebootet und hat sein / auch über nfs der andere muss ins flash , der darf weder unterstützung für bootp und / über nfs support haben , ansonsten sucht der kernel beim booten erstmal nach nem bootp server und es dauert 3 min bis das austimed ..... so nun habt ihr 2 kernel ..... 6. filesysteme und kernel ins flash So nun bootet ihr ganz normal das system auf eurer dbox über nfs mit dem neuen kernel allerdings müsst ihr bei ppcboot IMMER DAS FLASH UNPROTECTEN sonst könnt ihr nicht drauf schreiben also im ppcboot eigeben : protect off 10000000 107fffff ja da steht 10000000 NICHT 10020000 ihr unprotectet das ganze flash inclusive des bootloaders DAS IST WICHTIG , sonst gehts nicht richtig !!! nun könnt ihr erstmal das jffs im flash anlegen erstmal die flash partition löschen mit eraseall (http://www.noernet.de/dbox2/flash/eraseall) eraseall /dev/mtd/3 danach könnt ihr jffs anlegen mit : mount -t jffs /dev/mtdblock/3 /mnt machen , das legt jffs an erstellt euch ein / cramfs image mit mkcramfs (http://www.noernet.de/dbox2/flash/mkcramfs) (öh wichtig ihr müsst das cramfs image auf der dbox erstellen wegen bigendian !! ) das cramfs image könnt ihr dann ins flash kopieren mit : eraseall /dev/mtd/4 (erstmal alles löschen) cp cramfs.img /dev/mtd/4 nun noch den kernel für die box ins flash kopieren eraseall /dev/mtd/2 (erstmal alles löschen) cp dbox-linux /dev/mtd/2 fertig :) jetzt sollte die box alles aus dem flash booten