Skip to main content

Jak modyfikować gotowy obrazek jffs2

Zamieszczone w

Czasem przydałoby się zrobić kilka zmian, lub skopiować parę plików do naszego nowego rootfs w postaci pliku obrazka jffs2. Dlaczego? Kopiowanie plików na Neo przez USB potrafi być czasem bardzo wolne. Czemu więc nie dokonać modyfikacji na obrazku przed jego sfleszowaniem na telefon? Możemy to zrobić bez udziału telefonu na naszej stacji roboczej z zainstalowanym linuxem. We wpisie podaję kolejne kroki potrzebne do zamontowania takiego obrazka.

Całej operacji musimy dokonać za pomocą ramdisku, ponieważ sterownik obsługujący jffs2 nie wspiera loopback'a. Wpierw ładujemy niezbędne moduły:

[root: ~] # modprobe mtdcore
[root: ~] # modprobe jffs2
[root: ~] # modprobe mtdram total_size=59024
[root: ~] # modprobe mtdchar
[root: ~] # modprobe mtdblock

Sprawdzamy czy się coś pokazało:

[root: ~] # cat /proc/mtd
dev:    size   erasesize  name
mtd0: 039a4000 00020000 "mtdram test device"

Następnie kopiujemy zawartość obrazka do ramdiksu:

[root: ~] # dd if=openmoko-devel-rootfs.jffs2 of=/dev/mtd0

Teraz już możemy zamontować nasz ramdisk do jakiegoś katalogu:

[root: ~] # mount -t jffs2 /dev/mtdblock0 /mnt/tmp

Dokonujemy naszych zmian (w katalogu /mnt/tmp) i możemy zapisać obrazek z powrotem:

[root: ~] # umount /dev/mtdblock0
[root: ~] # dd if=/dev/mtdblock0 of=nowy_rootfs.jffs2

Już.
Pewnie dałoby się napisać skrypt, który zautomatyzowałby operacje, które i tak robimy po każdym flashu, np. wpisy do /etc/hosts, ustawienie ulubionych aliasów, kopiowanie własnych skryptów administracyjnych itp. itd.