Jetson TK1のシステムや作業領域としてSDカードを使用するように切り替えました。
容量の問題とか書き換え回数制限とか気にしてです。SDカードならシステム破壊するようなことをしても、交換可能ですし、バックアップもやりやすそうですし、メリットが多くあると思います。
準備
ここではVMware上の Ubuntu 14.04 で作業しました。
必要なファイル群をNVIDIAから入手します.
Tegra124_Linux_R19.3.0.armhf.tgz2
Tegra_Linux_Sample-Root-Filesystem_R19.3.0_armhf.tbz2
そしてこれを適当なところに展開して、コマンドを実行します。
これらの作業コマンドを以下に示しておきます。
$ wget https://developer.nvidia.com/sites/default/files/akamai/mobile/files/L4T/Tegra124_Linux_R19.3.0_armhf.tbz2 $ wget https://developer.nvidia.com/sites/default/files/akamai/mobile/files/L4T/Tegra_Linux_Sample-Root-Filesystem_R19.3.0_armhf.tbz2 $ tar xpf Tegra124_Linux_R19.3.0_armhf.tbz2 $ cd Linux_for_Tegra/rootfs $ sudo tar xpf ../../Tegra_Linux_Sample-Root-Filesystem_R19.3.0_armhf.tbz2 $ cd ../ $ sudo ./apply_binaries.sh
書き込み
ファイル群が準備できたので、これをSDカードに書き込みます。
手元のカードリーダーでSDカードを装着して確認したところ、/dev/sdb として認識しているようでした。各自の環境ではこのあたりが変わると思いますので、適宜読み替えて下さい。
$ sudo umount /dev/sdb1 $ sudo mkfs.ext4 /dev/sdb1
SDカードがフォーマットされたところで、データを書き込みます。
$ cd ~/Linux_for_Tegra/rootfs $ sudo mkdir -p /mnt/sdcard $ sudo mount /dev/sdb1 /mnt/sdcard $ sudo cp -a * /mnt/sdcard
Jetson TK1をUSB(microUSBのほう)でLinux環境と繋いでリカバリーモード起動させます。
リカバリーモードに入るには、Recoveryスイッチを押しながら、Resetスイッチを押します。
リカバリーモードに入った後で、Linux環境で以下のコマンドを実行します。
念のため、認識できているか lsusb で確認しています。
リカバリーモードに入っているときには、画面に何も出力されないので…。
$ cd ~/Linux_for_Tegra/ $ lsusb | grep -i NVIDIA Bus 001 Device 003: ID 0955:7140 NVidia Corp. $ sudo ./flash.sh jetson-tk1 mmcblk1p1 (省略) 2097152/2097152 bytes sent ppt.img sent successfully padded 4 bytes to bootloader sending file: fastboot.bin - 900496/900496 bytes sent fastboot.bin sent successfully sending file: boot.img \ 5912576/5912576 bytes sent boot.img sent successfully sending file: tegra124-pm375.dtb - 34678/34678 bytes sent tegra124-pm375.dtb sent successfully sending file: gpt.img \ 2097152/2097152 bytes sent gpt.img sent successfully Create, format and download took 22 Secs Time taken for flashing 24 Secs *** The target ardbeg has been flashed successfully. *** Make the target filesystem available to the device and reset the board to boot from external mmcblk1p1.
というように表示されて、正常に書き込まれるとJetson TK1が再起動されます。
fastboot.bin というバイナリが送られているようですし、方式としてはfastbootのほうでしょうか。
19.3バージョンからは、U-BOOTもサポートされたとありましたし、そのうち試してみたいところです。
再起動後、SDカードを挿さないままだと、起動が途中で止まるはずです。
止まったことを確認したら、SDカードを挿入してみます。
うまくいけば、ここから起動シーケンスが再開されていくと思います。
(画面が出ないようなら、リセットして試してみましょう)
初期設定など
Jetson TK1が無事にSDカードから起動できたら、初期設定をしておきます。
タイムゾーンは Asia/Tokyo を選択して時刻を合わせておきます
(実際にはRTCは、電源OFFでリセットされちゃうんですが・・・)
他にもリポジトリの設定とか。
$ sudo dpkg-reconfigure tzdata $ sudo date -s "2014/10/05 12:34:56 $ sudo apt-add-repository universe $ sudo apt-get update
コマンドが見つからなかった場合のヘルプ(どのパッケージに入ってるのか)を出すための設定.
sudo apt-get install bash-completion command-not-found
最後に使用量を確認しておきます。
SDカードが16GBの物を使っているのでこんな感じでした。
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 15G 2.2G 12G 17% / devtmpfs 850M 4.0K 850M 1% /dev ...
デフォルトの eMMCに入っている時には 8GBほどのパーティションだったと思います。
上記のように15Gが表示されていますし、無事にSDカードのシステムが使われているように思います。
感想とか
最後に感じたことを1つ。
安物SDカードだとか、クラスの低いものを使っていると、操作に引っかかりをよく感じます。
気になる人は、ちゃんとした高速なものを使用するようにしましょう。
最後に
元の起動に戻す方法は、リカバリーモードにして以下のコマンドを実行します。
sudo ./flash.sh jetson-tk1 mmcblk0p1
コメント
最近Jetson_TK1を触り始めたものです。
ここではSDカードについて説明しましたが、USB HDDの場合は同じでしょうか?
sudo ./flash.sh jetson-tk1 sda1
って感じで実行すればよさそうと思ったが、rootfsの中身もいじらないといけないような気もします。どうでしょうか...
USB経由でというのは試したことがなく、申し訳ありませんがわかりません。
試しにやってみようかとは思いますので、結果が出たらまたブログに書きたいと思います。
UBOOT で起動しているはずなので、UBOOT の起動パラメータをシリアル経由で設定できれば動くのかなとは思います。ただ RS232C のシリアルケーブルを所持していないためこのあたりも確認できずですが。
こちらの記事 で USB メモリからの起動にチャレンジしました。 USB-HDD でも同じように動作できるのではないかと思います。