Jetson TX1をUSB SSDから起動できるようにする

NVIDIAのJetson TX1には16GBのeMMCが内蔵され、ここに開発環境 (Ubuntu Linux)がインストールされます。デフォルト状態で大部分の領域が使われてしまっており、また、eMMCの寿命も気になる方も多いことと思います。そこで、外付けのUSB SSDに開発環境を移して、こちらから起動できるようにしてみたいと思います。

※正確には依然としてeMMCの/bootから起動していますが、rootfsをUSB SSDに移動していますので便宜上このようなタイトルにしています。

既に同様のことを考えて実行されている方が、ウェブ上に記事を公開して下さっていますので、参考にしましょう。Jetson TX1上に最新のJetPackは導入済みで、Jetson TX1上のUbuntu Linuxにログインできているものとします。

  1. 最初にUSB SSDを入手します。私はケースを新たに購入して、空いていたSSDを再利用しました。
  2. Jetson TX1に接続し、gpartedでパーティションを切ってフォーマットします。私は面倒臭かったので、全領域をext4でフォーマットしました。
  3. USB SSDをマウントします。通常は/dev/sda1として見えているはずです。
    $ sudo mount -t ext4 /dev/sda1 /mnt
  4. ディレクトリをコピーしていきます。行頭の > はプロンプトなので入力する必要はありません。
    $ for dir in bin boot etc home lib media opt root sbin snap srv usr var; do
    > sudo cp -a /$dir /mnt
    > done
  5. いくつか空のディレクトリを作成します。tmpディレクトリのchmodを忘れずに。
    $ sudo mkdir /mnt/dev
    $ sudo mkdir /mnt/mnt
    $ sudo mkdir /mnt/proc
    $ sudo mkdir /mnt/run
    $ sudo mkdir /mnt/sys
    $ sudo mkdir /mnt/tmp
    $ sudo chmod 777 /mnt/tmp
  6. 記事を参考に、起動設定ファイルを編集します。基本的には既存のエントリをコピーして一部を変更すればOKです。
    $ sudo vi /boot/extlinux/extlinux.conf
    TIMEOUT 30
    DEFAULT usbssd
    
    MENU TITLE p2371-2180 eMMC boot options
    
    LABEL primary
          MENU LABEL primary kernel
          LINUX /boot/Image
          INITRD /boot/initrd
          FDT /boot/tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb
          APPEND fbcon=map:0 console=tty0 console=ttyS0,115200n8 androidboot.modem=none androidboot.serialno=P2180A00P00940c003fd androidboot.security=non-secure tegraid=21.1.2.0.0 ddr_die=2048M@2048M ddr_die=2048M@4096M section=256M memtype=0 usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 debug_uartport=lsport,0 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=${lp0_vec} nvdumper_reserved=${nvdumper_reserved} core_edp_mv=1125 core_edp_ma=4000 gpt android.kerneltype=normal androidboot.touch_vendor_id=0 androidboot.touch_panel_id=63 androidboot.touch_feature=0 androidboot.bootreason=pmc:software_reset,pmic:0x0 net.ifnames=0 root=/dev/mmcblk0p1 rw rootwait
    
    LABEL usbssd
          MENU LABEL usbssd kernel
          LINUX /boot/Image
          INITRD /boot/initrd
          FDT /boot/tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb
          APPEND fbcon=map:0 console=tty0 console=ttyS0,115200n8 androidboot.modem=none androidboot.serialno=P2180A00P00940c003fd androidboot.security=non-secure tegraid=21.1.2.0.0 ddr_die=2048M@2048M ddr_die=2048M@4096M section=256M memtype=0 usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 debug_uartport=lsport,0 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=${lp0_vec} nvdumper_reserved=${nvdumper_reserved} core_edp_mv=1125 core_edp_ma=4000 gpt android.kerneltype=normal androidboot.touch_vendor_id=0 androidboot.touch_panel_id=63 androidboot.touch_feature=0 androidboot.bootreason=pmc:software_reset,pmic:0x0 net.ifnames=0 root=/dev/sda1 rw rootwait
    
  7. 再起動します。
    $ sudo reboot

以上です。簡単ですね。これで安心してROS Kineticもインストールできます。なお、内蔵eMMCは/dev/mmcblk0p1として認識され、/media/ubuntuの下に自動マウントされるようです。

なお、この記事を参考にした結果発生した損害について責任は負いませんので、ご了承下さい。

“Jetson TX1をUSB SSDから起動できるようにする” への3件の返信

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です