打开主菜单

Wiki-Orange Pi β

更改

Orange Pi CM4

添加5,852字节, 2023年9月12日 (二) 16:07
使用dd命令烧录的方法
<li><p>请确保开发板已经贴了SPI Flash,SPI Flash在开发板上的位置如下图所示,开始烧录前无需其他设置</p>
<p>[[File:media/image75.png|274x205px]]</p></li>
<li><p>烧录Linux镜像到SPIFlash+NVMe SSD中需要借助TF卡来完成,所以首先需要将Linux镜像烧录到TF卡上,然后使用TF卡启动开发板进入Linux系统。烧录Linux镜像到TF卡的方法请见[[\lOrange Pi CM4#基于Windows PC将Linux镜像烧写到TF卡的方法|'''基于Windows PC将Linux镜像烧写到TF卡的方法''']]和[[\lOrange Pi CM4#基于Ubuntu PC将Linux镜像烧写到TF卡的方法|'''基于Ubuntu PC将Linux镜像烧写到TF卡的方法''']]两小节的说明。</p></li>
<li><p>使用TF卡启动Linux系统后,我们首先烧录u-boot镜像到SPI Flash中</p>
<ol style="list-style-type: lower-alpha;">
<li><p>先运行下'''nand-sata-install''','''<span style="color:#FF0000">普通用户记得加sudo权限</span>'''</p>{| class="wikitable" style="width:800px;" |-| <p>orangepi@orangepi:~$ '''sudo nand-sata-install'''</p>|}</li><li><p>然后选择'''7 Install/Update ther bootloader on SPI Flash'''</p></li></ol></li></ol>
<div class="figure">
[[File:media/image85.png|355x174px|IMG_256]]
</div></ol>
<ol start="3" style="list-style-type: lower-alpha;">
<li>然后选择'''&lt;Yes&gt;'''</li></ol>
<div class="figure">
[[File:media/image86.png|356x179px|IMG_256]]
</div></ol>
<ol start="4" style="list-style-type: lower-alpha;">
<li>然后请耐心等待烧录完成,烧录完成后显示如下所示(左下角会显示一个'''Done'''):</li></ol>
<div class="figure">
[[File:media/image87.png|358x161px|IMG_256]]
</div></ol></li></ol>
<ol start="6" style="list-style-type: decimal;">
<li><p>然后将Linux镜像文件(从官网下载的Debian或者Ubuntu镜像)上传到TF卡中。上传Linux镜像文件到开发板中的方法请参考[[\lOrange Pi CM4#上传文件到开发板Linux系统中的方法|'''上传文件到开发板Linux系统中的方法''']]小节的说明。</p></li>
<li><p>上传完镜像到开发板的Linux系统中后,我们再在开发板Linux系统的命令行中进入镜像文件的存放路径,比如,我将开发板的Linux镜像存放在'''/home/orangepi/Desktop'''目录下了,然后进入'''/home/orangepi/Desktop'''目录就能看到上传的镜像文件了。</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''cd /home/orangepi/Desktop'''</p>
<p>orangepi@orangepi:~/Desktop$ '''ls'''</p>
<p>Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_linux5.10.160.img</p>
|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''怎么进入开发板Linux系统的命令行?'''</p></li></ol> '''1. 使用串口登录终端的方法请参考[[Orange Pi CM4#调试串口的使用方法|调试串口的使用方法]]一小节的说明。'''
<!-- --># '''使用串口登录终端的方法请参考2. 使用ssh远程登录Linux系统请参考[[\l|调试串口的使用方法]]一小节的说明。'''Orange Pi CM4# '''使用ssh远程登录Linux系统请参考[[\lSSH远程登录开发板|SSH远程登录开发板]]一小节的说明。'''# '''如果接了HDMI、LCD等显示屏幕,可以在桌面中打开一个命令行终端。'''
'''3. 如果接了HDMI、LCD等显示屏幕,可以在桌面中打开一个命令行终端。'''<!-- --/big>|}</li></ol>
<ol start="8" style="list-style-type: decimal;">
<li><p>接下来,我们先确认下NVMe SSD已经被开发板的Linux正常识别了。如果NVMe SSD正常识别了的话,使用'''sudo fdisk -l'''命令就能看到'''nvme'''相关的信息</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~/Desktop$ '''sudo fdisk -l | grep &quot;nvme0n1&quot;'''</p>
<p>Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors</p>
|}
<p>使用'''lspci'''命令可以看到一个NVMe相关的PCI设备</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~/Desktop$ '''lspci'''</p>
<p>00:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 (rev 01)</p>
<p>01:00.0 Non-Volatile memory controller: Realtek Semiconductor Co., Ltd. Device 5765 (rev 01)</p>|}</li>
<li><p>然后我们可以使用dd命令清空下NVMe SSD(可选)</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi3b:~/Desktop$ '''sudo dd bs=1M if=/dev/zero of=/dev/nvme0n1 count=2000 status=progress'''</p>
<p>orangepi@orangepi3b:~/Desktop$ '''sudo sync'''</p>|}</li>
<li><p>然后就可以使用dd命令烧录开发板的Linux镜像到NVMe SSD中</p>
<ol style="list-style-type: lower-alpha;">
<li><p>下面的命令中 '''if=''' &gt; 参数后面是要填写Linux镜像存放的完整路径+Linux镜像的名字(比如'''/home/orangepi/Desktop/Linux镜像的名字''')。因为上面我们已经进入Linux镜像的路径下了,所以只需要填写Linux镜像的名字的即可。</p></li>
<li><p>下面命令中的Linux镜像名请不要照抄,要替换为实际的镜像名(因为镜像的版本号可能会更新)。</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>'''sudo dd bs=1M if=Orangepi3b_x.x.x_debian_bullseye_desktop_xfce_linux5.10.160.img of=/dev/nvme0n1 status=progress'''</p>
<p>'''sudo''' '''sync'''</p>
|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''<span style="color:#FF0000">注意,如果上传的是 .7z或者.xz 或者.gz结尾Linux镜像压缩文件,使用dd命令烧录前请记得先解压。</span>'''</p><p>'''dd命令的所有参数的详细说明和更多用法可以在Linux系统中执行man dd命令来查看。'''</p></big>|}</li></ol>
</li>
<li><p>当成功烧录开发板的Linux镜像到NVMe SSD后,此时就可以使用'''poweroff'''命令关机了。然后请拔出TF卡,再短按电源按键开机,此时就会启动SPIFlash+NVMe SSD中的Linux系统了。</p></li>
<ol style="list-style-type: lower-alpha;">
<li><p>128GB NVMe SSD</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''df -h'''</p>
<pspan style="margin-right: 80px;">Filesystem </span><span style="margin-right: 50px;">Size </span><span style="margin-right: 30px;">Used </span><span style="margin-right: 30px;">Avail </span><span style="margin-right: 50px;">Use% Mounted on</pspan><br><pspan style="margin-right: 110px;">udev </span><span style="margin-right: 60px;">3.8G </span><span style="margin-right: 50px;">8.0K </span><span style="margin-right: 70px;">3.8G </span><span style="margin-right: 90px;">1% /dev</pspan><br><pspan style="margin-right: 100px;">tmpfs </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 30px;">1.4M </span><span style="margin-right: 70px;">768M </span><span style="margin-right: 90px;">1% /run</pspan><br><pspan style="margin-right: 25px;color:#FF0000">'''/dev/nvme0n1p2 '''</span><span style="margin-right: 50px;color:#FF0000">'''118G '''</span><span style="margin-right: 35px;color:#FF0000">'''5.8G '''</span><span style="margin-right: 80px;color:#FF0000">'''111G '''</span><span style="margin-right: 90px;color:#FF0000">'''5% /'''</pspan><br><pspan style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">3.8G </span><span style="margin-right: 50px;">0 </span><span style="margin-right: 50px;">3.8G </span><span style="margin-right: 90px;">0% /dev/shm</pspan><br><pspan style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">5.0M </span><span style="margin-right: 50px;">4.0K </span><span style="margin-right: 50px;">5.0M </span><span style="margin-right: 90px;">1% /run/lock</pspan><br><pspan style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">3.8G </span><span style="margin-right: 50px;">16K </span><span style="margin-right: 50px;">3.8G </span><span style="margin-right: 90px;">1% /tmp</pspan><br><pspan style="margin-right: 25px;color:#FF0000">'''/dev/nvme0n1p1 '''</span><span style="margin-right: 50px;color:#FF0000">'''256M '''</span><span style="margin-right: 35px;color:#FF0000">'''90M '''</span><span style="margin-right: 80px;color:#FF0000">'''166M '''</span><span style="margin-right: 90px;color:#FF0000">'''36% /boot'''</pspan><br><pspan style="margin-right: 65px;">/dev/zram1 </span><span style="margin-right: 60px;">194M </span><span style="margin-right: 50px;">9.9M </span><span style="margin-right: 50px;">170M </span><span style="margin-right: 90px;">6% /var/log</pspan><br><pspan style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">769M </span><span style="margin-right: 50px;">60K </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 90px;">1% /run/user/1000</pspan><br><pspan style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">769M </span><span style="margin-right: 50px;">48K </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 90px;">1% /run/user/0</pspan><br>|}</li>
<li><p>2TB NVMe SSD</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''df -h'''</p>
<pspan style="margin-right: 80px;">Filesystem </span><span style="margin-right: 50px;">Size </span><span style="margin-right: 30px;">Used </span><span style="margin-right: 30px;">Avail </span><span style="margin-right: 50px;">Use% Mounted on</pspan><br><pspan style="margin-right: 110px;">udev </span><span style="margin-right: 60px;">3.8G </span><span style="margin-right: 50px;">8.0K </span><span style="margin-right: 70px;">3.8G </span><span style="margin-right: 90px;">1% /dev</pspan><br><pspan style="margin-right: 100px;">tmpfs </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 30px;">1.4M </span><span style="margin-right: 70px;">768M </span><span style="margin-right: 90px;">1% /run</pspan><br><pspan style="margin-right: 25px;color:#FF0000">'''/dev/nvme0n1p2 '''</span><span style="margin-right: 50px;color:#FF0000">'''1.9T '''</span><span style="margin-right: 35px;color:#FF0000">'''4.1G '''</span><span style="margin-right: 80px;color:#FF0000">'''1.8T '''</span><span style="margin-right: 90px;color:#FF0000">'''1% /'''</pspan><br><pspan style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">3.8G </span><span style="margin-right: 50px;">0 </span><span style="margin-right: 50px;">3.8G </span><span style="margin-right: 90px;">0% /dev/shm</pspan><br><pspan style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">5.0M </span><span style="margin-right: 50px;">4.0K </span><span style="margin-right: 50px;">5.0M </span><span style="margin-right: 90px;">1% /run/lock</pspan><br><pspan style="margin-right: 65px;">/dev/zram2 </span><span style="margin-right: 60px;">3.7G </span><span style="margin-right: 50px;">76K </span><span style="margin-right: 50px;">3.5G </span><span style="margin-right: 90px;">1% /tmp</pspan><br><pspan style="margin-right: 25px;color:#FF0000">'''/dev/nvme0n1p1 '''</span><span style="margin-right: 50px;color:#FF0000">'''256M '''</span><span style="margin-right: 35px;color:#FF0000">'''90M '''</span><span style="margin-right: 80px;color:#FF0000">'''166M '''</span><span style="margin-right: 90px;color:#FF0000">'''36% /boot'''</pspan><br><pspan style="margin-right: 65px;">/dev/zram1 </span><span style="margin-right: 60px;">194M 15M 165M </span><span style="margin-right: 50px;">9.9M </span><span style="margin-right: 50px;">170M </span><span style="margin-right: 90px;">6% /var/log</pspan><br><pspan style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">769M </span><span style="margin-right: 50px;">60K </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 90px;">1% /run/user/1000</pspan><br><pspan style="margin-right: 100px;">tmpfs </span><span style="margin-right: 60px;">769M </span><span style="margin-right: 50px;">48K </span><span style="margin-right: 50px;">769M </span><span style="margin-right: 90px;">1% /run/user/0</pspan><br>|}</li></ol>
</li>
<li><p>当TF卡和NVMe SSD中烧录了一模一样的系统,'''如果TF卡和NVMe SSD都插在了开发板中,此时上电启动开发板,u-boot会优先启动TF卡中的系统'''。但由于TF卡和NVMe SSD中的系统一模一样,所以两个存储设备中的/'''boot'''分区和'''rootfs'''分区的UUID也一样,这样会导致TF卡启动的时候有可能会加载了NVMe SSD中的分区。运行下面的脚本可以解决这个问题。</p>
{| class="wikitable" style="width:800px;"
|-
|
<p>orangepi@orangepi:~$ '''sudo fix_mmc_ssd.sh'''</p>
|}{| class="wikitable" style="background-color:#ffffdc;width:800px;" |-| <big><p>'''一模一样的系统是指镜像名一字不差的意思。就算都是Debian11系统,版本不同也是不同的。'''</p></big>|}</li></ol>
<span id="使用balenaetcher软件烧录的方法"></span>
 
=== 使用balenaEtcher软件烧录的方法 ===
8,460
个编辑