Skip to content

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 Hubdocker pull ubuntu 即可下载最新的 Ubuntu 镜像

💿 系统安装

Ubuntu 各版本的 发布周期 如下

版本号 (代号)发布结束支持
24.04 LTS (Noble Numbat)Apr 2024Apr 2029
22.04.4 LTS (Jammy Jellyfish)Apr 2022Apr 2027
20.04.6 LTS (Focal Fossa)Apr 2020Apr 2025
18.04.6 LTS (Bionic Beaver)Apr 2018Apr 2023

TIP

Ubuntu 各架构的下载链接:

🖴 系统加载镜像

Ubuntu 24.04 启动菜单示意图

🖥️ Ubuntu 24.04 Desktop 的安装

选择语言

Ubuntu 24.04 安装器的语言选择示意图

可访问性」设置可以跳过

Ubuntu 24.04 安装器的可访问性设置示意图

键盘布局」选择默认

Ubuntu 24.04 安装器的键盘布局示意图

在最后安装过程中,可能会从原始软件源更新软件,如果网络不好,会导致安装过程极慢,因此建议在「连接到互联网」设置中,(建议)暂时不连接互联网,等安装完成进入系统后,(如果有必要)换源后再进行更新

Ubuntu 24.04 安装器的网络连接示意图

安装类型」中,选择下「优化您的计算机」,「自动安装」应该是 Ubuntu24.04新加入的功能,可以通过配置文件自动安装

Ubuntu 24.04 安装器的安装类型示意图

应用程序和更新」选择默认集合进行最小安装,需要的软件可以在安装完成后手动安装需求的软件

Ubuntu 24.04 安装器的应用程序选择示意图

优化您的计算机」中勾选全部选项,

Ubuntu 24.04 安装器的优化选项示意图

安装类型」选择手动分区

Ubuntu 24.04 安装器的磁盘设置示意图

接下来,是非常重要的分区设置

  1. 查看可用的安装空间,选择剩余空间中,点击左下角的「➕」键,新建分区

Ubuntu 24.04 安装器的手动分区示意图

  1. 分区的选择,需要根据电脑的存储配置进行分配

一般有这几种情况:

  • 只有一个硬盘,假定为「SSD」
  • 有两个硬盘「 SSD+ HDD」,如果是「SSD+SSD」,那么选择读写较快的硬盘为「SSD」,另一个慢速硬盘假定为「HDD」
  • 三个硬盘「 SSD+ HDD1+HDD2」,其中还是将最快速的硬盘作为「SSD」

根据上述的情况假设,可以安装如下情况进行分区(仅供参考):

分区格式分配盘备注
/bootExt4SSD内核及引导系统程序所需要的空间,一般预留 512/1024MB 即可
Swap交换空间SSD根据需求配置,也可以不给。因为 swap 可以后续自己创建(创建在SSD上)
/Ext4SSD剩余全部分配给根目录
/homeExt4HDD/HDD1全部分配
/optExt4HDD2全部分配,一般是第三方软件默认安装位置,也可以安装一些自己的软件
/opt/dataExt4HDD3如果还有硬盘,一般就是用来存放训练数据集

Ubuntu 24.04 安装器的分区规划示意图

  1. 完成分区后,Ubuntu 24.04会自动设置 /boot 引导分区,相比于前代更加方便了

Ubuntu 24.04 安装器的分区完成示意图

设置您的账户」中,设置用户名

Ubuntu 24.04 安装器的账户设置示意图

选择时区」,默认即可

Ubuntu 24.04 安装器的时区选择示意图

准备安装」确认安装类型,点击安装进入下一步

Ubuntu 24.04 安装器的安装确认示意图

安装」比较久,建议断掉所有网络连接(有线),避免从互联网下载或更新软件,增加安装时间,安装或者更新软件都可以在安装完成后进行

Ubuntu 24.04 安装器的安装进度示意图

安装完成」,点击「立即启动」,按照提示「Please remove the installation medium, then press ENTER:」,移除安装介质,按下回车键重启

Ubuntu 24.04 安装器的安装完成示意图

🧱 Ubuntu 24.04 Server 的安装

安装桌面

bash
sudo apt install -y ubuntu-desktop-minimal

安装locales

bash
sudo apt install -y language-pack-zh-hans
sudo update-locale LANG=zh_CN.UTF-8

重启 ,安装文字

bash
sudo apt install -y ttf-wqy-microhei ttf-wqy-zenhei xfonts-intl-chinese

🖥️ Ubuntu 22.04 Desktop 的安装

在系统加载镜像后,Ubuntu 22.04 会执行 Checking disks(检查完整性),然后进入安装流程

选择语言」英文或者中文均可

Ubuntu 22.04 安装器的语言选择示意图

键盘布局」选择默认

Ubuntu 22.04 安装器的键盘布局示意图

更新和其他软件」选择「最小安装」避免过多无用软件,取消勾选「安装Ubuntu时下载更新」加快安装,勾选☑️「为图形或无线。。。」确保驱动自动安装

Ubuntu 22.04 安装器的更新和其他软件示意图

安装类型」(推荐)选择「其他选项」确保清楚如何分区,参考 手动分区 进行分区

Ubuntu 22.04 安装器的安装类型示意图

手动分区

Ubuntu 22.04 安装器的新分区表确认示意图

手动分区

Ubuntu 22.04 安装器的手动分区空闲空间示意图

手动分区

Ubuntu 22.04 安装器的创建 boot 分区示意图

手动分区

Ubuntu 22.04 安装器的创建 swap 分区示意图

手动分区

Ubuntu 22.04 安装器的创建根分区示意图

手动分区

Ubuntu 22.04 安装器的分区完成示意图

