From Fedora Project Wiki

Revision as of 15:02, 3 September 2011 by Hno (talk | contribs)

This page is a draft only
It is still under construction and content may change. Do not rely on the information on this page.

How to install Fedora on TrimSlice PRO

he TrimSlice PRO developer kid comes delivered with a 32GB SSD containing anoter Linux distribution, but can boot from pretty much any media (SD. USB, MicroSD, SSD) and you are free to experiment without voiding warranty.

U-Boot is factory preprogrammed in internal flash. There is no need to reflash U-Boot as the default U-Boot version is very open and friendly configured. But you may do so if you wish, following instructions from TrimSlice. One very nice thing is that the device allows easy recovery using the SD slot if the boot flash gets corrupted, eleminating the need for JTAG in such cases.

Kernel & Initrd

The kernel & initrd needs to be converted to U-Boot images. This is done by running

mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n 2.6.40.3-0.fc15.armv7hl -d ../boot/vmlinuz-2.6.40.3-0.fc15.armv7hl.tegra uImage

mkimage -A arm -O linux -T ramdisk -C none -n 2.6.40.3-0.fc15.armv7hl -d ../boot/initramfs-2.6.40.3-0.fc15.armv7hl.tegra.img uInitrd

U-Boot behavior

The TrimSlice U-Boot automatically tries to boot from the first partition of any of the above boot sources and expects a boot.scr u-boot script file in / or /boot on the boot device.

When starting boot.scr the following variables are set for convenience

 fs         filesystem type (ext2 or fat)
 interface  u-boot interface type (mmc or usb)
 bus        bus number of the interface
 prefix     boot prefix (/ or /boot)

enabling a generic boot.scr script to be used to boot from any of the possible boot devices. (see below)

Fedora boot script

Save this as boot.cmd in /boot and convert it to a uboot image by using

mkimage -A arm -O linux -T script -C none -d boot.cmd boot.scr

echo starting Fedora boot.scr

if test -z "${rootpart}" && test -z "${rootuuid}"; then
	rootpart=4
	#rootuuid=3e6be9de-8139-11d1-9106-a43f08d823a6
fi

#if test -z "${kernel}" && test -z "${kernelver}"; then
#	kernelver=2.6.40.3-0.fc15.armv7hl.tegra
#fi
if test -z "${kernel}"; then
	kernel=uImage
	initrd=uInitrd
	if test -n "${kernelver}"; then
		kernel=${kernel}-${kernelver}
		initrd=${kernel}-${kernelver}
	fi
fi

if test -z "${console}"; then
	console="console=ttyS0,115200n8"
fi

setenv initrdaddr 1600000

if test -n "${rootuuid}"; then
	echo booting with UUID selected root
	rootfs="ro root=UUID=${rootuuid}"
elif test "${interface}" = "mmc" && test "${bus}" = "1"; then
	echo booting from internal microSD
	echo booting from internal microSD
	rootfs="ro root=/dev/mmcblk0p${rootpart}"
elif test "${interface}" = "mmc" && test "${bus}" = "0"; then
	echo booting from external SD
	if mmc init 1; then
		rootfs="ro root=/dev/mmcblk1p${rootpart}"
	else		
		rootfs="ro root=/dev/mmcblk0p${rootpart}"
	fi
	mmc init 0

elif test "${interface}" = "usb" && test "${bus}" = "1"; then
	echo booting from internal SSD
	rootfs="ro root=/dev/sda${rootpart} nohdparm rootwait"
else
	echo booting from external USB
	rootfs="ro root=/dev/sdb${rootpart} rootwait"
fi

setenv bootargs ${console} ${rootfs}

echo bootargs ${bootargs}
echo kernel ${fs}load ${interface} ${device} ${loadaddr} ${prefix}uImage${kernelver}
echo initrd ${fs}load ${interface} ${device} ${loadaddr} ${prefix}uImage${kernelver}

${fs}load ${interface} ${device} ${loadaddr} ${prefix}uImage${kernelver}
${fs}load ${interface} ${device} ${initrdaddr} ${prefix}uInitrd${kernelver}

bootm ${loadaddr} ${initrdaddr}