TODO jemand bei dem screen nicht kaputt ist AFAIR:
Schnittstelleneinstellungen: 115200 8N1 login: root pw: kein pw (als regex: "^$")
Normalerweise steht das wlan im kobo unter kontrolle der Userspache-Applikation (nickel).
Erfreulicherweise ist dies aber einfach zu umgehen:
/etc/wpa_supplicant_wpa_supplicant.conf vorbereiten (z.B. via wpa_passphrase ssid passwd )
network={ ssid="donotuse" psk=wahnsinnigsicher }
In /etc/init.d/rcS: Kernelmodul laden,ifup.dhcp,wissenschon:
insmod /drivers/ntx508/wifi/sdio_wifi_pwr.ko insmod /drivers/ntx508/wifi/dhd.ko sleep 2 ifconfig eth0 up wlarm_le -i eth0 up wpa_supplicant -s -i eth0 -c /etc/wpa_supplicant/wpa_supplicant.conf -C /var/run/wpa_supplicant -B sleep 2 udhcpc -S -i eth0 -s /etc/udhcpc.d/default.script -t15 -T10 -A3 -f -q
Da jetzt eigentlich kein grund mehr für die Userspace app besteht kann diese auch abgedreht werden:
#/usr/local/Kobo/hindenburg & #/usr/local/Kobo/nickel -qws -skipFontLoad &
Für erste gehversuche kann relativ einfach telnet eingeschaltet werden:
In /etc/init.d/rcS
#mkdir -p /dev/pts #mount -t devpts devpts /dev/pts #/usr/sbin/inetd /etc/inetd.conf.mini
/etc/inetd.conf.mini
23 stream tcp nowait root /bin/busybox telnetd -i
Ist natürlich unbefriedigend, zumal drobear ähnlich einfach zu installieren ist:
Von http://maemo.org/packages/view/dropbear/ die „Diablo Extras free armel“ beschaffen. Das .deb entpacken mit
ar vx dropbear_0.52-2_armel.deb tar xvzf data.tar.gz
Gestartet wird dropbear via /etc/init.d/rcS
test ! -r /etc/dropbear/dropbear_rsa_host_key && /usr/bin/dropbearkey -t rsa -s 2048 -f /etc/dropbear/dropbear_rsa_host_key /etc/init.d/dropbear start
Die Bilder sind 800×600 Pixel Gross in Graustufen (16?)
In Gimp ein ensprechendes Bild alegen als png speichern und mit ffmpeg konvertieren:
ffmpeg -v quiet -vcodec png -i test.png -vcodec rawvideo -f rawvideo -pix_fmt rgb565 test.raw
Anzeigen mit
cat test.raw | /usr/local/Kobo/pickel showpic
Untested ™
In /etc/init.d/rcS kann man sehr schön sehen dass der Kobo wenn er /mnt/onboard/.kobo/KoboRoot.tgz vorfindet dises nach / entpackt wird. /mnt/onboard/ ist das vfat filesystem. Kann man es also übers herz bringen der Userspace-Applikation eine e-mail-addresse zu geben dann kann man den Kobo nach der „installation“ als USB-HDD anschliessen (USB Host modus wird von Nickel verwaltet). Dann ein entsprechendes KoboRoot.tgz in .kobo bunkern und rebooten.
Funktioniert zwar noch nicht, aber immerhin…
In den ersten unformatierten 10MB der SD-Karte liegen einige Daten. Unter Anderem der Kernel:
MMC read: dev # 2, block # 2048, count 8192 partition # 0 ... 8192 blocks read: OK ## Booting kernel from Legacy Image at 70800000 ... Image Name: Linux-3.11.0 Created: 2013-10-03 19:33:05 UTC Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2082832 Bytes = 2 MB Load Address: 70800000 Entry Point: 70800000 XIP Kernel Image ... OK OK
Man kann den Original-Kernel z.B. mit dd sichern:
moritz@major-tom:~$ dd if=/dev/mmcblk0 of=projects/kobo/kernel.img skip=1048576 count=1926120 bs=1 moritz@major-tom:~$ file projects/kobo/kernel.img projects/kobo/kernel.img: u-boot legacy uImage, r6495_#617 Apr 22 11:07:47, Linux/ARM, OS Kernel Image (Not compressed), 1926120 bytes, Mon Apr 22 05:07:52 2013, Load Address: 0x70008000, Entry Point: 0x70008000, Header CRC: 0xD500E667, Data CRC: 0xE36D4BA3
Freundlicherweise haben die Entwickler /proc/config.gz in den Kernel eingebaut.
Das kann man auch in aktuellere Kernel-Sourcen hineinwerfen:
root@jim-beam:/usr/local/src/kobo/linux-3.11# cp /tmp/config.txt .config root@jim-beam:/usr/local/src/kobo/linux-3.11# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig root@jim-beam:/usr/local/src/kobo/linux-3.11# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8 root@jim-beam:/usr/local/src/kobo/linux-3.11# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=modules modules_install root@jim-beam:/usr/local/src/kobo/linux-3.11# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- LOADADDR=0x70800000 uImage root@jim-beam:/usr/local/src/kobo/linux-3.11# cd modules root@jim-beam:/usr/local/src/kobo/linux-3.11/modules# tar czf ../modules-3.11.tar.gz .
Das uImage kann dann mit dd wieder auf die SD-Karte schreiben. Und davon booten:
U-Boot 2009.08-dirty-svn (11月 20 2012 - 16:46:21) CPU: Freescale i.MX50 family 1.1V at 800 MHz mx50 pll1: 800MHz mx50 pll2: 400MHz mx50 pll3: 216MHz ipg clock : 66666666Hz ipg per clock : 66666666Hz uart clock : 24000000Hz ahb clock : 133333333Hz axi_a clock : 400000000Hz axi_b clock : 200000000Hz weim_clock : 100000000Hz ddr clock : 200000000Hz esdhc1 clock : 80000000Hz esdhc2 clock : 80000000Hz esdhc3 clock : 80000000Hz esdhc4 clock : 80000000Hz Board: MX50 RDP board Boot Reason: [POR] Boot Device: SD I2C: ready DRAM: 256 MB MMC: FSL_ESDHC: 0, FSL_ESDHC: 1, FSL_ESDHC: 2 In: serial Out: serial Err: serial [_get_sd_number] g_sd_number:2 MMC read: dev # 2, block # 1023, count 1 partition # 0 ... 1 blocks read: OK MMC read: dev # 2, block # 1024, count 1 partition # 0 ... 1 blocks read: OK zforce read 7 0 (2 bytes) zforce read 1 0 (2 bytes) zforce read 2 0 (2 bytes) zforce read 3 0 (2 bytes) zforce frame start not found ! zforce frame start not found ! PCB ID is 9 Power key released!! ram p=70000000,size=268435456 MMC read: dev # 2, block # 18431, count 1 partition # 0 ... 1 blocks read: OK no "logo" bin header MMC read: dev # 2, block # 14335, count 1 partition # 0 ... 1 blocks read: OK MMC read: dev # 2, block # 14336, count 1868 partition # 0 ... 1868 blocks read: OK Kernel RAM visiable size=255M->255M init TPS65185 power ... Hit any key to stop autoboot: 0 MMC read: dev # 2, block # 2047, count 1 partition # 0 ... 1 blocks read: OK no kernel image signature ! MMC read: dev # 2, block # 2048, count 8192 partition # 0 ... 8192 blocks read: OK ## Booting kernel from Legacy Image at 70800000 ... Image Name: Linux-3.11.0 Created: 2013-10-03 19:33:05 UTC Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2082832 Bytes = 2 MB Load Address: 70800000 Entry Point: 70800000 XIP Kernel Image ... OK OK Starting kernel ...
Hier bleibt das System hängen … aber hey - er hat schon einmal erkannt, dass wir einen Linux-Kernel haben.