选择时区」选择默认

Ubuntu 22.04 安装器的时区选择示意图

设置您的账户」设置用户名

Ubuntu 22.04 安装器的账户设置示意图

准备安装」确认安装类型,点击安装进入下一步

Ubuntu 22.04 安装器的安装进度示意图

💽 手动分区

🚀 初始化配置

🌐 更换软件源

TIP

事实上,更换软件源不是必须的,如果能稳定地连接到原始默认的源,那么是没有必要换源的,可能会获取不到某些软件;但是,如果连接不稳定的情况,那么换源是有必要的。

在换源之前应该先测试一下原始源的连接情况,如果连接状况良好,不需要换源,可以跳转至步骤 “更新软件包” 进行更新。

在更换软件源之前,需要先备份原始的软件源:

bash
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

更换软件源应该按照对应源的手册进行操作:

ubuntu 软件源软件源使用帮助ports 源使用帮助
清华大学开源软件镜像站(TUNA)x86, x86_64ARM(arm64, armhf)、PowerPC(ppc64el)、RISC-V(riscv64) 和 S390x 等
中国科学技术大学开源软件镜像(USTC)AMD64(x86_64), Intel x86arm64, armhf, PowerPC, ppc64el, s390x
上海交通大学 Linux 用户组 (SJTUG)ubuntu

可以从上述软件源中选择一个并按照「使用帮助」进行换源,更换软件源完成后,按照 “更新软件包” 步骤更新软件包。

📦 更新软件包

从软件源获取最新的软件包列表

bash
sudo apt update

更新(全部)已安装的软件包

bash
sudo apt upgrade -y

🛠️ 安装常用软件

安装基本的软件

  • net-tools:网络工具,可以通过 ifconfig 查看网络信息
  • openssh-server:SSH 服务端,安装后,可以通过 SSH 远程连接到该设备
  • git:版本控制工具,获取项目
  • curlwget:网络工具,可以通过网络下载文件
  • vimnano:文本编辑器

其中有一些软件已经默认安装了,安装命令如下:

bash
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 ,可以如下安装

shell
sudo apt install openssh-server -y

在登陆的时候,会自动将「本地私钥」和「服务器公钥」进行匹配,如果匹配成功,则可以免密登录。这在使用 VSCode 远程开发的时候非常有用,可以免去每次输入密码的麻烦。 (关于 VScode 远程开发可以参考 "Remote Development using SSH")

使用 ssh-copy-id 命令可以将「本地公钥」传输协议到远程服务器并存储在「公钥认证」文件中,例如:

shell
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 ,高亮部分需要自行修改:

查看完整代码
shell
# ========================================
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 管理网络配置。先确认当前网卡名称:

bash
ip addr

常见网卡名可能是 ens33enp0s31f6eth0 这类名字。然后查看现有 netplan 配置:

bash
ls /etc/netplan/
vim /etc/netplan/50-cloud-init.yaml

如果是通过 DHCP 自动获取地址,配置通常类似这样:

yaml
network:
  version: 2          # netplan 配置版本,通常保持 2 即可
  ethernets:
    enp0s31f6:        # 网卡名称,按 `ip addr` 查到的实际名字填写
      dhcp4: true     # 启用 IPv4 DHCP,由路由器/网关自动分配 IP、网关、DNS

如果需要配置静态 IP,可以改成:

yaml
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

修改完成后应用配置:

bash
netplan try
netplan apply

确认网络是否生效:

bash
ip addr
ip route
ping -c 4 223.5.5.5
ping -c 4 ubuntu.com

如果是云服务器,网络通常由云平台注入,不建议手动乱改 netplan,优先按云厂商控制台的网络配置为准。

✍️ 设置默认编辑器

如果你希望系统默认使用自己习惯的编辑器,也可以提前设置 editor

bash
update-alternatives --config editor   # 选择系统默认编辑器,供 crontab、visudo 等程序调用

如果只是临时指定,也可以直接设置环境变量:

bash
export EDITOR=vim   # CLI 程序默认使用的编辑器
export VISUAL=vim   # 一些程序会优先读取 VISUAL

🛌 防止自动休眠

如果这台 Ubuntu Server 会长期远程运行任务,尤其是笔记本、迷你主机或接显示器的桌面设备,建议关闭自动休眠。

先查看当前休眠相关配置:

bash
systemctl status sleep.target suspend.target hibernate.target hybrid-sleep.target

禁用休眠和待机

最直接的做法是屏蔽几个 systemd target:

bash
systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

这样系统就不会再响应常规的休眠请求。以后如果要恢复:

bash
systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target

笔记本合盖不休眠

如果是笔记本当服务器使用,还需要额外修改 logind 配置:

bash
vim /etc/systemd/logind.conf

建议至少确认下面几项:

ini
HandleLidSwitch=ignore                # 合上笔记本盖子时忽略,不进入休眠
HandleLidSwitchExternalPower=ignore   # 接通外部电源时合盖也忽略
HandleLidSwitchDocked=ignore          # 接了扩展坞/外接显示器时合盖也忽略
IdleAction=ignore                     # 系统空闲时不自动执行休眠、关机等动作

修改后重启服务:

bash
systemctl restart systemd-logind

WARNING

重启 systemd-logind 可能会影响当前图形会话;如果你正在本地桌面环境里操作,建议先保存工作。

验证合盖不休眠

可以先执行:

bash
loginctl show-session $(loginctl | awk '/tty|seat|pts/ {print $1; exit}') -p IdleHint

然后合盖或空闲一段时间后,再从另一台机器测试:

bash
ping <server-ip>
ssh <user>@<server-ip>

只要网络和 SSH 仍然正常,就说明休眠配置基本生效了。