Ubuntu 系统安装和初始化
🧰 环境准备
安装 Ubuntu 系统,可以在物理机上安装,也可以在虚拟机上安装
物理机安装
物理机安装,需要准备一个 U 盘,将系统镜像写入 U 盘,然后通过 U 盘启动安装,烧写系统的工具推荐使用 balenaEtcher,这是一个开源、跨平台的烧写工具
将镜像烧写到 U 盘之后,重启电脑,(一般需要长按F10/F12或者其他,不同电脑不一样)进入 BIOS 设置,将 U 盘作为启动项进入,即可引导进入安装界面
虚拟机安装
虚拟机安装,需要借助虚拟机软件,然后导入系统镜像进行安装,不同操作系统下的虚拟机软件有所不同
- 在 Windows 上安装
2024年5月14日,VMware 推出了桌面虚拟化平台的最新版本 Workstation Pro 17.5.2 和 Fusion Pro 13.5.2,并且宣布 Workstation 和 Fusion 对个人使用完全免费,企业许可转向订阅 (博通收购了 VMware 后干的一大好事)
可以参考上述的连接下载 VMware Workstation Pro 17.5.2 及以上版本的,需要注册一个 Broadcom 账号,下载时选择「VMware Workstation Pro for Personal Use (For Windows)」版本
- 在 macOS 上安装
在 Mac 上会推荐使用 UTM 虚拟机,可以在 App Store 上下载,也可以在 UTM 官网 下载
使用 Docker 启动
参考 ubuntu - Official Image | Docker Hub,docker pull ubuntu 即可下载最新的 Ubuntu 镜像
💿 系统安装
Ubuntu 各版本的 发布周期 如下
| 版本号 (代号) | 发布 | 结束支持 |
|---|---|---|
| 24.04 LTS (Noble Numbat) | Apr 2024 | Apr 2029 |
| 22.04.4 LTS (Jammy Jellyfish) | Apr 2022 | Apr 2027 |
| 20.04.6 LTS (Focal Fossa) | Apr 2020 | Apr 2025 |
| 18.04.6 LTS (Bionic Beaver) | Apr 2018 | Apr 2023 |
TIP
Ubuntu 各架构的下载链接:
- AMD64: These releases of Ubuntu are available
- ARM: ARM 架构除了树莓派之外的不提供桌面版下载,在 Ubuntu Server for ARM -> Alternative and previous releases ›
- 树莓派: Install Ubuntu on a Raspberry Pi | 在树莓派上安装Ubuntu
- RISC-V: Download Ubuntu for RISC-V Platforms
🖴 系统加载镜像
🖥️ Ubuntu 24.04 Desktop 的安装
「选择语言」
「可访问性」设置可以跳过
「键盘布局」选择默认
在最后安装过程中,可能会从原始软件源更新软件,如果网络不好,会导致安装过程极慢,因此建议在「连接到互联网」设置中,(建议)暂时不连接互联网,等安装完成进入系统后,(如果有必要)换源后再进行更新
「安装类型」中,选择下「优化您的计算机」,「自动安装」应该是 Ubuntu24.04新加入的功能,可以通过配置文件自动安装
「应用程序和更新」选择默认集合进行最小安装,需要的软件可以在安装完成后手动安装需求的软件
「优化您的计算机」中勾选全部选项,
「安装类型」选择手动分区
接下来,是非常重要的分区设置
- 查看可用的安装空间,选择剩余空间中,点击左下角的「➕」键,新建分区
- 分区的选择,需要根据电脑的存储配置进行分配
一般有这几种情况:
- 只有一个硬盘,假定为「SSD」
- 有两个硬盘「 SSD+ HDD」,如果是「SSD+SSD」,那么选择读写较快的硬盘为「SSD」,另一个慢速硬盘假定为「HDD」
- 三个硬盘「 SSD+ HDD1+HDD2」,其中还是将最快速的硬盘作为「SSD」
根据上述的情况假设,可以安装如下情况进行分区(仅供参考):
| 分区 | 格式 | 分配盘 | 备注 |
|---|---|---|---|
/boot | Ext4 | SSD | 内核及引导系统程序所需要的空间,一般预留 512/1024MB 即可 |
Swap | 交换空间 | SSD | 根据需求配置,也可以不给。因为 swap 可以后续自己创建(创建在SSD上) |
/ | Ext4 | SSD | 剩余全部分配给根目录 |
/home | Ext4 | HDD/HDD1 | 全部分配 |
/opt | Ext4 | HDD2 | 全部分配,一般是第三方软件默认安装位置,也可以安装一些自己的软件 |
/opt/data | Ext4 | HDD3 | 如果还有硬盘,一般就是用来存放训练数据集 |
- 完成分区后,Ubuntu 24.04会自动设置
/boot引导分区,相比于前代更加方便了
「设置您的账户」中,设置用户名
「选择时区」,默认即可
「准备安装」确认安装类型,点击安装进入下一步
「安装」比较久,建议断掉所有网络连接(有线),避免从互联网下载或更新软件,增加安装时间,安装或者更新软件都可以在安装完成后进行
「安装完成」,点击「立即启动」,按照提示「Please remove the installation medium, then press ENTER:」,移除安装介质,按下回车键重启
🧱 Ubuntu 24.04 Server 的安装
安装桌面
sudo apt install -y ubuntu-desktop-minimal安装locales
sudo apt install -y language-pack-zh-hans
sudo update-locale LANG=zh_CN.UTF-8重启 ,安装文字
sudo apt install -y ttf-wqy-microhei ttf-wqy-zenhei xfonts-intl-chinese🖥️ Ubuntu 22.04 Desktop 的安装
在系统加载镜像后,Ubuntu 22.04 会执行 Checking disks(检查完整性),然后进入安装流程
「选择语言」英文或者中文均可
「键盘布局」选择默认
「更新和其他软件」选择「最小安装」避免过多无用软件,取消勾选「安装Ubuntu时下载更新」加快安装,勾选☑️「为图形或无线。。。」确保驱动自动安装
「安装类型」(推荐)选择「其他选项」确保清楚如何分区,参考 手动分区 进行分区
「手动分区」
「手动分区」
「手动分区」
「手动分区」
「手动分区」
「手动分区」
「选择时区」选择默认
「设置您的账户」设置用户名
「准备安装」确认安装类型,点击安装进入下一步
💽 手动分区
🚀 初始化配置
🌐 更换软件源
TIP
事实上,更换软件源不是必须的,如果能稳定地连接到原始默认的源,那么是没有必要换源的,可能会获取不到某些软件;但是,如果连接不稳定的情况,那么换源是有必要的。
在换源之前应该先测试一下原始源的连接情况,如果连接状况良好,不需要换源,可以跳转至步骤 “更新软件包” 进行更新。
在更换软件源之前,需要先备份原始的软件源:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak更换软件源应该按照对应源的手册进行操作:
| ubuntu 软件源 | 软件源使用帮助 | ports 源使用帮助 |
|---|---|---|
| 清华大学开源软件镜像站(TUNA) | x86, x86_64 | ARM(arm64, armhf)、PowerPC(ppc64el)、RISC-V(riscv64) 和 S390x 等 |
| 中国科学技术大学开源软件镜像(USTC) | AMD64(x86_64), Intel x86 | arm64, armhf, PowerPC, ppc64el, s390x |
| 上海交通大学 Linux 用户组 (SJTUG) | ubuntu |
可以从上述软件源中选择一个并按照「使用帮助」进行换源,更换软件源完成后,按照 “更新软件包” 步骤更新软件包。
📦 更新软件包
从软件源获取最新的软件包列表
sudo apt update更新(全部)已安装的软件包
sudo apt upgrade -y🛠️ 安装常用软件
安装基本的软件
net-tools:网络工具,可以通过ifconfig查看网络信息openssh-server:SSH 服务端,安装后,可以通过 SSH 远程连接到该设备git:版本控制工具,获取项目curl和wget:网络工具,可以通过网络下载文件vim和nano:文本编辑器
其中有一些软件已经默认安装了,安装命令如下:
sudo apt install -y \
net-tools openssh-server git curl wget vim nano btop tree \
python3-dev python3-pip python3-venv🔐 配置 SSH
使用 SSH 登陆远程服务器前,需要确保远程服务器安装并且开启了 SSH 服务,一般来说 Linux 服务器会默认安装 openssh-server ,而一些桌面版的 Linux 系统可能没有安装 SSH 服务,需要手动安装。对于 Ubuntu ,可以如下安装
sudo apt install openssh-server -y在登陆的时候,会自动将「本地私钥」和「服务器公钥」进行匹配,如果匹配成功,则可以免密登录。这在使用 VSCode 远程开发的时候非常有用,可以免去每次输入密码的麻烦。 (关于 VScode 远程开发可以参考 "Remote Development using SSH")
使用 ssh-copy-id 命令可以将「本地公钥」传输协议到远程服务器并存储在「公钥认证」文件中,例如:
ssh-copy-id -i <identity_file> <user>@<hostname>-i指定「本地公钥」的路径,例如-i ~/.ssh/sshkey.pub<user>@<hostname>远程服务器的用户名和主机名,例如ubuntu@192.168.1.1-p如果远程服务器的 SSH 端口不是默认的 22 端口,可以通过-p <port>指定端口
(对于 win 系统,没有 ssh-copy-id 命令,)也可以手动将「本地公钥」复制到远程服务器的 ~/.ssh/authorized_keys 文件中 (如果不存在,需要手动创建) ,但是推荐使用 ssh-copy-id 命令(win 可以使用 git bash),因为该命令会自动创建文件,并自动设置权限
这里提供一个生成密钥并自动上传至服务器的脚本 ssh-keygen-auto.sh ,高亮部分需要自行修改:
查看完整代码
# ========================================
key_name="server" # 生成的密钥名称
username="ubuntu" # 服务器用户名,如果仅生成密钥,此项可忽略
server_ip="192.168.1.6" # 服务器 IP
port="22" # 服务器端口,默认 22
# ========================================
# 生成密钥文件路径,密钥名称为 sshkey-<key_name>
key_file="$HOME/.ssh/sshkey-${key_name}"
[ ! -d "$HOME/.ssh" ] && mkdir -p $HOME/.ssh
# 生成本地密钥
if [ -f ${key_file} ]; then
echo "密钥已存在: ${key_file}"
else
comment=${comment:-"${key_file}"} # 如果 comment 为空,则注释为 key_file
ssh-keygen -t rsa -f ${key_file} -C "${comment}" -N ""
fi
# 上传公钥 至 服务器
ssh-copy-id -i ${key_file}.pub -p ${port} ${username}@${server_ip}
echo ""
echo " SEE :${key_file}"
echo ""🌍 配置网络
Ubuntu Server 一般使用 netplan 管理网络配置。先确认当前网卡名称:
ip addr常见网卡名可能是 ens33、enp0s31f6、eth0 这类名字。然后查看现有 netplan 配置:
ls /etc/netplan/
vim /etc/netplan/50-cloud-init.yaml如果是通过 DHCP 自动获取地址,配置通常类似这样:
network:
version: 2 # netplan 配置版本,通常保持 2 即可
ethernets:
enp0s31f6: # 网卡名称,按 `ip addr` 查到的实际名字填写
dhcp4: true # 启用 IPv4 DHCP,由路由器/网关自动分配 IP、网关、DNS如果需要配置静态 IP,可以改成:
network:
version: 2 # netplan 配置版本
ethernets:
enp0s31f6: # 目标网卡名称
dhcp4: false # 关闭 DHCP,改为手动指定 IPv4 参数
addresses:
- 192.168.1.10/24 # 本机静态 IP 和子网掩码
routes:
- to: default # 默认路由,表示访问其他网段时走这里
via: 192.168.1.1 # 默认网关,一般就是路由器地址
nameservers:
addresses:
- 223.5.5.5 # DNS 服务器 1
- 1.1.1.1 # DNS 服务器 2修改完成后应用配置:
netplan try
netplan apply确认网络是否生效:
ip addr
ip route
ping -c 4 223.5.5.5
ping -c 4 ubuntu.com如果是云服务器,网络通常由云平台注入,不建议手动乱改 netplan,优先按云厂商控制台的网络配置为准。
✍️ 设置默认编辑器
如果你希望系统默认使用自己习惯的编辑器,也可以提前设置 editor:
update-alternatives --config editor # 选择系统默认编辑器,供 crontab、visudo 等程序调用如果只是临时指定,也可以直接设置环境变量:
export EDITOR=vim # CLI 程序默认使用的编辑器
export VISUAL=vim # 一些程序会优先读取 VISUAL🛌 防止自动休眠
如果这台 Ubuntu Server 会长期远程运行任务,尤其是笔记本、迷你主机或接显示器的桌面设备,建议关闭自动休眠。
先查看当前休眠相关配置:
systemctl status sleep.target suspend.target hibernate.target hybrid-sleep.target禁用休眠和待机
最直接的做法是屏蔽几个 systemd target:
systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target这样系统就不会再响应常规的休眠请求。以后如果要恢复:
systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target笔记本合盖不休眠
如果是笔记本当服务器使用,还需要额外修改 logind 配置:
vim /etc/systemd/logind.conf建议至少确认下面几项:
HandleLidSwitch=ignore # 合上笔记本盖子时忽略,不进入休眠
HandleLidSwitchExternalPower=ignore # 接通外部电源时合盖也忽略
HandleLidSwitchDocked=ignore # 接了扩展坞/外接显示器时合盖也忽略
IdleAction=ignore # 系统空闲时不自动执行休眠、关机等动作修改后重启服务:
systemctl restart systemd-logindWARNING
重启 systemd-logind 可能会影响当前图形会话;如果你正在本地桌面环境里操作,建议先保存工作。
验证合盖不休眠
可以先执行:
loginctl show-session $(loginctl | awk '/tty|seat|pts/ {print $1; exit}') -p IdleHint然后合盖或空闲一段时间后,再从另一台机器测试:
ping <server-ip>
ssh <user>@<server-ip>只要网络和 SSH 仍然正常,就说明休眠配置基本生效了。