#NB QNX4 cheating

Странное устройство попалось, нужно было “покопаться” малость. QNX 4.20, плотная “заточка” на PC-104, всё круто интегрировано и дико старо.

Для начала дампим образ и возвращаем флешку назад:

dd if=/dev/sdc of=/tmp/qnx_foss_full.img
sudo mkdir /mnt/a # дальше пригодится

Затем собираем модуль qnx4. Скачиваем ядро (предположительно, ветка 5.x, я работаю с LTS-веткой):

kv=$(uname -r)  ; aria2c https://cdn.kernel.org/pub/linux/kernel/v${kv%%.*}.x/linux-${kv%%-*}.tar.xz && tar xfJ linux-${kv%%-*}.tar.xz && cd linux-${kv%%-*}
kv=$(uname -r) ; kv_major="${kv%%-*}" ; kv_extra=${kv##$kv_major} ; sed -i "s/EXTRAVERSION =/EXTRAVERSION = $kv_extra/" Makefile
cp /usr/src/linux-lts/Module.symvers .
gunzip  -c /proc/config.gz > .config
sed -i 's/# CONFIG_QNX4FS_FS is not set/CONFIG_QNX4FS_FS=m/' .config
make scripts
make fs/qnx4/qnx4.ko
insmod fs/qnx4/qnx4.ko
dmesg | grep QNX4

По вкусу можно положить готовый модуль куда-нибудь в extramodules рядом с остальными модулями, но мне это не особо нужно.

Далее всё как обычно, монтируем наш образ либо вставляем флешку – как удобно – рассчитываем смещения с помощью sfdisk:

sfdisk -q -d /tmp/qnx_foss_full.img
label: dos
 label-id: 0x00000000
 device: /storarray/tmp/qnx_foss_full.img
 unit: sectors
 sector-size: 512
 /storarray/tmp/qnx_foss_full.img2 : start=       20480, size=      104960, type=4f
 /storarray/tmp/qnx_foss_full.img3 : start=       10240, size=       10240, type=4e
 /storarray/tmp/qnx_foss_full.img4 : start=          32, size=       10208, type=4d, bootable

Размер сектора 512 байт, берём нужный оффсет:

sudo mount -t qnx4 -o offset=$((10240*512)) /tmp/qnx_foss_full.img /mnt/a
LC_ALL=C ls -la /mnt/a/
 total 181
 drwxrwxr-x 9 root root   4096 May 18  2005 .
 drwxr-xr-x 4 root root   4096 Feb 27 13:18 ..
 -rw------- 1 root root      0 May 18  2005 .altboot
 -r--r--r-- 1 root root   1280 May 18  2005 .bitmap
 -rw------- 1 root root      0 May 18  2005 .boot
 -r--r--r-- 1 root root   8192 May 18  2005 .inodes
 drwxrwxrwx 2 root root   4096 May 18  2005 bin
 drwxrwxrwx 2 root root   4096 May 18  2005 bios
 -rw-rw-rw- 1 root root 138732 May 16  2005 dsp.dat
 drwxrwxrwx 2 root root   4096 May 18  2005 etc
 drwxrwxrwx 2 root root   8192 May 18  2005 image
 -rwxrwxrwx 1 root root    307 May 16  2005 net_init
 -rwxrwxrwx 1 root root    583 May 16  2005 ph_init
 drwxrwxrwx 3 root root   4096 May 18  2005 resource
 -rwxrwxrwx 1 root root    961 May 16  2005 start
 -rwxrwxrwx 1 root root    794 May 16  2005 start_net
 drwxrwxrwx 2 root root   4096 May 18  2005 system

Собственно, всё, “курочим” по своему усмотрению далее сами.

Leave a Reply

Your email address will not be published. Required fields are marked *