JetsonでTunnelSatsを使ってHybridモードにする方法
JetsonでTunnelSatsを使ってHybridモードにするにはいくつか設定が必要になります。今回の記事はそちらの備忘録になります。
まずはこちらの記事を参考に進めてください。
https://spotlight.soy/detail?article_id=i8rd6e0pk
sudo bash setupv2.sh
まで来たら新たにいくつか設定が必要になります。
なお時間が経つにつれて設定の仕方が変わると思うので、現時点で有効な設定方法になります。エラーや不明点があればTwitterなどで直接ご連絡ください。可能な限りお手伝いします。
まず今のsekaiの環境ですが、
Jetson Xavier NX Developer Kitを使っており、OSはUbuntu20.04になります。
KernelはLinux 5.10.104 aarch64になります。
cat /etc/os-release
NAME="Ubuntu" VERSION="20.04.4 LTS (Focal Fossa)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 20.04.4 LTS" VERSION_ID="20.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=focal UBUNTU_CODENAME=focal
uname -srm
5.10.104 aarch64
sekaiはLinuxの構築方法に詳しくないため抽象的な説明になります。
TunnelSatsを使うためにはnftablesとwireguardを使う必要があります。
これらはカーネルモジュールとして呼び出すことになりますが、初期の設定ではこれらのモジュールの呼び出しがOFFになっています。
そのため上記のカーネルモジュールの読み込みをONにするための設定を行う必要が出てきます。
作業を始める前に/proc/config.gzと/boot/Imageのバックアップを取得してください。/proc/config.gzには今のカーネルの設定情報が、/boot/Imageは今のカーネルが入っています。
下記に手順を書きますが、いくつか確認すべき箇所があるので最後まで読んでから実行してください。
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install libncurses5-dev
$ sudo apt-get install nftables
$ sudo apt-get install wireguard
$ cd && mkdir kernel && cd kernel
$ wget https://developer.nvidia.com/embedded/l4t/r35_release_v1.0/sources/public_sources.tbz2 -O public_sources.tar.gz
$ tar xvf public_sources.tar.gz
$ cd Linux_for_Tegra/source/public/
$ tar -xvjf kernel_src.tbz2
$ cd kernel/kernel-5.10
$ sudo zcat /proc/config.gz > .config
$ make ARCH=arm64 O=/home/:yourname/kernel/Linux_for_Tegra/source/public/kernel/kernel-5.10 menuconfig
$ make oldconfig
$ make prepare
$ make modules_prepare
$ make -j4 Image && make -j4 modules
$ sudo make modules_install
$ sudo cp arch/arm64/boot/Image /boot/Image
$ sudo reboot
まずwgetでファイルを取得する部分ですが、
$ wget https://developer.nvidia.com/embedded/l4t/r35_release_v1.0/sources/public_sources.tbz2 -O public_sources.tar.gz
https://developer.nvidia.com/embedded/jetson-linux-archive
を参考に自分に合ったものに変更する必要があります。
そして下記の画像の赤線部分のリンクをコピーしてください。
cd kernel/kernel-5.10
上記のkernelのバージョンは適宜変更してください。
次にmenuconfigでnftablesとwireguardの読み込みをONにします。
この作業はターミナル上のGUIで操作をすることになります。$ make ARCH=arm64 O=/home/:yourname/kernel/Linux_for_Tegra/source/public/kernel/kernel-5.10 menuconfig
設定項目は下記になります。
nftablesの設定はこちらの通りに
https://linoxide.com/configure-nftables-serve-internet/
wireguardの設定はこちらの通りにしてください。
https://wiki.gentoo.org/wiki/WireGuard#Kernel_5.6_and_higher
(wireguardに関してはkernelのバージョンによって作業が変わります。今回は5.6以上についてのセットアップ方法です。)
$ make -j4 Image && make -j4 modules
こちらのコマンドは数時間かかることがあるのでデスクトップのターミナルから実行するのが確実です。慣れている方はscreenなどを使ってセッションが切れても実行が継続されるようにしてください。
説明は以上になります。
あとは手順通りに実行していただければ必要なモジュールが使えるようになり、
sudo bash setupv2.sh
が成功します。