ARMedslackThis is a featured page

You can have ARMedslack running on the AC100 but you haveto do a little work to boot it as the official slackware port for ARM has no specific kernel for the AC100.
Currently ARMedslack has a tegra kernel (3.4.2 at the time of writing) that is not yet ready for use on the AC100. Also ubuntu has a version 3 kernels for the AC100 that I've not yet tested (3.1.10 at the time of writing).

I worked around the problem by using ubuntu's 2.6.38 kernel for the AC100 and a custom initrd.
I've also found the sources used to build the ubuntu kernel here and if you like to go about it with the home-brew way the initrd really does not need much apart from busybox so the road ahead is not too steep.

What you'll need:
kernel 2.6.38 in zImage format for AC100 (from ubuntu natty for AC100)
initrd.img for 2.6.38 (you can use the initrd from natty for AC100 but you may run into problems is busybox is missing some applets I use in the init sript)
make_bootimg and unpack_bootimg utility (got the link to the sources from this wiki if I remember correctly)
tegra-linux utility for doing the nvflash stuff
ARMedslack miniroot tarball from here
A means of writing the the new initrd and the root fs image to the AC100 (This can be any one of: a working linux installation or initrd on the AC100, Toshiba tegra4linux nvflash util on a working linuc ordinary PC).
A copy of the content od /proc/cmdline bevore you change kernel

This is what my init script looks like in the initrd image (I used an initrd which had broken links so some commands hadto be called directly by the busybox binary):

#!/bin/sh
exec 3>&1
mount -t sysfs -o nodev,noexec,nosuid none /sys
mount -t proc -o nodev,noexec,nosuid none /proc
sysctl -w kernel.printk="4 4 1 7" >/dev/null 2>&1
mount -t tmpfs -o mode=0755 none /dev
mknod -m 0600 /dev/console c 5 1
mknod /dev/null c 1 3
mkdir /dev/pts
mount -t devpts -o noexec,nosuid,gid=5,mode=0620 none /dev/pts
busybox mdev -s
sleep 5
echo 0x0100 > /proc/sys/kernel/real-root-dev
mount -o ro /dev/mmcblk0p7 /root
if [ ! -r /root/sbin/init ]
then
/bin/sh
fi
umount /proc
umount /sys
umount /dev/pts
exec switch_root /root /sbin/init 3

Edit the above script to suit where you want to boot the miniroot from (in my case this is the internal EMMC drive biggest partition).
Make sure the minitoot fstab has the correct root device too.

My advice is that the first initscrip should drop you into a shell so that you can manually run the very few commands, this way you can test and debug problems very effectively.
Once you have booted into the ARMedslack miniroot succesfully you can then try do the same thing using the init script automatically.

Repackage a new image for partition 5 and flash it to the AC100 (after testing you may like to write it to partition 6 and boot without having to play with home button)
Boot while pressing HOME and then hit 1
You should get dropped into a shell as there is no init on the root yet.
Format your target root partition mount it and extract the tarball to it.
Reboot again with the HOME pressed and hit 1 again ... if all went well you should get a slackware prompt on the text console
If you get dropped into an inirtd shell don't worry ... it's some wierd timing issue that ofteh persists across reboots, it's better to work around the problem this way:
from the initrd shell type the following

busybox mdev -s
source /init

Once you have any sort of linux up and running on the AC100 (and the tegrapart commandline sent to kernel is correct for your hardware) you can manage your boot images directly from the AC100.

You can dump the raw images like this (this dumps the recovery partition boot image {partition 5 seen from nvflash} on my device)
dd if=/dev/mmcblk0p1 of=recovery.img

You can then extract kernel and initrd with the unpack_bootimage, modify things and repackage it with the make_bootimage. the bootimage utils are avalible in source and can be compiled on you AC100 linux distro.

Write back the image with dd again.
Once you're up the firs time you will need to complete the miniroot with all the other packages you need to make it into a desktop machine. The quickest way to do this is probabbly to install manually slackpkg and then use that to install the rest of the stuff.

Addobe Flash plugin: although you cannot download it from addobe aldroid has the blasted libflasplayer.so library but even if you hack it out of some apk you will run into trouble with incompatible libraries dew to the different instruction sets used in android and armedslack. In order to get some basit flash support in my armedslack AC100 I used swfdec: it will not play youtube videos as you get told that you need to update but it's better then nothing.

Mplayer from armedslack has unsuitable defaults for the AC100 so if you want video and audio playback go and edit /etc/mplayer/mplayer.conf and sete these two lines:
vo=x11
ao=alsa

pppd does not correctly setup /etc/resolve.conf ... I worked around this by writing very simple ip-up and ip-down to be put in /etc/ppp/

/etc/ppp/ip-up:
#!/bin/bash
if [ $USEPEERDNS -eq 1 ]
then
cp /etc/resolv.conf /etc/org_resolv.conf
> /etc/resolv.conf
[ "$DNS1" != "" ] && echo "nameserver $DNS1" >> /etc/resolv.conf
[ "$DNS2" != "" ] && echo "nameserver $DNS2" >> /etc/resolv.conf
[ -s /etc/resolv.conf ] && cat /etc/ppp/resolv.conf > /etc/resolv.conf
fi


/etc/ppp/ip-down:
#!/bin/bash
[ -s /etc/org_resolv.conf ] && cat /etc/org_resolv.conf > /etc/resolv.conf




No user avatar
louigi600
Latest page update: made by louigi600 , Jun 25 2012, 3:33 AM EDT (about this update About This Update louigi600 Edited by louigi600

9 words added
20 words deleted

view changes

- complete history)
More Info: links to this page
There are no threads for this page.  Be the first to start a new thread.