- 1-2 hours of your life
- build envirment for the Kernel
- device with Ubuntu and nvflash
- AC100
- mini-usb cabel
- usb-stick >512MB
-
setup the build enviorment
-
create the work directory:
mkdir -p ~/ac100/output_files
-
-
get the kernel source
-
get the sources:
curl -LO https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.5.2.tar.xz
cd linux-4.5.2
-
-
build the kernel
-
genrate the config
make tegra_defconfig ARCH=arm
-
adjust the config for:
-
Kernel low-level debugging options
in Kernel hacking
to OFF
-
USB Video Class
in Device drivers --> Multimedia support --> Media USB Adapters
to MODULE
-
USB NETWORK Device [only if like to use anadapter] you will find the availbe Modules under
in Device drivers --> Network device support --> USB Network Adapters
to MODULE
make menuconfig ARCH=arm
-
-
build zIMAGE, modules, dtb
make zImage modules dtbs INSTALL_MOD_STRIP=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
-
build install-modules
make modules_install INSTALL_MOD_PATH=../output_files INSTALL_MOD_STRIP=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
-
copy dtb and zImage to the output_files directory
cp arch/arm/boot/dts/tegra20-paz00.dtb ../output_files
cp arch/arm/boot/zImage ../output_files
-
-
make output flashable
-
change into output_files directory
cd ../output_files
-
create needed folders
mkdir boot usr
-
move lib into usr [to avoid breaks of arch]
mv lib usr
-
move zImage and dtb into boot
mv zImage boot
mv tegra20-paz00.dtb boot
-
create boot.cmd
cat <<'EOF' > ~/ac100/output_files/boot/boot.cmd setenv bootargs 'root=/dev/mmcblk0p1 rootfstype=ext4 rootwait' ext2load mmc 0:1 0x1000000 /boot/zImage ext2load mmc 0:1 0x2000000 /boot/tegra20-paz00.dtb bootz 0x1000000 - 0x2000000 EOF
-
create directory etc
mkdir etc
-
add fstab
cat <<'EOF' > ~/ac100/output_files/etc/fstab /dev/mmcblk0p1 / ext4 rw,noatime,commit=30,barrier=1,data=ordered 0 0 EOF
-
pack the files
tar cf kernel.tar boot usr etc
-
-
prepare pen drive
-
copy kernel.tar to pen drive
cp ~/ac100/output_files/kernel.tar < mountpoint of the pen drive >
-
get Arch Linux filesystem for Tegra systems
curl -o < mountpoint of the pen drive > http://archlinuxarm.org/os/ArchLinuxARM-trimslice-latest.tar.gz
-
-
boot AC100 into recovery mode
- press ctrl + esc + Power
-
install on the flash host nvflash
curl -O /tmp https://phablet-paz00.googlecode.com/files/nvflash_20110628-2_all.deb ; sudo dpkg -i nvflash_20110628-2_all.deb
-
connect AC100 with your flash Host
-
get and boot a minimal SOSUBOOT
-
on the flash Host
curl -O /tmp https://dl.dropboxusercontent.com/u/40761340/Test/sos-uboot-r5-2013-11-10.bin nvflash --bl sos-uboot-r5-2013-11-10.bin --go
-
on the AC100
./switch-to-uboot
-
-
prepare the AC100
-
create one new partions [maybe u like to backup the old once]
parted /dev/mmcblk0 mklabel gpt parted /dev/mmcblk0 -s mkpart primary 7168s '100%' parted /dev/mmcblk0 -s name 1 UDB
-
create filesystem
mkfs.ext4 /dev/mmcblk0p1
-
-
Install Kernel and OS
-
create mount point
mkdir /target mkdir /source
-
mount the emmc
mount -t ext4 /dev/mmcblk0p1 /target
-
inserte the stick and mount it
mount -t vfat /dev/sda1 /source
-
change into directory /target
cd /target
-
extract the ARCH Linux filesystem
gzip -dc /source/ArchLinuxARM-trimslice-latest.tar.gz | tar xp
-
erase /boot to add new builded kernel for the AC100
rm -rf boot/*
-
unpack kernel.tar
tar xf /source/kern.tar
-
change into the /boot directory
cd /target/boot
-
make the kernel bootable
mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "ubootscript" -d boot.cmd boot.scr
-
sync for safety
sync
-
unmount the pen drive and the emmc
cd /; umount /target; umount /source
-
Source:
franzy3kk: Well done getting this running, though even Xfce is quite heavy for a 1Ghz machine with 512MB RAM, it doesn't leave much memory for applications. On a small screen like this the need for a 'windowing desktop environment' is not obvious. By the way, it's better to add a user (make them a member of 'wheel' group so they can install packages via sudo) instead of running Xorg as 'root'.
You are right to suspect video drivers, but the reason for Chromium/Firefox etc. crashes could also be that they are built expecting the Arm NEON instruction set extensions, which the Tegra250 Cortex-A9 CPU unfortunately does not support. They are also likely to take all the available memory.
There is an accelerated video driver ('grate-driver') under development for Tegra, but it is far from complete. Video playback information is here: https://github.com/grate-driver/libvdpau-tegra MPV is the recommended video playback application- it does work, but not all H.264 encodings are supported by the VDPAU driver yet.
Instructions for building and installing the driver stack are here: https://github.com/grate-driver/grate/wiki/Grate-driver It's not a beginner's process to install, and the end results are variable. My advice would be to stick with the standard modesetting driver.
In mind of all the above limitations I chose to make the Userland as lightweight as possible, with i3 as Window Manager. Disk space is precious too. I even dumped NetworkManager in favout of the 'netctl' tools available in Arch. This provides a fast graphical UI using only 60-70MB of RAM. I still haven't found a browser that works reliably on most sites, though for 'basic' pages Netsurf works fine for me.
Mail: Claws-mail works well
Documents: Libreoffice actually runs well, in not much more RAM than Abiword/Gnumeric, so I use LO.
Audio player: Deadbeef
Podcast downloader: gPodder
Internet radio/TV player: tuner-git (from AUR). This can play video (TV channels) as well as audio, using Gstreamer as backend.
When building AUR packages you will find that they are often 'not available for the armv7h architecture'. But you can add 'armv7h' to the PKGBUILD platforms list and they will compile fine in most cases, even if it takes a while.
If you are familiar with Arch Linux you will find that 90% of the Archwiki documentation on https://wiki.archlinux.org applies to ARM platforms too, and that should be your first reference point if you are stuck. But if you are new to the distribution, then you will find it a bit of a struggle at first. However, the end result is worth the effort.