[linux] Omninas om zeep? u-boot achtige prompt

Frans van Berckel fberckel op xs4all.nl
Vr Jul 13 11:24:01 CEST 2018


Hoi Hans,

On Fri, 2018-07-13 at 09:06 +0200, Paul Slootman wrote:
> On Thu 12 Jul 2018, paai wrote:
> > 
> > Wat ik niet snap is dat busybox dan ook uit de compressed image is
> > verdwenen... of heeft hij er nooit ingezeten?
> 
> Welke compressed image? Denk je dat er een initrd o.i.d is? Dat is
> volgens mij niet gebruikelijk op dit soort "embedded" devices.

Die is er wel, maar bij dit soort u-boot devices verstop achter een 64
byte uImage header. Let's check it out. Zoals Geert al gevonden had.

De kernel uImage: u-boot legacy uImage, Linux-2.6.31.14_7821,
Linux/ARM, OS Kernel Image (Not compressed), 3066344 bytes, Wed Jun 18
05:54:45 2014, Load Address: 0x60008000, Entry Point: 0x60008000,
Header CRC: 0xC29F0BC0, Data CRC: 0x14587198

En de rdimg.gz RAMDisk: u-boot legacy uImage, , Linux/ARM, RAMDisk
Image (gzip), 2287245 bytes, Wed Jun 18 07:51:04 2014, Load Address:
0x61000000, Entry Point: 0x61000000, Header CRC: 0x924D7088, Data CRC:
0xD2298BD5

Wat zit daar precies in?

# mkdir ramdisk
# cd ramdisk
# cp ../rdimg.gz uramdisk.img
# binwalk uramdisk.img 

DECIMAL       HEXADECIMAL     DESCRIPTION
---------------------------------------------------------------------
-----------
0 0x0 uImage header, header size: 64 bytes, header CRC: 0x924D7088,
created: 2014-06-18 05:51:04, image size: 2287245 bytes, Data Address:
0x61000000, Entry Point: 0x61000000, data CRC: 0xD2298BD5, OS: Linux,
CPU: ARM, image type: RAMDisk Image, compression type: gzip, image
name: ""
64 0x40 gzip compressed data, maximum compression, from Unix, NULL date
(1970-01-01 00:00:00)

Eerst die 64 byte uImage header maar eens verwijderen.

# dd bs=1 skip=64 if=uramdisk.img of=uramdisk-no-header.img

2287245+0 records in
2287245+0 records out
2287245 bytes (2,3 MB, 2,2 MiB) copied, 7,94472 s, 288 kB/s

Wat hebben we nu?

# file uramdisk-no-header.img

uramdisk-no-header.img: gzip compressed data, max compression, from
Unix

# zcat uramdisk-no-header.img > uramdisk-uncompressed.img
# file uramdisk-uncompressed.img

uramdisk-uncompressed.img: Linux rev 1.0 ext2 filesystem data,
UUID=bbf32bfc-e0bc-4624-959e-d0bb5c6243f5

Dat heeft wel iets van een ext2 disk image, met een uuid label?

# fdisk -l uramdisk-uncompressed.img

Disk uramdisk-uncompressed.img: 16 MiB, 16777216 bytes, 32768 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Die moet je volgens mij gewoon kunnen mounten?

# mount uramdisk-uncompressed.img /mnt
# cd /mnt
# ls -l

total 39
drwxr-xr-x  2 root root  1024 jun 18  2014 bin
drwxr-sr-x  3 root root  4096 jun 18  2014 dev
drwxrwxrwx 11 root root  2048 jun 18  2014 etc
drwxrwxrwx  2 root root  1024 jun 18  2014 home
drwxr-xr-x  2 root root  1024 jun 18  2014 initrd
drwxr-xr-x  4 root root  1024 jun 18  2014 lib
-rwxr--r--  1 root root 10080 jun 18  2014 linuxrc
drwx------  2 root root 12288 jun 18  2014 lost+found
drwxr-xr-x  2 root root  1024 jun 18  2014 mnt
drwxr-xr-x  2 root root  1024 jun 18  2014 proc
drwxrwxrwx  2 root root  1024 jun 18  2014 root
drwxr-xr-x  2 root root  1024 jun 18  2014 sbin
drwxrwxrwx  2 root root  1024 jun 18  2014 tmp
drwxr-xr-x  5 root root  1024 jun 18  2014 usr
drwxr-xr-x  7 root root  1024 jun 18  2014 var

Waar gaat het ons om?

# ls bin/busybox -l

-rwxr-xr-x 1 root root 457828 jun 18  2014 bin/busybox

En wat zit er in linuxrc, het init script voor de initrd?

# cp linuxrc linuxrc.txt ; chmod 444 linuxrc.txt. Attachment.

Ze werkt dat dus bij u-boot. Reverse engineering, love it.

Met vriendelijke groet,

-- 
Frans van Berckel
Media Engineer / Linux Master
LinkedIn: https://www.linkedin.com/in/fransvberckel/


Meer informatie over de Linux maillijst