JetsonNano Jetpack4.6をubuntu20.04にする

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

このブログ記事について

このページは、おんちゃんが2022年7月 2日 13:23に書いたブログ記事です。

ひとつ前のブログ記事は「自作 Turtlebot3 自律走行に向けたプログラム。#9」です。

次のブログ記事は「自作 Turtlebot3 自律走行に向けたプログラム。#10」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

カテゴリ

ウェブページ

サイトナビ