1.使用NVIDIA SDK Manager刷入系统

这部分比较基础,需要良好的网络环境和基本的软件安装操作能力,主要分为以下步骤:

  1. 安装Ubuntu 20.04 x64虚拟机

  2. 在虚拟机中安装NVIDIA SDK Manager

  3. 使用micro-B数据线将板子连接到电脑,并且设置默认连接到虚拟机
    如果安装过系统,需要将Jetson Xavier NX的REC/GND引脚短接,开机强制进入恢复模式,才能连接电脑刷机

  4. 使用SDK Manager下载并给板子刷入系统,此过程需要具备良好的网络环境

  5. “Flash Jetson Linux“阶段完成后,会重新连接一次设备,但此时板子可能还没准备好,虽然能ping通但是ssh是无法连接的,SDK Manager会自动重新尝试,不用干预,等系统准备好会自动连接上ssh。
    此时需要注意及时将其连接到虚拟机并设为默认连接到虚拟机,建议直接更改VMWare设置:

  6. 漫长的等待……

  7. 安装完成

2.连接SSH

在你的电脑上安装一个XShell软件(传送门)或使用其他SSH客户端,在你还没有配置WiFi网络的时候,只能通过USB连接到开发板然后通过RNDIS网络连接SSH。

接下来,你就可以进行其他操作了,例如连接网络、安装远程桌面服务等。

3.连接网络

方法一:RJ45有线网络

直接插网线即可。

方法二:WiFi无线网络

使用以下命令:

sudo nmcli device wifi										# 搜索无线网络
sudo nmcli device wifi connect WIFI名称 password WIFI密码	# 连接无线网络,注意替换成自己的WIFI名称和密码
ifconfig													# 查看在网络中的IP地址

4.更换国内源

首先按照国际惯例创建一个备份,然后直接使用sed替换即可。

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i "s/ports.ubuntu.com/mirrors.ustc.edu.cn/g" /etc/apt/sources.list
# 更新软件包列表不是必需的,但建议执行一下
sudo apt update

5.配置远程桌面服务

远程开发当然比接显示器、键盘鼠标方便许多,不过在Linux上配置会比较麻烦,这里建议直接安装一个NoMachine软件。当然你也可以选择方法二或方法三自己配置一下。

方法一:使用NoMachine软件作为远程桌面服务

在Jetson Xavier NX上下载并安装NoMachine

下载链接可以在这里找到:https://downloads.nomachine.com/linux/?id=30&distro=Arm

也可以直接复制以下命令下载:

wget https://download.nomachine.com/download/8.11/Arm/nomachine_8.11.3_3_arm64.deb
sudo apt install nomachine*.deb

在你的电脑上安装NoMachine软件

直接打开https://www.nomachine.com/官网,点击大大的”Download Now”下载按钮,下载安装即可。

注意:安装过程中安全软件可能会拦截NoMachine创建用户账户的请求,如果你不需要远程控制你的电脑只需要作为客户端使用,可以忽略,但如果后续需要此功能,那么必须卸载重装NoMachine。

方法二:使用系统自带的vino作为VNC服务器

自带的性能比较差,实测通过USB网络连接的情况下,肉眼可见FPS只有5不到……

推荐跳过此步骤,按照后面的教程配置。

# 安装vino(默认自带)
sudo apt update
sudo apt install vino

# 每次登录自动启动VNC服务器
mkdir -p ~/.config/autostart
cp /usr/share/applications/vino-server.desktop ~/.config/autostart

# 更改VNC服务器设置和设置密码
gsettings set org.gnome.Vino prompt-enabled false
gsettings set org.gnome.Vino require-encryption false
gsettings set org.gnome.Vino authentication-methods "['vnc']"
gsettings set org.gnome.Vino vnc-password $(echo -n '这里替换成你的密码'|base64) # 别忘了把密码部分替换为你自己要设置的密码
sudo reboot # 重启以让设置生效

更改默认分辨率

根据官方文档README-vnc.txt,如果没有连接到显示器,则默认的分辨率设定为640x480,实在是有点小,除非你的板子始终有显示器连接,否则但凡有headless使用场景都建议更改一下默认分辨率。

这里更改的是X11默认的分辨率,无论你使用自带的vino还是后安装的vnc服务器,都是修改此配置文件。

# 系统默认不带nano编辑器,需要自行安装,这里直接使用自带的vim
sudo vim /etc/X11/xorg.conf

在文件末尾,添加以下内容:

Section "Screen"
   Identifier    "Default Screen"
   Monitor       "Configured Monitor"
   Device        "Tegra0"
   SubSection "Display"
       Depth    24
       Virtual 1920 1080 # 填写你需要的分辨率,这里以1920x1080为例
   EndSubSection
EndSection

输入完后,按ESC输入wq回车保存文件。

方法三:使用xfce4桌面+xrdp作为远程桌面服务器

如果你已经打开了系统默认的vino作为服务器,先关闭:

sudo rm -rf ~/.config/autostart/vino-server.desktop
sudo reboot # 重启生效

然后安装xrdpxfce4

sudo apt install xrdp -y
sudo apt install xfce4 -y

然后修改xrdp的配置文件startwm.sh

# 找到以下两行注释掉
# test -x /etc/X11/Xsession && exec /etc/X11/Xsession
# exec /bin/sh /etc/X11/Xsession

# 然后在文件末尾添加
startxfce4

重新启动xrdp服务:

sudo service xrdp restart

在Windows电脑上启动远程桌面(Win+R运行mstsc

实测使用自带的gnome是无法连接Xorg的,Xvnc则是从来没成功过,不过这样至少Xorg能稳定使用。

Xfce4没有Gnome那么花里胡哨,没什么过渡动画,但因此也更适合远程桌面环境。

优化Xrdp流畅度

尽管Xfce4没什么动画,但默认配置下Xrdp看起来还是不怎么流畅,需要调整Xrdp的配置。

编辑/etc/xrdp/xrdp.ini

6.安装jtop(jetson-stats)

安装pipjetson-stats

sudo apt install python3-pip
sudo -H pip3 install jetson-stats
sudo reboot 	# 需要重启以启动服务

重启后,使用jtop命令进入:

7.更改省电设置

8.禁止Ubuntu自动更新

之前的系统因为自动更新了内核,后来WiFi没法用重新刷了一次机……

后来,又是自动更新导致蓝牙没法用……

索性,既然JetPack5.1.3自带的内核没什么大问题,就直接禁止更新好了:

10.禁用或启用开机自启桌面(Headless Mode)

如果你在初次启动刚刷好的系统时,没有插入显示器(HDMI或DP),那么Jetson默认会被配置为Headless模式,也就是不启动系统桌面,即使后续插上显示器也只会进入终端,需要手动才可以启动桌面。但你也可以手动配置:

sudo systemctl set-default multi-user.target     # 禁用桌面开机自启
sudo systemctl set-default graphical.target      # 启用桌面开机自启

禁用开机桌面自启之后,启动就不会进入桌面了,而是终端。

如果你需要启动默认进入桌面(误配置为了HeadlessMode),执行上面第二行命令即可。

其他

后续等待更新……