Un petit déterrage d'outretombe, car olschool m'a parlé de ce post hier.
voici ma pierre à l’édifice.
1) dans une vmware, installez un linux (pour moi debian) et l'utilitaire kpartx
2) copiez l'image dézippée dans la vm
3) puis voici la séquence :
fredo@dev:/~Desktop$ sudo kpartx -v -a carteSD.img
add map loop0p1 (254:0): 0 199465 linear /dev/loop0 35
add map loop0p2 (254:1): 0 588000 linear /dev/loop0 199500
add map loop0p3 (254:2): 0 686000 linear /dev/loop0 787500
fredo@dev:~/Desktop$ sudo mkdir /mnt/system1 /mnt/system2 /mnt/system3
fredo@dev:~/Desktop$ sudo mount /dev/mapper/loop0p1 /mnt/system1/
fredo@dev:~/Desktop$ sudo mount /dev/mapper/loop0p2 /mnt/system2/
fredo@dev:~/Desktop$ sudo mount /dev/mapper/loop0p3 /mnt/system3/
/mnt/system1 contient un répertoire boot qui a deux fichiers :
sn.bin (qui doit être le numéro de série
)
fredo@dev:/mnt/system1/boot$ hexdump sn.bin
0000000 6b78 d4b9 36c7 67f6 a61e 5944 6d05 8304
0000010 6fc5 9266 f93c 0b7b 090e 3669 08f0 225b
0000020 e7cd 9742 f18e 2b8f 6828 504f d063 b6e3
0000030 6414 8e2c 7e08 cb41 dee9 2ccb 0682 37cc
0000040
et x3rodl.bin qui est l'image du noyau :
fredo@dev:/mnt/system1/boot$ file x3rodl.bin
x3rodl.bin: Linux kernel ARM boot executable zImage (little-endian)
/mnt/system2 contient apparement la config (certaines rom on une config dans le rep cfg) et l'emulateur
fredo@dev:/mnt/system2$ ls -l
total 44403
drwx------ 2 root root 5120 Apr 23 2012 cfg
-rwxr-xr-x 1 root root 6425408 Jan 1 2002 clsemuh
-rwxr-xr-x 1 root root 6425408 Jan 1 2002 clsemuh.dip
-rw-r--r-- 1 root root 3 Nov 29 1999 config.bin
drwx------ 2 root root 12288 Jan 3 2002 lost+found
drwx------ 2 root root 9216 Apr 23 2012 nvram
lrwxrwxrwx 1 root root 9 Nov 29 1999 roms -> /usr/roms
-rw-r--r-- 1 root root 16 Nov 29 1999 runset.bin
-rwx------ 1 root root 20 Oct 8 2011 run.sh
lrwxrwxrwx 1 root root 12 Nov 29 1999 samples -> /usr/samples
-rwxr-xr-x 1 root root 1120 May 4 2012 showroms.lst
-rwxr-xr-x 1 root root 64 Jan 1 1980 sn.bin
lrwxrwxrwx 1 root root 8 Nov 29 1999 wav -> /usr/wav
-rwxr-xr-x 1 root root 32028975 Jan 1 2002 xemu
-rwxr-xr-x 1 root root 178978 Jan 26 2002 xhideh
lrwxrwxrwx 1 root root 9 Nov 29 1999 xrun -> /usr/xrun
-rwxr-xr-x 1 root root 193094 Jan 26 2002 xrunmh
fredo@dev:/mnt/system2$ file xemu xrunmh clsemuh xhideh
xemu: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.27, stripped
xrunmh: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.27, not stripped
clsemuh: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.27, stripped
xhideh: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.27, not stripped
fredo@dev:/mnt/system2$ hexdump config.bin
0000000 ffff 0000
0000003
fredo@dev:/mnt/system2$ hexdump sn.bin
0000000 6b78 d4b9 36c7 67f6 a61e 5944 6d05 8304
0000010 6fc5 9266 f93c 0b7b 090e 3669 08f0 225b
0000020 e7cd 9742 f18e 2b8f 6828 504f d063 b6e3
0000030 6414 8e2c 7e08 cb41 dee9 2ccb 0682 37cc
0000040
fredo@dev:/mnt/system2$ diff sn.bin ../system1/boot/sn.bin
les deux sn.bin sont identiques
le /mnt/system3 contient le filesystem linux et les roms (dans usr/roms)
fredo@dev:/mnt/system3$ ls -l
drwxr-xr-x 2 root root 3072 Jun 14 2012 bin
drwxr-xr-x 2 root root 1024 Nov 3 2011 boot
drwxr-xr-x 2 root root 1024 Nov 5 2010 dev
drwxr-xr-x 7 root root 1024 Jun 14 2012 etc
drwxr-xr-x 3 root root 1024 Nov 5 2010 home
drwxr-xr-x 4 root root 3072 Jun 14 2011 lib
lrwxrwxrwx 1 root root 11 Jan 3 2002 linuxrc -> bin/busybox
drwx------ 2 root root 12288 Jan 3 2002 lost+found
drwxr-xr-x 2 root root 1024 Nov 5 2010 mnt
drwxr-xr-x 2 root root 1024 Jun 14 2011 opt
drwxr-xr-x 2 root root 1024 Nov 5 2010 proc
drwxr-xr-x 5 root root 1024 Nov 4 2010 root
drwxr-xr-x 2 root root 1024 Nov 5 2010 sbin
drwxrwxrwx 2 root root 1024 Oct 25 2011 sdcard
drwxr-xr-x 2 root root 1024 Nov 5 2010 sys
drwxrwxrwt 2 root root 1024 Nov 5 2010 tmp
drwxr-xr-x 16 root root 1024 Sep 9 2012 usr
drwxr-xr-x 2 root root 1024 Nov 5 2010 var
on trouve dans le filesystem busybox, alsa, qt, lua...
En connectant un pc sur le port série de la carte (j'en ai pas), on a accès a un shell.
fredo@dev:/mnt/system3$ cat etc/inittab
console::sysinit:-/etc/init.d/rcS
ttyS0::respawn:-/bin/sh
::shutdown:/bin/umount -a -r
le script de démarrage :
fredo@dev:/mnt/system3/etc/init.d$ cat rcS
#! /bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
#
# Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
#
trap ":" INT QUIT TSTP
/bin/hostname FriendlyARM
[ -e /proc/1 ] || /bin/mount -n -t proc none /proc
[ -e /sys/class ] || /bin/mount -n -t sysfs none /sys
[ -e /dev/tty ] || /bin/mount -t ramfs none /dev
/bin/mount -n -t usbfs none /proc/bus/usb
echo /sbin/mdev > /proc/sys/kernel/hotplug
/sbin/mdev -s
/bin/hotplug
# mounting file system specified in /etc/fstab
mkdir -p /dev/pts
mkdir -p /dev/shm
/bin/mount -n -t devpts none /dev/pts -o mode=0622
/bin/mount -n -t tmpfs tmpfs /dev/shm
/bin/mount -n -t ramfs none /tmp
/bin/mount -n -t ramfs none /var
mkdir -p /var/empty
mkdir -p /var/log
mkdir -p /var/lock
mkdir -p /var/run
mkdir -p /var/tmp
/sbin/hwclock -s
#echo " " > /dev/tty1
#echo "System starting... " > /dev/tty1
syslogd
#/etc/rc.d/init.d/netd start
#echo " " > /dev/tty1
#echo "Starting networking..." > /dev/tty1
#sleep 1
#/etc/rc.d/init.d/httpd start
#echo " " > /dev/tty1
#echo "Starting web server..." > /dev/tty1
#sleep 1
#/etc/rc.d/init.d/leds start
#echo " " > /dev/tty1
#echo "Starting leds service..." > /dev/tty1
#echo " "
#sleep 1
/bin/dorb
/bin/xswinit
/etc/rc.d/init.d/mkjoy
#echo " " > /dev/tty1
#echo "System Starting... " > /dev/tty1
#echo " " > /dev/tty1
#echo " " > /dev/tty1
/etc/rc.d/init.d/alsaconf start
#echo "Loading sound card config..." > /dev/tty1
#echo " "
#/sbin/ifconfig lo 127.0.0.1
#/etc/init.d/ifconfig-eth0
#/bin/qtopia &
#echo " " > /dev/tty1
#echo "Starting Qtopia, please waiting..." > /dev/tty1
cd /sdcard
if [ -e ./xhidev ]; then
./xhidev
echo "Vertical version."
elif [ -e ./xhideh ]; then
./xhideh
echo "Horizontal version."
fi
su -l
cd /sdcard
./run.sh
reboot
La distrib linux est vraiment "vite fait, bien fait", elle doit être "unsecure" au possible
voila, vous pouvez vous amusez maintenant