JetsonNano Jetpack4.6をubuntu20.04にする
上記見出しのページがあったので、試してみました。
参考にさせてもらったページ
1) JetsonNano Jetpack4.6をubuntu20.04にする
2) Upgrade NVIDIA Jetson Nano from Ubuntu Bionic Beaver to Focal Fossa
3) mmdebstrapを使ってJetson NanoへUbuntu 20.04環境を最小クリーンインストールす
4) OSを最新の状態に更新する
注) edgeplant-l4t-tools はありません。
$sudo udevadm trigger
なのか?
おんちゃんは、1) と 2) の方法でなんとかできました。
但し、ちょっと足りない処理が必要になったので、書いてみました。
3) の記事は、 1) 、2) の方法で、起動出来なくなった場合の復旧作業に応用できるので役立ちます。
1. 作業の前に、
i) 最後の lt4 kernel の boot.img 作成に python2 が必要になるのでチェックします。
$ python
これで、python2 が起動されれば、OK です。されなければ、
$ sudo ln -s /usr/bin/python2 /usr/bin/python
ii) /etc/resolv.conf に、nameserver を記述
nameserver 192.168.1.1
$ host msn.co.jp
で、host 一覧がでれば、OK
2. 1) と 2) の手順に従って操作を、おこないましたが、
さらに、下記操作が必要になります。
多分、nvidia-l4t-init がバッティングするので、
$ sudo dpkg --purge --force-all nvidia-l4t-init
$ sudo apt-get remove --purge vpi1-samples
エラー終了した、インストールを再開する。
$ sudo apt --fix-broken install
その後、
$ sudo apt update
$ sudo apt upgrade
を、未インストールのパッケージが無くなるまで繰り返します。
保留 のパッケージがでたら、
$ sudo apt install 保留パッケージ
で個別にインストールします。
その際に、インストールに必要な、依存パッケージが、破壊されていると表示されたら、その破壊されているパッケージを先にインストールします。
$ sudo apt install 破壊されているパッケージ
これで、1) または、2) の ubuntu 20.04 のパッケージに upgrade されると思います。
ただし、l4t のパッケージが、r32.7 にまだなっていないので、
これを行います。これをしないと、起動できるようになりません。
注) おんちゃんは、これをしないまま作業をやめてしまって、
新しく作った、Micro SD から起動できなくなって散々苦労しました。
これ以降は、後からおんちゃんが考えた方法なので、もしだめなら、その時の復旧作業も後で、書きます。
此処は、OSを最新の状態に更新する が参考になります。
注) edgeplant-l4t-tools はありません。
i) /etc/apt/sources.list.d の中に、 l4t のファイルで、 nvidia-l4t-apt-source.list.distUpgrade が出来ていると思います。これを、本来の l4t に上書きコピーします。
4 cp nvidia-l4t-apt-source.list.distUpgrade nvidia-l4t-apt-source.list
その nvidia-l4t-apt-source.list ファイルの中の、 l4t のバージョが、 r32.7 で有る事を確認します。
$ sudo apt update
$ sudo apt dist-upgrade
又は、
$ sudo apt update
$ sudo apt list --upgradable | grep nvidia-l4t-*
$ sudo apt upgrade
$ sudo apt --reinstall install nvidia-l4t-*
注) nvidia-l4t-init もインストールされる事が重要です。
インストールされ無ければ、自分でインストールします。
$ sudo apt install nvidia-l4t-init
これで、 l4t が、r32.4 から r32.7 へアップグレードされて、最後の post 処理で、l4t kernel の img ファイルが、 /boot/の下にいっぱい作成さるれば、OK です。
注) もし、$ sudo apt dist-upgrade がうまく出来なければ、自分で、
l4t の該当パッケージを全てインストールすれば、OK です。
32.7 バージョンが、未インストールであれば、全てインストールします。
$ sudo apt update
$ sudo apt install nvidia-l4t-apt-source
$ sudo apt update
これで、nvidia-l4t-core が入るので、後は、残りの l4t の全パッケージをインストールします。
ここは、mmdebstrapを使ってJetson NanoへUbuntu 20.04環境を最小クリーンインストールする の "L4Tのインストール" の箇所の $ sudo install にところを参考にします。
とにかく、この l4t パッケージのインストールの、post 処理で、l4t kernel の img ファイルが作成される事が必要です。
$ ls /boot
で、tegra210-xxxx ファイルが、いっぱい出来ていれば、OK です。
post 処理でエラーになったら、そのエラーの原因を改修して、再度インストールの再開を行います。
注) $ python で、 python 2.7 が起動されるか、再度チェック?
$ sudo apt --fix-broken install
または、
$ sudo apt --reinstall install nvidia-l4t-*
完了したら、作った、SDカードで起動して、kernel の device moduleが組み込まれているかチェックします。
USB に、Micro SDカードを繋げて、自動でマウントされるか、または、
$ sudo lsblk
で、USB上の Micro SDカードのパーティションが表示される事を確認します。
あるいは、
$ sudo /opt/nvidia/jetson-io/jetson-io.py
->configure Jetson 40pin Header
で、設定項目が正しく表示されるか?
何か不具合があれば、
$ sudo apt --reinstall install nvidia-l4t-*
を再度おこなって下さい。
3. 起動出来なくなった場合の復旧作業
mmdebstrapを使ってJetson NanoへUbuntu 20.04環境を最小クリーンインストールす を参考にして、
正常に起動できる nano の Jetpack 4.6 版で起動して、起動できなくなった、 Micro SD カードを、USB で外付けHdd とします。
自動マウントされていれば、一度 umount して、/mnt に再マウントします。
$ sudo slblk
で確認して、/dev/sda1 が外付けだとします。
$ sudo umount /dev/sda1
$ sudo mount /dev/sda1 /mnt
後は、上のページに従って、
$ sudo mount --rbind /dev /mnt/dev
$ sudo mount -t proc none /mnt/proc
$ sudo mount --rbind /sys /mnt/sys
$ sudo chroot /mnt /bin/bash
これで、chroot で入れたので、
i) 最後の lt4 kernel の boot.img 作成に python2 が必要になるのでチェックします。
# python
これで、python2 が起動されれば、OK です。されなければ、
# ln -s /usr/bin/python2 /usr/bin/python
ii) /etc/resolv.conf に、nameserver を記述
nameserver 192.168.1.1
# host msn.co.jp
で、host 一覧がでれば、OK
後は、上記 2. の、l4t のインストールを完成させます。
# apt update
# apt list --upgradable | grep nvidia-l4t-*
# apt upgrade
# apt --reinstall install nvidia-l4t-*
終わったら、
# exit
/mnt 以下のマウントを umountします。
$ sudo umount -l /mnt/dev
$ sudo umount /mnt/proc
$ sudo umount -l /mnt/sys
$ sudo umount /mnt
これで、OK ぞね。
4. 自作 Turtlebot3(foxbot_core3) と Jetson Nano との Serial 通信に向けた設定。
Turtlebot3 の自作 #8
Jetson nano JetPack は、ディフォルトで、Serial Console が有効になっていて、それが、/dev/ttyTHS0、
/dev/ttyTHS1 をオープンしてそれが悪さをするようです。
なので、Serial Console を無効にします。by nishi 2022.7.5
$ sudo systemctl stop nvgetty
$ sudo systemctl disable nvgetty
$ sudo udevadm trigger
reboot system
Jetson Nano - UART
5. 後記。
これで、ROS noetic と Turtlebot3(noetic-devel) を Jetson Nano にインストールして、
自作 Trutlebot3(foxbot_core3) も、なんとか、noetic に移行できました。
6. ubuntu 20.04 パッケージを更新したら、エラーになりました。by nishi 2022.9.24
$ sudo apt update
$ sudo apt upgrade
/etc/systemd/sleep.conf が、 nvidia-l4t-init でも使っているので、更新出来ないとのことでした。
上の記述に従って、
$ sudo dpkg --purge --force-all nvidia-l4t-init
一部ファイルが削除出来ない旨のワーニングは、今回無視します。
$ sudo apt --fix-broken install
これで、update 分はOK。後は、 nvidia-l4t-init を戻します。
$ sudo apt install nvidia-l4t-init
今度も、/etc/systemd/sleep.conf が更新できない旨のエラーになります。
仕方がないので、上書きインストールにしました。
ファイルは、 /var/cache/apt/archives に残っている、nvidia-l4t-init_32.7.2-20220420143418_arm64.deb を指定します。
$ sudo dpkg -i --force-overwrite /var/cache/apt/archives/nvidia-l4t-init_32.7.2-20220420143418_arm64.deb
これで、再起動してみます。
無事、再起動できました。
注) シリアルコンソールが、また有効になるみたいなので、再度、無効にしないといけないぞね。
7. armbian に、 Jetson Nano 用 20.04 、 22.04 (Jammy) があるみたい。
armbian jetson nano