ubuntu 22.04(jammy)使用教程
查看系统信息
- 查看CPU信息
1
2
3
4
5
6
7
8
9
10
11# CPU型号
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
# 物理 CPU 个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# CPU核数 (物理CPU个数 * 每个CPU的核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 逻辑CPU个数 (物理CPU个数 * 每个CPU的核数 * 超线程数)
cat /proc/cpuinfo| grep "processor"| wc -l - 查看操作系统信息
1
2
3
4
5
6
7
8
9
10
11
12# 查看操作系统内核信息
uname -a
# 查看操作系统发行版本
cat /etc/issue
lsb_release -a
# 查看hostname
hostname
# 网卡信息
ip a - 安装的字体
1
2
3
4
5# 所有字体
fc-list
# 中文字体
fc-list :lang=zh
配置源
使用 vim 编辑 /etc/apt/sources.list 文件, 注释掉原来所有的内容, 新增以下源
- 浙大源
1
2
3
4deb https://mirrors.zju.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.zju.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.zju.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.zju.edu.cn/ubuntu/ jammy-security main restricted universe multiverse - 阿里源
1
2
3
4deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
网络配置
如果使用 Ubuntu Desktop, 那么联网可以通过 GUI 的方式填写 IP 等信息.
如果使用 Ubuntu Server, 那么有两种网络管理工具, netplan 和 NetworkManager
如果通过动态 IP 联网, 则什么也不需要配置
如果只配置静态 IP , 则使用 netplan 或者 NetworkManager 均可, 推荐前者
使用 netplan 联网
编辑/etc/netplan/*.yaml文件(在不同的系统中可能有不同的文件名), 写入以下内容:1
2
3
4
5
6
7
8
9
10
11
12
13
14# This is the network config written by 'subiquity'
network:
ethernets:
eno1: # 网卡名称, 需要填写自己机器的, 通过 `ip a` 命令查看,
addresses: [192.168.1.2/24] # 静态 IP 地址, 斜杠后面的是子网掩码, 24 表示 24 个 1, 即 255.255.255.0
gateway4: 192.168.1.1 # 网关地址, 在 22.04 版本中不再需要这一行, 只需要指定下面的路由网关地址即可
nameservers:
addresses: [8.8.8.8] # DNS 服务器地址
routes:
- to: 0.0.0.0/0 # 路由目标地址
via: 192.168.1.1 # 路由网关地址
metric: 0
renderer: networkd # 网络服务, networkd 和 NetworkManager 二选一, 使用 netplan 时需要指定为 networkd
version: 2使用以下命令应用配置
1
2
3
4
5# 检查配置的正确性
sudo netplan try
# 应用配置
sudo netplan apply使用 NetworkManager 联网
NetworkManager (简称 NM) 是另一种网络管理工具, 它支持更复杂的配置, 特别是 L2TP VPN.
我们首先介绍配置静态 IP 的方法.
使用 NM 之前, 我们修改/etc/netplan/*.yaml文件使用 NM 管理网络:1
2
3
4# This is the network config written by 'subiquity'
network:
renderer: NetworkManager
version: 2然后编辑
/etc/NetworkManager/NetworkManager.conf, 修改为managed=true1
2
3
4
5
6
7
8[main]
plugins=ifupdown,keyfile
[ifupdown]
managed=true
[device]
wifi.scan-rand-mac-address=no配置修改后我们需要重启网络服务
1
sudo systemctl restart NetworkManager
NetworkManager 使用命令行工具 nmcli 来管理配置. 有关 nmcli 的使用方法, 可以参考 nmcli –help 查看.
接下来通过创建配置文件:
1 | sudo nmcli c add type ethernet con-name wired ifname eno1 ipv4.addr 192.168.1.2/24 ipv4.gateway 192.168.1.1 ipv4.method manual |
其中 wired 为自定义的连接名称,
eno1 为网卡名称 (需要填写自己的).
注意修改自己的 IP 地址, 子网掩码和网关.
然后就会有个新的文件 /etc/NetworkManager/system-connections/wired.nmconnection 创建出来.
接下来我们编辑该文件, 并使得最终内容如下 (注意 uuid 值使用原本的就可以):
1 | [connection] |
完成后启动该配置
1 | sudo nmcli connection up wired |
- 如果需要配置 L2TP VPN, 则必须选择 NetworkManager
首先安装该模块1
2
3
4
5# ubuntu server/desktop 需要安装
sudo apt install network-manager-l2tp
# ubuntu desktop 需要安装
sudo apt install network-manager-l2tp-gnome
- 使用ubuntu desktop
新建 L2TP VPN
Name: ZJUVPN
Gateway:
User name: <用户名>
Password: <密码>
PPP Settings:
勾选 Allow BSD data compression
勾选 Allow Deflate data compression
取消勾选 Use TCP header compression
取消勾选 User protocol field compression negotiation
取消勾选 Use Address/Control compression
希望开机后可以自动连接 VPN
运行 nm-connection-editor 打开网络连接编辑面板,
从 Ethernet(以太网) 列表中选择所使用的有线网或者从WLAN列表中选择所使用的无线网, 双击打开编辑面板,
在 General(常规) 选项卡中勾选 Automatically connect to VPN when using this connection(使用此连接时自动连接到VPN), 并选择要开启的 VPN
- 使用ubuntu server
需要在终端中配置 VPN. 使用以下命令新建一个连接其中 ZJUVPN 为自定义 VPN 名称.1
sudo nmcli c add connection.id ZJUVPN type vpn vpn-type l2tp
然后编辑文件/etc/NetworkManager/system-connections/ZJUVPN.nmconnection启动 VPN 服务1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32[connection]
id=ZJUVPN
uuid=1fe18117-cbca-4f3e-9f3d-80664859b2f2 # 使用原来创建的默认值即可
type=vpn # 连接类型为 vpn
autoconnect=false
permissions=
timestamp=1593424178
[vpn]
gateway=<vpn_address> # VPN 地址
mru=1400
mtu=1400
no-vj-comp=yes
noaccomp=yes
nopcomp=yes
password-flags=0 # 这里设置为 0, 这样密码可以写在配置文件里, 方便自动连接
user=<username> # 用户名
service-type=org.freedesktop.NetworkManager.l2tp
[vpn-secrets]
password=<password> # 密码
[ipv4]
dns-search=
method=auto
[ipv6]
addr-gen-mode=stable-privacy
dns-search=
method=auto
[proxy]1
2
3
4sudo nmcli c up ZJUVPN
# 查看
nmcli c
希望开机后可以自动连接 VPN
编辑 /etc/NetworkManager/system-connections/wired.nmconnection 文件, 在下面的段落中增加一行 ZJUVPN 的 uuid 号:
1 | [connection] |
完成后重启系统。
- 双网卡设置
主节点: 一张网卡设置为外网ip, 另一张设置为内网ip. 内网网卡不设置网关.设置内网的节点可以通过主节点访问外网: 开启ip_forward的内核转发, 重启后有效.1
2
3
4
5
6
7
8
9
10
11
12
13
14network:
ethernets:
eno1:
addresses: [10.76.2.232/21]
gateway4: 10.76.0.10
nameservers:
addresses: [10.10.0.21]
routes:
- to: 10.0.0.0/8
via: 10.76.0.1
metric: 0
eno2:
addresses: [192.168.0.101/24]
version: 2其中找到1
vim /etc/sysctl.conf
net.ipv4.ip_forward, 赋值为 1。
设置路由表由于内网的请求源地址是内网地址, 目标地址是外网地址, 请求返回时外网地址不知道内网地址,1
2
3
4
5Destination Gateway Genmask Flags Metric Ref Use Iface
default _gateway 0.0.0.0 UG 0 0 0 eno1
10.0.0.0 10.76.0.1 255.0.0.0 UG 0 0 0 eno1
10.76.0.0 0.0.0.0 255.255.248.0 U 0 0 0 eno1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eno2
因此需要做网络地址转换(network address translation, NAT),
把内网地址修改为外网知道的网关地址.
数据包返回后目标地址是网关, 需要进一步转换为内网地址.
因此需要在 iptables 中添加 NAT 转发规则.1
2iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o enp1s0 -j MASQUERADE
# 该规则的意思是 来自 192.168.1.0/24 经由 enp1s0 的数据包需要做 NAT 转换
- 还可以使用安卓手机的网络共享功能临时上网. 安卓手机通过数据线连接到 Ubuntu 服务器, 手机移动网络设置中开启 usb 网络共享, 电脑共享手机网络
安装常用工具
更新系统, 安装常用工具
1 | sudo apt update; sudo apt upgrade |
1 VSCode
Ubuntu 20.04 下应用商店里安装的 VSCode 无法输入中文. 此处我们添加微软的apt源来安装(参考https://cyfeng.science/2020/05/20/vs-code-chinese-input/)
1 | wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add - |
2 卸载自带的火狐浏览器
1 | # 查找相关软件包 |
3 deepin-win用于安装微信 QQ等
记录是基于的Ubuntu18.04.2LTS。
记住这个工程的网址 (https://gitee.com/wszqkzqk/deepin-wine-for-ubuntu),这里面有安装其他软件的详细说明,我们主要根据这个步骤来执行。
1 | apt-get install git |
通过执行上面的命令我们可以很方便的将wine这个工程下载到本地来使用,然后执行shell文件进行安装。
安装托盘,托盘的作用是可以把使用wine打开的软件整合起来,便于管理和通知的查看。
1 | apt install chrome-gnome-shell |
安装QQ
1 | cd .. |
- 安装软件命令:dpkg -i <.deb file name>
- 列出与该包先关联的文件命令:dpkg -L package
- 安装完包后,可以用此命令查看软件安装到什么地方.
- 显示包的版本命令:dpkg -l package
- 移除软件(保留配置)命令:dpkg -r package
- 移除软件(不保留配置)命令:dpkg -P package
- 查找包的详细信息命令:dpkg -s package
- 列出deb包的内容命令:dpkg -c package.deb
- 解开 deb 包的内容:dpkg –unpack package.deb
- 搜索所属的包内容:dpkg -S keyword
- 配置包:dpkg –configure package
其中QQ所在的镜像是https://mirrors.aliyun.com/deepin/pool/non-free/d/deepin.com.qq.im/,我们可以根据版本来进行选择。
安装微信
1 | (base) mscg@mscg:~$ mkdir deepin.wechat |
Ubuntu 20.04安装后无法通过图标打开. 可以通过安装旧版微信解决该问题.
Deepin-WeChat 的中文字体默认用的是”文泉驿微米黑”, 所以在系统里安装该字体即可. 首先从Github仓库(https://github.com/anthonyfok/fonts-wqy-microhei/blob/master/wqy-microhei.ttc) 下载该字体, 然后复制到字体目录病刷新字体缓存:
1 | sudo cp wqy-microhei.ttc /usr/share/fonts |
重启微信.
如果无法直接粘贴截图,安装 libjpeg62:i386 可解决
1 | sudo apt install libjpeg62:i386 |
网易云、WPS、百度网盘都有linux的安装包,直接下载安装
docker安装
https://docs.docker.com/engine/install/ubuntu/
https://docs.docker.com/engine/install/ubuntu/
在新主机上首次安装 Docker Engine 之前,您需要 需要设置 Docker 存储库。之后,您可以安装和更新 存储库中的 Docker。
a. 设置 Docker 的存储库
1 | # Add Docker's official GPG key: |
b. 安装 Docker 包
若要安装最新版本,请运行
1 | sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin |
要安装特定版本的 Docker Engine,首先列出 存储库中的可用版本
1 | # List the available versions: |
选择所需的版本并安装
1 | VERSION_STRING=5:24.0.0-1~ubuntu.22.04~jammy |
通过运行映像来验证 Docker 引擎安装是否成功
1 | sudo docker run hello-world |
修改默认文件夹
- 方法一
打开 系统设置-》语言支持 将“english”拖动到最上端,重启系统。重启后,会提示更新文件名称,更新后在将语言”中文“拖动到顶部,重启系统 。 - 方法二
编辑~/.config/user-dirs.dirs文件1
2
3
4
5
6
7
8XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOWNLOAD_DIR="$HOME/Download"
XDG_TEMPLATES_DIR="$HOME/Templates"
XDG_PUBLICSHARE_DIR="$HOME/Public"
XDG_DOCUMENTS_DIR="$HOME/Documents"
XDG_MUSIC_DIR="$HOME/Music"
XDG_PICTURES_DIR="$HOME/Pictures"
XDG_VIDEOS_DIR="$HOME/Videos" - 方法三
打开终端,在终端中输入命令:跳出对话框询问是否将目录转化为英文路径,同意并关闭。在终端中输入命令:1
2export LANG=en_US
xdg-user-dirs-gtk-update重新启动系统,系统会提示更新文件名称,选择不再提示,并取消修改。1
export LANG=zh_CN
ubuntu美化
参考文章 https://www.cnblogs.com/feipeng8848/p/8970556.html. 这里摘录一些.
美化工作主要围绕两个主题展开:
修改 Gnome 皮肤: https://www.pling.com/s/Gnome
安装 Gnome 插件: https://extensions.gnome.org/
这里的 Gnome 是一个 Linux 下的桌面环境, Ubuntu 18.04 使用的是 v3.28; Ubuntu 20.04 使用的是 v3.36.
安装 gnome-tweak-tool 和插件
1
2sudo apt-get update
sudo apt-get install gnome-tweak-tool安装完成后, 按 Win 键, 输入 tweak 搜索到 Tweaks 工具 (可以右键添加到收藏, 即固定到任务栏), 打开.
此处 Tweaks 在 18.04 和 20.04 版本中略有不同, 但基本功能类似, 主要是用于调整任务栏和系统皮肤等等的属性, 可以自行探索.
我们重点推荐几个拓展(Extensions)
Tweaks 的拓展是通过浏览器插件来安装的. 首先安装拓展工具:1
sudo apt-get install gnome-shell-extensions
安装完成后打开 Tweaks 的 Extensions 菜单, 可以看到已有的插件.
现在我们要安装新的插件, 打开 Gnome 插件网址 https://extensions.gnome.org/, 搜索如下几个插件:
a. User Themes: 用于修改系统皮肤
b. Dash to Panel: 用于修改任务栏样式
c. Topicon plus: 用于 wine, 后面再说
安装插件的方法很简单, 只需要打开每个插件页面的开关, 稍等片刻, 会弹出一个对话框, 点击 Install 即可.
安装完插件后在 Tweaks 的 Extensions 菜单可以看到.安装新皮肤
Ubuntu 的皮肤包含两部分, 主题和图标.
系统已有的主题存放在 /usr/share/themes, 图标存放在 /usr/share/icons 中.
我们要做的就是下载新的主题和皮肤, 把他们放入这两个系统文件夹.
首先打开 Gnome 皮肤网站 https://www.pling.com/s/Gnome,
点击左侧的 GTK 3/4 Themes 分类, 点击 Rating 标签,
选择一款自己喜欢的皮肤, 比如这款 Orchis. 点击 Files 标签,
可以看到有多种样式可以选择: 普通样式, 带 dark 后缀的暗黑风, 带 light 后缀的明亮风.
任意选择一个, 点击下载按钮, 稍等片刻就会下载一个压缩包 Orchis-light.tar.xz.
1 | # 解压 |
再打开 Gnome 皮肤网站, 点击左侧的 Full Icon Themes 分类, 点击 Score 标签,
选择一款自己喜欢的图标, 比如这款 McMojave-circle, 任意选择一个图标样式下载.
1 | # 解压 |
在 Tweaks 的 Apperence 菜单, 我们可以看到 Themes 下面有一系列的皮肤选项,
其中 Applications 和 Shell 下就包括我们新增加的 Orchis-light 皮肤,
在 Icons 菜单包含新增的 McMojave-circle 图标, 可以自行选择.
修改系统设置
1 时间设置
修改时区. 时区是从 /etc/localtime 读取的, 而默认这是个软链接, 链接到哪个时区文件就是哪个时区.
1 | # 查看时间, 发现时区是 UTC 的 |
2 修改Hostname
1 | # 1. 临时修改为abc, 修改后打开新终端显示, 重启系统失效 |
3 开机启动程序
开机启动的服务分为两种, 系统服务和用户服务.
系统服务使用 root 权限启动, 用户服务使用用户权限启动.
在开机后登陆之前, 系统会扫描以下目录的服务并启动:
systemd/system 的服务
1
2
3
4/usr/lib/systemd/system/
/lib/systemd/system/ (软链接, 实际指向 /usr/lib/systemd/system/)
/usr/local/lib/systemd/system/ (默认不存在该目录)
/etc/systemd/system/systemd/user 的服务
1
2
3
4
5
6
7/usr/lib/systemd/user/
/usr/local/lib/systemd/user/ (默认不存在该目录)
/usr/share/systemd/user/ (默认不存在该目录)
/usr/local/share/systemd/user/ (默认不存在该目录)
~/.local/share/systemd/user/ (默认不存在该目录)
/etc/systemd/user/
~/.config/systemd/user/ (默认不存在该目录)可以使用
systemctl show --property=UnitPath命令查看扫描顺序, 优先级从低到高
操作系统服务常用的命令1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18# 启用系统服务
sudo systemctl enable xxx.service
# 禁用系统服务
sudo systemctl disable xxx.service
# 查看系统服务状态
sudo systemctl status xxx.service
# 启动系统服务
sudo systemctl start xxx.service
# 重启系统服务
sudo systemctl restart xxx.service
# 停止系统服务
sudo systemctl stop xxx.service
# 重新加载配置
sudo systemctl reload xxx.service
# 启用用户服务
systemctl --user enable xxx.service
# 其余命令类似: disable, status, start, stop在操作用户服务时, 必须加 –user, 否则会找不到服务, 并且必须去掉 sudo,
否则会提示错误 Failed to connect to bus: No such file or directory.自动运行: rc-local 服务
修改服务文件sudo vim /lib/systemd/system/rc-local.service, 添加最下面的一段话1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=no
GuessMainPID=no
#这一段原文件没有,需要自己添加
[Install]
WantedBy=multi-user.target这里的
WantedBy=multi-user.target是把rc-local.service加入multi-user.target这一启动目标.
启用服务1
sudo systemctl enable rc-local.service
该命令实际上是根据我们新添加的依赖关系,
建立了/etc/systemd/system/multi-user.target.wants/rc-local.service符号链接指向/lib/systemd/system/rc-local.service.
系统在启动时会扫描multi-user.target.wants目录并启动其中的服务.
添加我们需要自启动命令到/etc/rc.local文件中 (与上面的配置中 ExecStart 的文件名对应), 该文件不存在时自己创建一个.
要注意这个文件里使用的命令都要写全路径(因为该文件是 root 执行的)1
2
3
4
5
6
#
# rc.local
#
/usr/local/bin/sslocal -c /home/<username>/tools/ssconfig/config.json -d start为 rc.local 增加执行权限
1
sudo chmod +x /etc/rc.local
重启以测试是否成功.
4 (双系统) 修改开机默认系统
打开 grub 文件: sudo vim /etc/default/grub , 内容如下
1 | # If you change this file, run 'update-grub' afterwards to update |
修改第6行, GRUB_DEFAULT=0 即为默认启动项, 0通常是 Ubuntu, 而 Windows 系统通常在下面, 需要在开机启动的时候数一下(从0开始数).
修改完毕后, 更新 grub: sudo update-grub 即可.
5 登录启动项
需要区分以下概念:
开机启动项指的是针对于所有用户适用的启动程序.
登录启动项指的是针对于特定用户适用的启动程序.
Launcher中搜索 Startup Application , 并点击打开.
直接增加启动项即可.
6 自定义 Grub 主题
从 https://www.opendesktop.org/s/Gnome/p/1307852/ 下载皮肤, 解压后运行 ./install.sh 安装
7 硬盘操作
分区操作
1 | # 查看已挂载磁盘 |
格式化硬盘
如果是刚分好区的硬盘, 则在需要先格式化分区, 否则既无法查看UUID, 也无法挂载到某一个目录下.
1 | sudo mkfs.ext4 /dev/sda1 |
临时挂载
1 | sudo mount /dev/sda2 /media/disk1 |
永久挂载
先查看各个磁盘挂载的信息 sudo fdisk -l, 并确认目标硬盘的位置 /dev/sd* ;
查看该硬盘的UUID号 sudo blkid (使用UUID号可以避免硬盘更换位置后 /dev/sd* 发生变化, 而UUID不会变.);
修改 /etc/fstab , 在最后增加以下内容, UUID替换为上一步查出来的, 第二个参数为挂载路径, 第三个参数为分区格式;
最后的三个参数
defaults,它代表包含了选项rw,suid,dev,exec,auto,nouser和 async;
dump。此处为1的话,表示要将整个里的内容备份;为0的话,表示不备份,现在很少用到dump这个工具,在这里一般选0。
pass。这里用来指定如何使用fsck来检查硬盘。如果这里填0,则不检查;挂载点为 / 的(即根分区),必须在这里填写1,其他的都不能填写1。如果有分区填写大于1的话,则在检查完根分区后,接着按填写的数字从小到大依次检查下去。同数字 的同时检查。
1 | UUID=xxxxxxxxxxxxxxx /media/Win10OS ntfs defaults 0 0 |
8 安装中文字体
1 | sudo apt update |



