Customer-Rom für X2G

  • Antworten:29
  • OffenNicht stickyNicht beantwortet

19.01.2011 02:02:42 via Website

Alexandru Stoian
I think we need to decompress them first and I found out that u-boot has something to do with this. Ill be looking more into it.

No, I think that a compression go on the fly over a "ubi-driver".
I am a bit further....

Use rootfs_mtd2.img from her http://forum.doozan.com/read.php?4,831

! This is just to try, not android.


1gertm# modprobe nandsim first_id_byte=0x20 second_id_byte=0xaa third_id_byte=0x00 fourth_id_byte=0x15
2gertm# dd if=rootfs-mtd2.img of=/dev/mtd0 bs=2048
313056+0 Datensätze ein
413056+0 Datensätze aus
526738688 Bytes (27 MB) kopiert, 0,179508 s, 149 MB/s
6gertm# modprobe ubi mtd=0
7gertm# ubinfo
8UBI version: 1
9Count of UBI devices: 1
10UBI control device major/minor: 10:55
11Present UBI devices: ubi0
12gertm# mtdinfo
13Count of MTD devices: 1
14Present MTD devices: mtd0
15Sysfs interface supported: yes
16gertm# cat /proc/mtd
17dev: size erasesize name
18mtd0: 10000000 00020000 "NAND simulator partition 0"
19gertm# mount -t ubifs ubi0_0 /mnt/ubifs
20gertm#
Success, I have the UBIFS mounted in / mnt / UBIFS
So Ubuntu is configured correctly and I'm on the right way.

The command:
1mknod /dev/mtd0 c 90 0
is not necessary for Ubunto 10.10, the node is automatically created.

kawa

20.01.2011 22:41:26 via Website

Alexandru Stoian
I can mount other ubifs images just not ours. Seems to be different. If you can use this ti mount our syste_ubi.img let me know. I wont be able to check on it till this weekend.

I think the problem is nandsim.



1modprobe nandsim first_id_byte=0x20 second_id_byte=0xaa third_id_byte=0x00 fourth_id_byte=0x15

This make a simulated nand with this parameters:
1gertm# mtdinfo /dev/mtd0
2mtd0
3Name: NAND simulator partition 0
4Type: nand
5Eraseblock size: 131072 bytes, 128.0 KiB
6Amount of eraseblocks: 2048 (268435456 bytes, 256.0 MiB)
7Minimum input/output unit size: 2048 bytes
8Sub-page size: 512 bytes
9OOB size: 64 bytes
10Character device major/minor: 90:0
11Bad blocks are allowed: true
12Device is writable: true

The eraseblock size is 131072 bytes (20000Hex). I log with Hexedit in the file rootfs-mtd2.img and found every offset 0x20000 the magic number "UBI#"
(hex 55 42 49 23)
I can mount the file without problems.

In system_ubi.img is the offset for the magic number "UBI#" 0x80000. This corresponding a eraseblock size of 524288.

How can I set this value on nandsim?

kawa

24.07.2011 00:44:58 via Website

OK, das sind alles Grundlagen :bored:
UBIFS (Unsorted Block Image File System) Quelle

UBIFS arbeitet auf der Basis von UBI-Inhalten. UBI ist ein „Volume-Management“-System, dass mehrere logische Volumes auf einem physikalischen Flash-Speicher verwalten kann.

Leider kann UBIFS nicht, so wie LOGFS, auf MTD-Devices verwendet werden. Seit 2007 entwickelt und verbessert die Universität von Szeged in Ungarn mit Unterstützung der Firma NOKIA das Dateisystem UBIFS. Seit dem Kernel 2.6.27 ist UBIFS in Linux integriert.

UBIFS ist ein Nachfolger von JFFS2 und somit ein Konkurrent von LOGFS. Während JFFS2 kein Indexing auf dem Flash-Speicher selbst durchführt reiht UBIFS die Indezes in einen B+ Baum ein, der mit einem Wandering-Algorithmus durchlaufen werden kann.

Während JFFS2 eine verkettete Liste der Indexes immer im Speicher hat arbeitet UBIFS mit der TNC-Methode (Tree Node Cache). JFFS2 verwendet zudem das „write through“-Verfahren, also schreibt die Daten immer sofort, während UBIFS das „write back“-Verfahren benutzt, also die Daten beim Schreiben puffert.

UBIFS erstellen und mounten

1. NandSim-Modul laden (emuliert 128 MiB NAND-Flash)
user@pc:~$ modprobe nandsim

2. UBI-Module laden und an mtd0 anhängen
user@pc:~$ modprobe ubi mtd=0

3. Ein Benutzer-Volume auf dem UBI-Gerät anlegen
user@pc:~$ ubimkvol -d 0 -n 0 -N ubifs -s 120MiB
Volume ID 0, size 7928 LEBs (125833216 bytes, 120.0 MiB ),
LEB size 15872 bytes (15.5 KiB ), dynamic, name "ubifs",
alignment 1

4. Dateisystem einhängen
user@pc:~$ mount -t ubifs ubi0:ubifs /mnt /ubifs

Wahrscheinlich habt ihr das "How do I extract files from an UBI/UBIFS image?" Thema bereits gefunden.

— geändert am 24.07.2011 10:48:15

30.05.2012 19:00:24 via Website

