Browse Source

change fontset to windows

Signed-off-by: surenyi <surenyi82@163.com>
master
surenyi 7 months ago
parent
commit
81920120cc
  1. BIN
      pdf/rk3588_guide.pdf
  2. BIN
      rk3588_guide.pdf
  3. 3
      rk3588_guide.tex
  4. 21
      style/xecjk_preamble.tex
  5. 4
      tex/deploy.tex
  6. 93
      tex/intro.tex
  7. 13
      tex/issue.tex
  8. 19
      tex/resource.tex
  9. 70
      tex/ubuntu.tex
  10. 89
      tex/wsl2.tex

BIN
pdf/rk3588_guide.pdf

Binary file not shown.

BIN
rk3588_guide.pdf

Binary file not shown.

3
rk3588_guide.tex

@ -86,6 +86,9 @@
\renewcommand{\headrulewidth}{0.7pt}
\renewcommand{\footrulewidth}{0pt}
\setcounter{tocdepth}{4}
\setcounter{secnumdepth}{3}
\DeclareRobustCommand{\shellcmd}[2]{\\ \mintinline[bgcolor=lightgray!30,fontsize=\scriptsize]{#1}{#2} \\}
%\xeCJKsetup{CJKmath=true}
\hypersetup{colorlinks=true,linkcolor=blue!80, urlcolor=orange!80, %
pdfstartview=FitH,%

21
style/xecjk_preamble.tex

@ -31,7 +31,7 @@
% BoldFeatures={RawFeature={+axis={wght=700}}},
% BoldItalicFeatures={RawFeature={+axis={wght=1000}}}
%]{Source Han Sans TC VF}
\usepackage[fontset=puhui,punct=quanjiao]{ctex}
\usepackage[fontset=windows,punct=quanjiao]{ctex}
%\usepackage[fontset=windows,punct=quanjiao]{ctex}
%% 针对中文进行断行
%\XeTeXlinebreaklocale "zh"
@ -132,8 +132,8 @@
% BoldFont =helvetica-bold,
% BoldItalicFont =helvetica-boldoblique
%]{helvetica}
\setmainfont{Optima}
%\setmainfont{Optima}
\setmainfont{Times New Roman}
\setsansfont[
Extension =.ttf,
@ -161,14 +161,15 @@
% ItalicFont=SourceCodePro-RegularIt
%]{SourceCodePro-Regular}
\setmonofont[
Extension = .ttf,
Path = fonts/ubuntu/,
BoldFont = UbuntuMonoderivativePowerline,
ItalicFont = UbuntuMonoderivativePowerlineItalic,
BoldItalicFont = UbuntuMonoderivativePowerlineBoldItalic
]{UbuntuMonoderivativePowerline}
%\setmonofont[
% Extension = .ttf,
% Path = fonts/ubuntu/,
% BoldFont = UbuntuMonoderivativePowerline,
% ItalicFont = UbuntuMonoderivativePowerlineItalic,
% BoldItalicFont = UbuntuMonoderivativePowerlineBoldItalic
%]{UbuntuMonoderivativePowerline}
\setmonofont{Courier New}
%% 英文无衬线字体
\setsansfont[
Extension =.ttf,

4
tex/deploy.tex

@ -35,7 +35,7 @@ Writing to MMC(0)... done
%\draw [lightgray, step=1] (image.south west) grid (image.north east);
%\foreach \x in {0, 1, ..., 10} {\node [below] at (\x, 0) {\x};}
%\foreach \y in {0, 1, ..., 10} {\node [left] at (0, \y) {\y};}
\draw [red,thick, rounded corners] (0.7, 7.0) rectangle (2.6, 9.0);
\draw [red,thick, rounded corners] (0.8, 7.0) rectangle (3.0, 9.0);
\end{scope}
\end{tikzpicture}
\caption{设置板卡编号}
@ -65,7 +65,7 @@ Writing to MMC(0)... done
%\draw [lightgray, step=1] (image.south west) grid (image.north east);
%\foreach \x in {0, 1, ..., 10} {\node [below] at (\x, 0) {\x};}
%\foreach \y in {0, 1, ..., 10} {\node [left] at (0, \y) {\y};}
\draw [red,thick, rounded corners] (0.7, 5.0) rectangle (4.5, 9.0);
\draw [red,thick, rounded corners] (0.8, 5.0) rectangle (5.5, 9.0);
\end{scope}
\end{tikzpicture}
\caption{设置板卡名称}

93
tex/intro.tex

@ -2,52 +2,32 @@
主机系统推荐使用 Ubuntu >= 20.04 的版本。
\section{工具链获取}
从公司共享目录获取 RK3588 的编译工具:
从公司共享目录获取 RK3588 的编译工具:\\
\texttt {
\small
\textbackslash{}\textbackslash{}192.168.1.202\textbackslash{}常用工具\textbackslash{}2.开发工具\textbackslash{}RK3588\textbackslash{}gcc-arm-9.2-2019.12-x86\_64-aarch64-none-linux-gnu.tar.xz。
}
} \\
下载后用放在 linux 系统下,用命令解压:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
tar xpvf gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz
\end{minted}
\shellcmd{bash}{tar xpvf gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz}
\section{U-Boot 代码下载}
U-Boot 源代码在这里:
U-Boot 源代码在这里:\\
\texttt {
\small
http://192.168.1.202:8888/rk3588/uboot.git
}
} \\
用 git 命令下载:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
git clone http://192.168.1.202:8888/rk3588/uboot.git
\end{minted}
\shellcmd{bash}{git clone http://192.168.1.202:8888/rk3588/uboot.git}
\section{Kernel 代码下载}
kernel 源代码在这里:
kernel 源代码在这里:\\
\texttt {
\small
http://192.168.1.202:8888/rk3588/kernel.git
}
} \\
用 git 命令下载:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
git clone http://192.168.1.202:8888/rk3588/kernel.git
\end{minted}
\shellcmd{bash}{git clone http://192.168.1.202:8888/rk3588/kernel.git}
准备好文件以后,目录结构如下图所示:
% \begin{figure}[H]
% \centering
% \includegraphics[width=0.8\textwidth]{down}
% \end{figure}
%\caption{代码目录结构}
\begin{figure}[H]
\centering
\begin{tikzpicture}
@ -73,10 +53,8 @@ rk3588
\section{U-Boot}
\subsection{U-Boot 编译}
用下面的命令编译 U-Boot :
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
./make.sh sytc
\end{minted}
\noindent 用下面的命令编译 U-Boot :
\shellcmd{bash}{./make.sh sytc}
编译生成的文件是 uboot.img。
\subsection{U-Boot 版本号}
@ -86,7 +64,7 @@ U-Boot 在启动的时候会打印我们内部的版本号,例如:
\begin{tikzpicture}
\node [anchor=south west, inner sep=0] (image) at (0,0) {
\begin{tcolorbox}[colframe=gray!20, coltitle=blue!80]
\footnotesize
\scriptsize
\begin{Verbatim}
ON=0x00, OFF=0x00
vdd_gpu_s0 750000 uV
@ -140,11 +118,8 @@ U-Boot 的版本号在 \verb+include/configs/sytc_rk3588.h+ 里修改:
\section{Kernel}
\subsection{kernel 编译}
kernel 编译:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
./make.sh
\end{minted}
\noindent kernel 编译:
\shellcmd{bash}{./make.sh}
编译生成的文件是当前目录下的 boot.img。
\subsection{kernel 版本号}
@ -153,8 +128,8 @@ kernel 编译:
\centering
\begin{tikzpicture}
\node [anchor=south west, inner sep=0] (image) at (0,0) {
\begin{tcolorbox}[title={init/main.c:start\_kernel()},colframe=gray!20, coltitle=blue!80]
\footnotesize
\begin{tcolorbox}[title={\small init/main.c:start\_kernel()},colframe=gray!20, coltitle=blue!80]
\scriptsize
\begin{Verbatim}
pr_notice("%s", linux_banner);
pr_notice("SYTC Linux version: %d.%d (%s)",
@ -172,7 +147,7 @@ setup_arch(&command_line);
%\draw [lightgray, step=1] (image.south west) grid (image.north east);
%\foreach \x in {0, 1, ..., 10} {\node [below] at (\x, 0) {\x};}
%\foreach \y in {0, 1, ..., 10} {\node [left] at (0, \y) {\y};}
\draw [red,thick, rounded corners] (0.2, 3.3) rectangle (9.1, 6.05);
\draw [red,thick, rounded corners] (0.2, 3.3) rectangle (9.1, 5.70);
\end{scope}
\end{tikzpicture}
\caption{Kernel 版本号}
@ -184,7 +159,7 @@ setup_arch(&command_line);
\begin{tikzpicture}
\node [anchor=south west, inner sep=0] (image) at (0,0) {
\begin{tcolorbox}[colframe=gray!20, coltitle=blue!80]
\footnotesize
\scriptsize
\begin{Verbatim}
[ 0.947325] Booting Linux on physical CPU 0x0000000000 [0x412fd050]
[ 0.947345] Linux version 5.10.110 (user@DESKTOP-8539AN4)
@ -214,8 +189,8 @@ setup_arch(&command_line);
\centering
\begin{tikzpicture}
\node [anchor=south west, inner sep=0] (image) at (0,0) {
\begin{tcolorbox}[title={arch/arm64/configs/rk3588\_sytc\_defconfig:},colframe=gray!20, coltitle=blue!80]
\footnotesize
\begin{tcolorbox}[title={\small arch/arm64/configs/rk3588\_sytc\_defconfig:},colframe=gray!20, coltitle=blue!80]
\scriptsize
\begin{Verbatim}
CONFIG_SYTC_MAJOR_VERSION=1
CONFIG_SYTC_MINOR_VERSION=0
@ -252,18 +227,18 @@ setup_arch(&command_line);
开机时在调试串口上按住 {\kx}CTRL-C{\kx},串口打印将停止在 U-Boot 的命令行上。
\subsection{升级 uboot}
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
tftpflash 20000000 uboot.img uboot
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
tftpflash 20000000 uboot.img uboot
\end{minted}
\subsection{升级 boot}
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
tftpflash 20000000 boot.img boot
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
tftpflash 20000000 boot.img boot
\end{minted}
\subsection{升级 rootfs}
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
tftpflash 20000000 rootfs.img rootfs
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
tftpflash 20000000 rootfs.img rootfs
\end{minted}
\begin{comment}
@ -289,40 +264,38 @@ rootfs.img 是一个 ext4 文件系统格式的文件,可以通过 mount 的
可以按下面的步骤进行修改:
\begin{enumerate}[(1),nosep]
\item 将 rootfs.img 挂载到系统下,例如:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
sudo mount -o loop rootfs.img /media
\end{minted}
\shellcmd{bash}{sudo mount -o loop rootfs.img /media}
\item 将 rootfs 的内容复制出来:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
sudo mkdir rootfs
sudo cp -a /media/* rootfs/
sudo umount /media
\end{minted}
\item chroot 到 rootfs 的文件系统:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{pwsh}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{pwsh}
sudo mount -o bind /proc rootfs/proc
sudo mount -o bind /dev rootfs/dev
sudo mount -o bind /sys rootfs/sys
sudo chroot rootfs /bin/bash
\end{minted}
\item 安装新的软件包,例如:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
apt-get update
apt-get install tcpdump
\end{minted}
\item 安装所需软件以后,清理临时文件并退出 chroot 环境:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
apt-get clean
exit
\end{minted}
\item 卸载 bind 的文件系统:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
sudo umount rootfs/proc
sudo umount rootfs/dev
sudo umount rootfs/sys
\end{minted}
\item 重新打包文件系统:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
IMAGE_SIZE_MB=$(( $(sudo du -sh -m rootfs | cut -f1) + 300 ))
dd if=/dev/zero of=rootfs.img bs=1M count=0 seek=${IMAGE_SIZE_MB}
sudo mkfs.ext4 -d rootfs rootfs.img

13
tex/issue.tex

@ -7,7 +7,7 @@
\begin{tikzpicture}
\node [anchor=south west, inner sep=0] (dump) at (0,0) {
\begin{tcolorbox}[colframe=gray!20]
\begin{footnotesize}
\begin{scriptsize}
\begin{Verbatim}
sysmem_dump_all:
--------------------------------------------------------------------
@ -39,7 +39,7 @@ sysmem_dump_all:
reserved.core.total = 0x049b07d4 (73 MiB. 705 KiB)
--------------------------------------------------------------------
\end{Verbatim}
\end{footnotesize}
\end{scriptsize}
\end{tcolorbox}
};
\begin{scope}[
@ -50,7 +50,7 @@ sysmem_dump_all:
%\draw [lightgray, step=1] (dump.south west) grid (dump.north east);
%\foreach \x in {0, 1, ..., 10} {\node [below] at (\x, 0) {\x};}
%\foreach \y in {0, 1, ..., 10} {\node [left] at (0, \y) {\y};}
\draw [red,thick, rounded corners] (5.7, 6.5) rectangle (7.2, 6.8);
\draw [red,thick, rounded corners] (5.2, 6.5) rectangle (7.2, 6.8);
\end{scope}
\end{tikzpicture}
\caption{U-Boot Overflow}
@ -60,7 +60,8 @@ sysmem_dump_all:
\centering
\begin{tikzpicture}
\node [anchor=south west, inner sep=0] (image) at (0,0) {
\begin{tcolorbox}[title={\tt lib/Kconfig: }, colframe=gray!20, coltitle=blue!80]
\begin{tcolorbox}[title={\tt \small lib/Kconfig: }, colframe=gray!20, coltitle=blue!80]
\scriptsize
\begin{Verbatim}
config SYS_STACK_SIZE
hex
@ -78,8 +79,8 @@ sysmem_dump_all:
%\draw [lightgray, step=1] (image.south west) grid (image.north east);
%\foreach \x in {0, 1, ..., 10} {\node [below] at (\x, 0) {\x};}
%\foreach \y in {0, 1, ..., 10} {\node [left] at (0, \y) {\y};}
\draw [red,thick, rounded corners] (2.7, 3.5) rectangle (4.1, 5.0);
\draw[red, anchor=south west, inner sep=0] node at (4.2, 3.8) { \footnotesize 改这里};
\draw [red,thick, rounded corners] (2.25, 3.5) rectangle (3.4, 5.0);
\draw[red, anchor=south west, inner sep=0] node at (3.5, 3.7) { \footnotesize 改这里};
\end{scope}
\end{tikzpicture}
\caption{修改U-Boot 栈大小}

19
tex/resource.tex

@ -31,6 +31,7 @@ RK3588 camera 资源硬件如下所示,拥有 2 路 DCPHY, 2 路 DPHY, 一路
\subsubsection{MIPI-CSI 资源}
RK3588 MIPI-CSI 资源如下:
\begin{table}[H]
\centering
\begin{tabular}{lllll}
\toprule
& Type & bandwidth & NUM & Mode \\
@ -105,7 +106,7 @@ RK35887路Camera连接情况如下图所示:
\caption{Camera 模块连接关系}
\end{figure}
根据上述的结构图可以大概看出MIPI和DVP分别是如何连接的,关键点如下:
\begin{enumerate}[(1)]
\begin{enumerate}[(1),nosep]
\item rk3588支持两个dcphy,节点名称分别为csi2\_dcphy0/csi2\_dcphy1。每个dcphy硬件支持RX/TX同时使用,对于camera输入使用的是RX。支持DPHY/CPHY协议复用;需要注意的是同一个dcphy的TX/RX只能同时使用DPHY或同时使用CPHY。
\item rk3588支持2个dphy硬件,这里我们称之为dphy0\_hw/dphy1\_hw,两个dphy硬件都可以工作在full mode 和split mode两种模式下。
\begin{itemize}
@ -130,17 +131,27 @@ RK35887路Camera连接情况如下图所示:
\subsubsection{AHD 摄像头}
AHD摄像头可通过转换芯片,转成支持4路虚拟通道的MIPI/BT1120接口到RK3588
最大可以支持到28路1080p30的摄像头。
\begin{table}[H]
\centering
\begin{tabular}{ccl}
\toprule
MIPI-CSI & DVP接口 & 支持Camera数量 \\
\midrule
{\scriptsize 6} & {\scriptsize 1} & {\scriptsize 28(7x4)*1920x1080@30FPS} \\
\bottomrule
\end{tabular}
\end{table}
\subsection{RTP Stream}
从 HDMI 输入的视频数据,在 Linux 系统里从 /dev/videoX 的设备中获取出来。可以用 多媒体框架 gstreamer 来做测试。
用 gstreamer 的 gst-launch-1.0 可以用来控制 video 的视频数据。
这里以 板子上用 gstreamer 提供 rtp 服务,在电脑的 windows 端用 VLC 程序来实现视频的播放为例,展示一下 video 功能。
\begin{enumerate} [(1)]
\begin{enumerate} [(1),nosep]
\item 在板子上启动 rtp 服务:
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! x264enc ! rtph264pay pt=96 \
! udpsink host=192.168.1.17 port=5000
gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! x264enc \
! rtph264pay pt=96 ! udpsink host=192.168.1.17 port=5000
\end{minted}
这里假定电脑的IP地址是:192.168.1.17。这根据实际情况修改。
\item 在电脑上新建一个名为 hdmi.sdp 的 sdp 文件\footnote{ SDP 的完整定义,请查看 rfc4566},内容如下:

70
tex/ubuntu.tex

@ -1,13 +1,13 @@
\chapter{制作 ubuntu 文件系统}
在 主机的 Ubuntu 系统里面,可以制作 aarch64 的文件系统,这里介绍一下步骤。
\section{ 安装依赖软件}
\begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
sudo apt install qemu-user-static debootstrap
\end{minted}
\section{下载基础系统}
这里以安装 Ubuntu 22.04 为例:
\begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
mkdir ubuntu
sudo debootstrap --arch=arm64 --foreign jammy ubuntu
sudo cp /usr/bin/qemu-aarch64-static ubuntu/usr/bin
@ -21,7 +21,7 @@ sudo chroot ubuntu /usr/bin/qemu-aarch64-static /bin/sh \
给目标系统安装常用程序:
\begin{enumerate}[(1)]
\item 进入目标系统:
\begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
sudo mount -o bind /sys ubuntu/sys
sudo mount -o bind /proc ubuntu/proc
sudo mount -o bind /dev ubuntu/dev
@ -29,7 +29,7 @@ sudo mount -o bind /dev/pts ubuntu/dev/pts
sudo chroot ubuntu /usr/bin/qemu-aarch64-static /bin/bash -i
\end{minted}
\item 修改 /etc/apt/sources.list 如下:
\begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
deb http://ports.ubuntu.com/ jammy main universe
deb-src http://ports.ubuntu.com/ jammy main universe
deb http://ports.ubuntu.com/ jammy-security main universe
@ -38,54 +38,54 @@ deb http://ports.ubuntu.com/ jammy-updates main universe
deb-src http://ports.ubuntu.com/ jammy-updates main universe
\end{minted}
\item 更新系统:
\begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
apt-get update
apt-get dist-upgrade
\end{minted}
\item 安装常用软件:
\begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
apt-get install -y vim-nox build-essential gdb u-boot-tools rsync \
socat jq tcpdump ifupdown minicom i2c-tools lrzsz tftp-hpa \
net-tools dosfstools pciutils memtool ethtool unzip python3-pip
\end{minted}
\item 设置 root 密码:
\begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
passwd root
\end{minted}
\item 设置时区:
\begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
\end{minted}
\item 设置 hostname:
\begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
echo sytc > /etc/hostname
echo "127.0.0.1 sytc" >> /etc/hosts
\end{minted}
\item 设置bash为默认shell:
\begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
dpkg-reconfigure dash
\end{minted}
选择{\kx}NO{\kx}
\item 配置 locals:
\begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
dpkg-reconfigure locales
\end{minted}
至少选择 en\_US.UTF-8 和 zh\_CN.UTF-8。
\item 配置/etc/fstab,例如:
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
# <file system> <mount pt> <type> <options> <dump> <pass>
/dev/root / auto rw,noauto 0 1
tmpfs /tmp tmpfs mode=1777 0 0
tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0
#PARTLABEL=oem /oem ext2 defaults 0 2
PARTLABEL=userdata /userdata ext4 defaults 0 0
proc /proc proc defaults 0 0
devtmpfs /dev devtmpfs defaults 0 0
devpts /dev/pts devpts mode=0620,ptmxmode=0666,gid=5 0 0
tmpfs /dev/shm tmpfs nosuid,nodev,noexec 0 0
sysfs /sys sysfs defaults 0 0
debugfs /sys/kernel/debug debugfs defaults 0 0
pstore /sys/fs/pstore pstore defaults 0 0
# <file system> <mount pt> <type> <options> <dump> <pass>
/dev/root / auto rw,noauto 0 1
tmpfs /tmp tmpfs mode=1777 0 0
tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0
#PARTLABEL=oem /oem ext2 defaults 0 2
PARTLABEL=userdata /userdata ext4 defaults 0 0
proc /proc proc defaults 0 0
devtmpfs /dev devtmpfs defaults 0 0
devpts dev/pts devpts mode=0620,ptmxmode=0666,gid=5 0 0
tmpfs /dev/shm tmpfs nosuid,nodev,noexec 0 0
sysfs /sys sysfs defaults 0 0
debugfs /sys/kernel/debug debugfs defaults 0 0
pstore /sys/fs/pstore pstore defaults 0 0
\end{minted}
\item 修改 getty 服务,使 root 自动登录。修改文件 /usr/lib/systemd/system/serial-getty@.service 的 ExecStart 对应的值:
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{ini}
@ -116,47 +116,47 @@ echo "source-directory /etc/network/interfaces.d"> /etc/network/interfaces
\end{enumerate}
\subsection{安装 ssh server}
\noindent 安装软件:
\begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
apt-get install openssh-server
\end{minted}
配置允许root登陆,将/etc/ssh/sshd\_config中的:
\begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
#PermitRootLogin prohibit-password
\end{minted}
改为:
\begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
PermitRootLogin yes
\end{minted}
\subsection{安装 rockchip 硬解码器}
添加软件源:
\begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
apt-get install software-properties-common
add-apt-repository ppa:george-coolpi/multimedia
apt update
\end{minted}
安装 gstreamer :
\begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools \
libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools \
gstreamer1.0-alsa gstreamer1.0-pulseaudio ffmpeg
\end{minted}
安装插件gstreamer1.0-rockchip
\begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
apt-get install gstreamer1.0-rockchip
\end{minted}
\subsection{打包成 ext4 文件系统}
清理并退出 chroot 环境:
\begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
apt-get clean
exit
\end{minted}
执行命令,打包成 ext4 的文件系统文件:
\begin{minted}[bgcolor=lightgray!30,fontsize=\footnotesize]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
IMAGE_SIZE_MB=$(( $(sudo du -sh -m ubuntu | cut -f1) + 300 ))
dd if=/dev/zero of=ubuntu.img bs=1M count=0 seek=${IMAGE_SIZE_MB}
sudo mkfs.ext4 -d ubuntu ubuntu.img

89
tex/wsl2.tex

@ -1,74 +1,43 @@
\chapter{WSL2 安装配置}
\section{WSL2 系统导入导出}
在 powershell 或者 cmd 窗口进行 wsl2 系统的导入导出:
\begin{enumerate} [(1),nosep]
\item 查看子系统是否运行:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
wsl -l --running
\end{minted}
\shellcmd{bash}{wsl -l --running}
\item 终止子系统运行:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
wsl -t <子系统名>
\end{minted}
\shellcmd{bash}{ wsl -t <子系统名> }
\item 备份子系统:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
wsl --export <子系统名> <保存路径>
\end{minted}
\shellcmd{bash}{wsl --export <子系统名> <保存路径>}
例如:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{pwsh}
wsl --export Ubuntu-22.04 e:\ubuntu-22.04-wsl2.zip
\end{minted}
\shellcmd{pwsh}{wsl --export Ubuntu-22.04 e:\ubuntu-22.04-wsl2.zip}
\item 注销子系统:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
wsl --unregister <子系统名>
\end{minted}
\shellcmd{bash}{wsl --unregister <子系统名>}
\item 恢复子系统:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
wsl --import <子系统名> <子系统安装路径> <子系统保存路径>
\end{minted}
\shellcmd{bash}{wsl --import <子系统名> <子系统安装路径> <子系统保存路径>}
例如:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{pwsh}
wsl --import Ubuntu-22.04 e:\wls2\ubuntu2204 e:\ubntu-22.04-wsl2.zip
\end{minted}
\shellcmd{pwsh}{wsl --import Ubuntu-22.04 e:\wls2\ubuntu2204 e:\ubntu-22.04-wsl2.zip}
\item 修改默认登录用户:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
wsl --distribution Ubuntu-22.04 --user <user>
\end{minted}
\shellcmd{bash}{wsl --distribution Ubuntu-22.04 --user <user>}
或者:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
<子系统名>.exe config --default-user <默认用户名>
\end{minted}
\shellcmd{bash}{<子系统名>.exe config --default-user <默认用户名>}
例如:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
ubuntu2204.exe config --default-user <默认用户名>
\end{minted}
\shellcmd{bash}{ubuntu2204.exe config --default-user <默认用户名>}
\end{enumerate}
\section{vhd 文件挂载}
\subsection{Windows 下用 WSL 工具}
使用 Microsoft Store 中的 WSL 可以直接挂载:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
wsl --mount --vhd <pathToVHD>
\end{minted}
例如:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small,style=bw]{pwsh}
wsl --mount --vhd e:\wsl2\rk3588\rk3588.vhdx --partition 1 --name rk3588
\end{minted}
\shellcmd{bash}{wsl --mount --vhd <pathToVHD>}
例如:
\shellcmd{pwsh}{wsl --mount --vhd e:\wsl2\rk3588\rk3588.vhdx --partition 1 --name rk3588}
\subsection{linux 下用 qemu-nbd}
安装 qemu-nbd 工具:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
apt-get install qemu-utils
\end{minted}
\shellcmd{bash}{apt-get install qemu-utils}
加载 nbd 驱动:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{pwsh}
modprobe nbd nbds_max=64
\end{minted}
\shellcmd{pwsh}{modprobe nbd nbds_max=64}
用 qemu-nbd 加载:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
qenum-nbd -c /dev/nbd0 /path/to/vhdx
\end{minted}
\shellcmd{bash}{qenum-nbd -c /dev/nbd0 /path/to/vhdx}
接下来就可以用 parted 工具查看或修改分区,用 mount 挂载文件系统等,总之就把 /dev/nbd0 当做一个磁盘进行使用。
\section{USB 设备共享}
@ -79,45 +48,35 @@ qenum-nbd -c /dev/nbd0 /path/to/vhdx
\begin{enumerate}[(1), nosep]
\item 通过以管理员模式打开 PowerShell 并输入以下命令,列出所有连接到 Windows 的 USB 设备。 列出设备后,选择并复制要附加到 WSL 的设备总线 ID:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
usbipd list
\end{minted}
\shellcmd{bash}{usbipd list}
\item 在附加 USB 设备之前,必须使用命令 usbipd bind 来共享设备,从而允许它附加到 WSL。 这需要管理员权限。 选择要在 WSL 中使用的设备总线 ID,然后运行以下命令。
运行命令后,请再次使用命令 usbipd list 验证设备是否已共享:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{pwsh}
usbipd bind --busid 2-1
\end{minted}
\shellcmd{pwsh}{usbipd bind --busid 2-1}
\item 若要附加 USB 设备,请运行以下命令。 (不再需要使用提升的管理员提示。)确保 WSL 命令提示符处于打开状态,以使 WSL 2 轻型 VM 保持活动状态。
请注意,只要 USB 设备连接到 WSL,Windows 将无法使用它。 附加到 WSL 后,任何作为 WSL 2 运行的分发版本都可以使用 USB 设备。
使用 usbipd list 验证设备是否已附加。 在 WSL 提示符下,运行 lsusb 以验证 USB 设备是否已列出,并且可以使用 Linux 工具与之交互:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
usbipd attach --wsl --busid 2-1
\end{minted}
\shellcmd{bash}{usbipd attach --wsl --busid 2-1}
\item 打开 Ubuntu(或首选的 WSL 命令行),使用以下命令列出附加的 USB 设备:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
lsusb
\end{minted}
\shellcmd{bash}{lsusb}
\item 在 WSL 中完成设备使用后,可物理断开 USB 设备,或者从 PowerShell 运行此命令:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
usbipd detach --busid <busid>
\end{minted}
\shellcmd{bash}{usbipd detach --busid <busid>}
\end{enumerate}
\section{Windows 端口转发}
按下面的步骤进行设置:
\begin{enumerate}[(1), nosep]
\item 管理员权限启动windows powershell,运行如下代码。这里以设置80端口转发WSL的地址的80端口为例:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{pwsh}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{pwsh}
netsh interface portproxy add v4tov4 listenport=80 \
listenaddress=0.0.0.0 connectport=80 \
connectaddress=172.19.11.104 protocol=tcp
\end{minted}
\item 查看端口转发情况:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{bash}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
netsh interface portproxy show all
\end{minted}
\item 删除端口转发:
\begin{minted}[bgcolor=lightgray!30,fontsize=\small]{pwsh}
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{pwsh}
netsh interface portproxy delete v4tov4 listenport=80 \
listenaddress=0.0.0.0
\end{minted}

Loading…
Cancel
Save