Debian armhf installation HOWTO This describes the steps required to install Debian armhf (arm hard float) on SD card. I believe that similar steps would be sufficient to install armel, but I didn’t try.
an SD card (2 Gb or larger) a USB type A to USB mini type B cable root access to i386 or amd64 PC running Debian a cardreader for the PC (internal or external) — the PC should be able to read/write the SD card Internet access on the PC Having a WiFi network with Internet access will help you during last steps of installation.
Toshiba AC100 boot process When you press Power the bootloader from the Tegra ROM starts. If this bootloader detects that Ctrl-ESC is pressed, the device is put into recovery mode (black screen, but you can manipulate the data from your PC with nvflash utility). . the bootloader reads fuse bits, reads and starts next bootloader from eMMC, . At least we are at the point where some bootloader has read the partition table. LNX (number 6) partition is read. It should contain an Android-style boot image that consists of a kernel and initramfs along with boot parameters (kernel load addresses and kernel boot parameters). The kernel is started. Kernel starts initramfs scripts that find and mount root file system. The most important (for us) part of boot process is the boot image.
nvflash nvflash is a proprietary, closed-source tool that allows you to read and write to the internal eMMC flash on the AC100 in recovery mode. You can download the nvflash tool along with other tools from nVidia here: http://developer.nvidia.com/content/linux-tegra-release-12-alpha-1-released
Make a backup Before proceeding with the Debian installation, it is wise to make a back up of the current OS. See http://gitorious.org/ac100/pages/Installation
SOSBOOT Sosboot http://gitorious.org/ac100/sosboot is a boot image (goes to the LNX partition) with a minimalistic kernel and initramfs that includes an interactive shell. Download prebuilt image from: http://share.grandou.net/ac100/sosboot/ It can be used to mount your SD card and chroot into its file system to fix anything.
To write SOSBOOT to LNX partition boot AC100 in recovery mode and run on your PC:
root@pc# LD_LIBRARY_PATH=. ./nvflash --bl fastboot.stock.bin --download 6 sosboot-r3.img --go After that hold Power until AC100 shuts down. Boot and verify that SOSBOOT works.
Bootstrap Debian armhf on PC The goal of this step is to create a directory on our local machine that will contain all files for the root directory of the AC100.
root@pc# apt-get install debootstrap qemu-user-static binfmt-support qemu root@pc# mkdir armhf_root root@pc# debootstrap --foreign --arch=armhf sid armhf_root $MIRROR Where $MIRROR is a debian-ports mirror, for example use main site ftp://ftp.debian.org/debian/ or select from http://www.debian.org/mirrors/list
Presumably the processor in your PC is an x86, this means it cannot run binaries that are compiled for another architecture, like ARM. The AC100 has an ARM chip so we’ll have to use the «foreign» mode with debootstrap. From the debootstrap man page; «foreign mode just does the initial unpack phase of bootstrapping only. A copy of debootstrap sufficient for completing the bootstrap process will be installed as /debootstrap/debootstrap in the target filesystem.» The second stage runs the configuration scripts:
root@pc# cp /usr/bin/qemu-arm-static armhf_root/usr/bin root@pc# chroot armhf_root /debootstrap/debootstrap --second-stage Now add /etc/apt/sources.list and install a kernel to the chroot:
root@pc# cat > armhf_root/etc/apt/sources.list deb http://ftp.debian.org/debian/ sid main non-free contrib deb http://people.debian.org/~jak/ac100/ unreleased main non-free #deb-src http://people.debian.org/~jak/ac100/ unreleased main non-free root@pc# chroot armhf_root apt-get update [. ] root@pc# chroot armhf_root apt-get install abootimg flash-kernel linux-image-ac100 [. ] Also install the driver and tools to make the network card work:
root@pc# chroot armhf_root apt-get install firmware-ralink wireless-tools wpasupplicant [. ] Add bootimg.cfg to create a proper boot image:
root@pc# cat > armhf_root/boot/bootimg.cfg bootsize = 0x800000 pagesize = 0x800 kerneladdr = 0x10008000 ramdiskaddr = 0x11000000 secondaddr = 0x10f00000 tagsaddr = 0x10000100 name = jak-ac100 cmdline = root=/dev/mmcblk1p1 mem=448M@0M nvmem=64M@448M vmalloc=320M video=tegrafb console=tty0 usbcore.old_scheme_first=1 tegraboot=sdmmc tegrapart=recovery:700:a00:800,boot:1100:1000:800,mbr:2100:200:800,system:2300:25800:800,cache:27b00:32000:800,misc:59b00:400:800,userdata:5a000:9a600:800 Kernel command line shown above works for my AC100-117 (8 Gb internal flash). It should work for other models apart from the tegrapart= option that specifies the partition table for internal flash. See http://gitorious.org/ac100/pages/CommandLine for command lines for other models.
Edit /etc/initramfs-tools/initramfs.conf to make initrd images smaller (to fit into LNX partition):
root@pc# vim armhf_root/etc/initramfs-tools/initramfs.conf . MODULES=dep . Populate /etc/fstab (change filesystem and mount options as appropriate):
root@pc# cat >> armhf_root/etc/fstab /dev/mmcblk1p1 / ext4 rw,noatime,commit=30,barrier=1,data=ordered 0 0 root@pc# cat >> armhf_root/etc/network/interfaces auto lo iface lo inet loopback Partition SD card Create a root partition and run mkfs (separate /boot is not needed). It is recommended to align the partition to SD card erase block. The simplest way to do this is to use GPT partition table (instead of MSDOS-style partition table) and let gdisk (GPT fdisk) do the alignment for you: gdisk creates partitions aligned to 1 Mb boundary by default. Detailed instructions are available here: https://wiki.archlinux.org/index.php/Solid_State_Drives#Using_GPT_-_RECOMMENDED_METHOD
Create ext4 filesystem with:
# mkfs -t ext4 -v -b 4096 -E stride=32,stripe-width=32,resize=32G /dev/sdX1 ext4 block size is set to 4K. 4K * 32 = 128K, which is a common SD erase block size.
Copy prepared files to root partition root@pc# cp -ax armhf_root/* /media/sdcard/ Write kernel to internal flash (LNX partition) Boot into SOSBOOT. (See also SOSBOOT section above.)
root@(none)# mount /dev/mmcblk1p1 /mnt root@(none)# mount --bind /dev /mnt/dev root@(none)# mount --bind /proc /mnt/proc root@(none)# mount --bind /sys /mnt/sys root@(none)# chroot /mnt /bin/bash Regenerate initramfs and verify that it is small (should be less than 2 Mb)
root@host# update-initramfs -u root@host# ls -lh /boot/initrd* -rw-r--r-- 1 root root 1.7M Aug 13 05:02 /boot/initrd.img-2.6.38-ac1-ac100 Write boot image to internal flash:
Exit chroot and umount fs:
root@host# exit root@(none)# umount /mnt/sys root@(none)# umount /mnt/proc root@(none)# umount /mnt/dev root@(none)# umount /mnt Reboot. Debian should boot.
Configuration Run dpkg-reconfigure locales to set locale, dpkg-reconfigure tzdata to choose timezone, dpkg-reconfigure console-setup to set console font.
If it didn’t work. If the kernel didn’t boot you can write SOSBOOT with nvflash again and examine SD card contents, read logs etc.
Источник