Nachdem ich einige Zeit mit anderen Dingen beschäftigt war, hab ich mir ein, zwei Stunden Zeit genommen und mich noch einmal
mit dem UBIFS des TouchletX2 beschäftigt.

Inzwischen arbeite ich mit Ubuntu 12.04LTS. Damit ist es mir nun gelungen die system_ubi.img zu mounten.
Bisher ist dias an der fehlenden Unterstützung des Flashspeichers durch "nandsim" gescheitert.

Hier der Weg das Image zu mounten:

1sudo su
2mkdir /mnt/ubifs
3modprobe ubifs
4modprobe nandsim first_id_byte=0xec second_id_byte=0xd7 third_id_byte=0x00 fourth_id_byte=0x36 parts=328,7864 cache_file=/tmp/nand.imgs
5dd if=/home/system_ubi.img of=/dev/mtd0 bs=512k
6ubinfo
7---> UBI version: 1
8---> Count of UBI devices: 0
9---> UBI control device major/minor: 10:57
10ubiattach -p /dev/mtd0 -O 4096
11---> UBI device number 0, total 328 LEBs (169279488 bytes, 161.4 MiB), available 124 LEBs (63995904 bytes, 61.0 MiB), LEB size 516096 bytes (504.0 KiB)
12ubinfo
13---> UBI version: 1
14---> Count of UBI devices: 1
15---> UBI control device major/minor: 10:57
16---> Present UBI devices: ubi0
17mtdinfo
18---> Count of MTD devices: 2
19---> Present MTD devices: mtd0, mtd1
20---> Sysfs interface supported: yes
21mount -t ubifs ubi0_0 /mnt/ubifs
22cd /mnt/ubifs
23ls
24---> app bin build.prop etc fonts framework lib media usr xbin

Der nächste Schritt wird das Einpacken des Verzeichnisses in ein Image und das testen dieses auf dem Touchlet sein.

Dazu später mehr.

Gert

01.06.2012 09:08:54 via Website

Gert M.
Nachdem ich einige Zeit mit anderen Dingen beschäftigt war, hab ich mir ein, zwei Stunden Zeit genommen und mich noch einmal
mit dem UBIFS des TouchletX2 beschäftigt.

Inzwischen arbeite ich mit Ubuntu 12.04LTS. Damit ist es mir nun gelungen die system_ubi.img zu mounten.
Bisher ist dias an der fehlenden Unterstützung des Flashspeichers durch "nandsim" gescheitert.

Hier der Weg das Image zu mounten:

(...)

Der nächste Schritt wird das Einpacken des Verzeichnisses in ein Image und das testen dieses auf dem Touchlet sein.

Dazu später mehr.

Gert


Sehe erst jetzt, daß du hier gepostet hast, bin auf weitere Ergebnisse sehr gespannt.

MfG

X2 | LN 85750 | X2G-10.0-A | root & Standby-Fix | Launcher: Zeam | 1. Hilfe bei Problemen mit dem X2(G) von Pearl

01.06.2012 19:11:57 via Website

Ich bin ein Stück weiter.

Wenn man mit adb shelll arbeitet und

# cat /dev/mtd/mtd3 > /sdcard/mtd3.img

eine Sicherung macht, kann man diese Sicherung mit meiner geschilderten Methode unter Ubuntu mounten.

Ich hab auch ein Image eingepackt, traue mich aber noch nicht das selber gepackte Image zurück zu flashen.

Gert

01.06.2012 20:17:08 via Website

Gert M.
Ich hab auch ein Image eingepackt, traue mich aber noch nicht das selber gepackte Image zurück zu flashen.

Woraus ("Quelle") ist das gepackte Image denn erzeugt worden, und wie hast Du es verpackt ("Ziel") ? Meinen Fragen zielen darauf ab, ob es nicht möglich ist, "Quelle" und "Ziel" auf Identität zu vergleichen (um zu schauen, ob der Verpackungsvorgang auch keine Artefakte produziert oder etwas - z.B. eine mögliche Signierung o.ä. - "vergessen" resp. ausgelassen hat). Oder ist das zu einfach gedacht?

— geändert am 01.06.2012 20:17:43

X2 | LN 85750 | X2G-10.0-A | root & Standby-Fix | Launcher: Zeam | 1. Hilfe bei Problemen mit dem X2(G) von Pearl

02.06.2012 12:34:16 via Website

Mann braucht zum einpacken ein Config-File, dass sieht so aus:

1[ubifs]
2mode=ubi
3image=ubifs.img
4vol_id=0
5vol_size=256MiB
6vol_type=dynamic
7vol_name=rootfs
8vol_flags=autoresize

Leider habe ich ncht das originale File und damit wird das File nicht genau wie das Ausgangsfile.
Das dürfte aber nicht weiter schlimm sein. Ein Test, das eingepackte File auf dem gleichen Weg zu öffnen war erfolgreich.
Inzwischen hab ich auch mal zImage ausgepackt. Da steckt ja der Kernel und das initramfs drinn. Im initramfs befinden sich die ganzen config- files, also z.B. init.pxa168.rc.

Ich werde mal in der nächsten Woche einfach die mtd3 (system) löschen und dann wieder flashen. Geht das gut, mach ich dann mal einen Versuch mit einem selber gepackten Image.

Gert