本サイトでは、アフィリエイト広告およびGoogleアドセンスを利用しています。

Jetson TK1をSDカード起動にする

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
linux
すらりんをフォローする
すらりん日記

コメント

  1. kingds より:

    最近Jetson_TK1を触り始めたものです。

    ここではSDカードについて説明しましたが、USB HDDの場合は同じでしょうか?

    sudo ./flash.sh jetson-tk1 sda1
    って感じで実行すればよさそうと思ったが、rootfsの中身もいじらないといけないような気もします。どうでしょうか...

  2. すらりん より:

    USB経由でというのは試したことがなく、申し訳ありませんがわかりません。
    試しにやってみようかとは思いますので、結果が出たらまたブログに書きたいと思います。

    UBOOT で起動しているはずなので、UBOOT の起動パラメータをシリアル経由で設定できれば動くのかなとは思います。ただ RS232C のシリアルケーブルを所持していないためこのあたりも確認できずですが。

  3. すらりん より:

    こちらの記事 で USB メモリからの起動にチャレンジしました。 USB-HDD でも同じように動作できるのではないかと思います。

タイトルとURLをコピーしました