kmscubeが動いた (3)
kmscubeが動いた(2)の続きです。
kmscubeのビルド
ソースの取得
$ cd /path/to/l4t-root
$ pushd home/ubuntu/src
$ git clone git://gitorious.org/thierryreding/kmscube.git
$ popd
ビルド
$ sudo chroot .
chroot # su ubuntu
chroot $ cd ~/src/libdrm
chroot $ ./autogen.sh --prefix=/usr/local
chroot $ make
chroot $ sudo make install
Storage の準備
SDカードに boot.scr を、USB Flash に zImage, Device Tree, rootfs を置きます。
Kernelのバイナリをrootfsへコピー
$ cd /path/to/l4t-root
$ sudo cp -a $TEGRA_WORK/kernel/linux.tegra.thierry/arch/arm/boot/{zImage,dts/tegra124-jetson-tk1.dtb} boot
$ sudo cp -a $TEGRA_WORK/kernel/test-images/linux.tegra.thierry/lib/modules/3.15.0-rc8-next-20140603-ga7426b0 lib/modules
boot.scr を SD に置く
SD を挿入
$ sudo mount /dev/sdh1 ~/mnt
boot.txt を ~/mnt にコピーし、mkimage コマンドで boot.scr を作成
$ pushd ~/mnt
$ sudo mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Tegra Boot Script" -d boot.txt boot.scr
$ popd
$ sudo umount ~/mnt
boot.txt はこんな感じです。
usb start
load usb 0:1 ${kernel_addr_r} /boot/zImage
load usb 0:1 ${fdt_addr_r} /boot/tegra124-jetson-tk1.dtb
setenv bootargs console=ttyS0,115200n8 console=tty1 rw rootwait root=/dev/sda1
bootz ${kernel_addr_r} - ${fdt_addr_r}
USB Flash を 挿入し、rootfs をコピー
$ sudo mount /dev/sdh1 ~/mnt
$ sudo cp -a * ~/mnt
$ sudo umount ~/mnt
u-boot を起動
Jetson TK1 に先ほど作成した SD と USB Flash を挿入、 micro USB ケーブルで PC と接続し、電源を入れ、Force Recovery モードに入ります。 Force Recovery モードへの入り方は、Quick Start Guide(紙の方)に書かれています。
Force Recovery モードに入ったら、Linux PC 上で以下を実行すると、 u-boot が起動し、boot.scr が読み込まれカーネルが起動します。
$ cd $TEGRA_WORK/bootloader/tegra-uboot-flasher/scripts
$ sudo ./tegra-uboot-flasher exec jetson-tk1
exec の部分を flash に変更することで、bootloader を書き換えることが可能。 私のボードは、既にu-bootに変更済みです。
kmscube の実行
カーネルが起動したら、以下のコマンドで kmscube を実行
$ kmscube /dev/dri/card1 /dev/card/dri0
HDMI の画面上で立方体がくるくる回ります。
続きます。