从debootstrap手动安装Ubuntu系统


说明:这里安装的是ubuntu noble 24.04 LTS。作者水平有限,不足之处,敬请指正。

1 启动盘制作

  1. 登录Ubuntu官方站点(中文)下载Ubuntu 24.04.3 LTS的iso镜像。
  2. 用ventoy制作安装盘,并放入上述镜像。
    注意:制作安装盘的U盘,需要质量比较好的,否则容易出现坏块,不能引导等各种意外情况。

2 引导进入试用环境

  1. 通过安装盘进入该系统。
  2. 你想对Ubuntu做什么?这个界面,选择试用Ubuntu。这样就会使用内存中加载的Ubuntu系统。这个驻留在内存中的系统下称试用环境
    注意:这个界面之前的步骤,按照中文用户的习惯选择即可。

3 通过试用环境安装新系统到tty界面


前提和假设

  1. 主板引导方式采用的是UEFI,磁盘用的GPT分区模式
  2. 假设只有一块磁盘为 /dev/sda,且为固态硬盘,全部由用户使用

3.1 创建安装新系统的目标分区(试用环境中操作)

# 1. 查看磁盘情况
lsblk -f
 
# 2. 对磁盘进行划分,划分为三个分区:分别是EFI分区(vfat),swap分区,主分区(Btrfs)
sudo cfdisk /dev/sda # 根据里面的提示进行划分
## 一般可以这样
### /dev/sda1为EFI分区,大小300M
### /dev/sda2为swap分区,大小与内存相当
### /dev/sda3为主分区,文件格式为btrfs

# 3. 将EFI分区,格式化为vfat文件格式(如果已经存在可跳过)
sudo mkfs.vfat -F 32 /dev/sda1

# 4. 格式化swap分区(如果已经存在可以跳过)
## 以后可以用swapon来启用,也可以用fstab设置来启用
sudo mkswap /dev/sda2 

# 5. 将主分区格式化为btrfs文件格式
sudo mkfs.btrfs -f [-L 'volume_label'] /dev/sda3 

3.2 创建主分区的子卷(试用环境中操作)

# 创建两个子卷,用来挂在根目录和var目录

# 1. 挂载主分区到/mnt
sudo mount /dev/sda3 /mnt
## 也可采用 mount -o subvolid=0 /dev/sda3 /mnt
## 或 mount -o subvolid=5 /dev/sda3 /mnt

# 2. 进入/mnt进行子卷创建(这里我只创建两个子卷,@ -- / ;@var -- /var 。 你也可以根据自身习惯创建)
cd /mnt
sudo btrfs subvolume create @
sudo btrfs subvolue create @var

# 3. 退出/mnt目录
cd 

# 4. 卸载主分区
sudo umount /mnt 

3.3 挂载主分区子卷(试用环境中操作)

# 挂载子卷
# 1. 挂载@子卷为根子卷,因为目前还没有chroot因此就是/mnt
## 针对固态硬盘推荐将中括号中的内容一起选,如果是机械硬盘那么不要选中括号中的内容
sudo mount -o subvol=@,noatime,compress=zstd:3,space_cache=v2[,ssd,discard=async] /dev/sda3 /mnt

# 2. 在已经挂载的根子卷下创建var目录
sudo mkdir -p /mnt/var

# 3. 挂在@var子卷
sudo mount -o subvol=@var,noatime,compress=zstd:3,space_cache=v2[,ssd,discard=async] /dev/sda3 /mnt/var

3.4 用debootstrap安装基础环境(试用环境中操作)

# 1. 安装debootstrap
sudo apt install debootstrap

# 2. 通过debootstrap安装noble环境;包括包括目录,包管理器等
sudo debootstrap --variant=minbase noble /mnt [http://archive.ubuntu.com/ubuntu/]

参考

  1. ubuntu系统debootstrap的使用
  2. Debootstrap 教程

3.5 挂载试用环境的信息到/mnt(试用环境中操作)

# 挂载试用环境中的信息到/mnt(因为chroot后所有执行的后台还是适用环境)
sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /run /mnt/run

3.6 chroot到新系统(即/mnt环境)

sudo chroot /mnt

3.7 chroot环境下安装内核和必要组件chroot环境中操作)

# 1. 安装vim,安装一个我熟悉的编辑器(你也可根据自己喜好安装)
apt install vim

# 2. 编辑软件源(官方)
vim /etc/apt/sources.list
# 将里面的内容设置为
# -----------------------------------------------------------------------------------
deb http://archive.ubuntu.com/ubuntu/ noble main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ noble-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ noble-security main restricted universe multiverse
# -----------------------------------------------------------------------------------

# 3. 更新数据
apt update
apt upgrade

# 4. 安装基本元包
apt install ubuntu-standard

# 5. 安装内核
apt install linux-generic

# 6. 安装 TTY 登录相关组件
apt install systemd-sysv login console-setup kbd dbus

# 7. 安装其他必要组件
apt install locales sudo adduser btrfs-progs [apt-utils]
apt install iproute2 iputils network-manager [net-tools]  

# 8. 安装引导加载程序
apt remove os-prober # 移除这个包,以免去查看其他操作系统
apt install grub-efi-amd64  # UEFI

3.8 chroot环境下的一些基础配置(chroot环境中操作)

# 1. 进行语言配置
## 不推荐使用 dpkg-reconfigure locales,因为使用这个好像没有配置成功
# 1.1 配置系统字符集
vim /etc/locale.gen
## 将 #en_US.UTF-8 UTF-8,前面的#去掉
# 1.2 配置系统语言
vim /etc/default/locale
## 在里面添加一行为LANG=en_US.UTF-8(只此一行)
# 1.3 使配置生效
locale-gen

# 2. 进行计算机名的配置
# 2.1 添加计算机名
vim /etc/hostname
##在里面添加你的计算机名 只此一行
# 2.2 将网络回环到这个计算机名
vim /etc/hosts
## 添加或修改127.0.1.1开头的行,使得后面的计算机名为/etc/hostname中的名字
## 127.0.0.1 你的计算机名

# 3. 用户设置(建议在交互环境中配置)
# 3.1 配置root用户密码(因为本来就在root环境,因此直接使用passwd)
passwd root
# 3.2 添加新用户,并交互的配置相关选项
adduser your_username # 交互式添加新用户,交互方式下会要求你输入密码。其命令行设置,请自行搜索
usermod -aG sudo your_username #将用户放入sudo组,这样才有超级管理员权限

# 4. 确保getty服务这是systemd中的工具(可选,因为我没有进行也可以登录tty界面)
systemctl enable getty@tty1.service

3.9 chroot环境下配置fstab并添加启动项(chroot环境中操作)

# 1. 挂载EFI分区
mkdir -p /boot/efi
mount /dev/sda1 /boot/efi

# 2. 编辑fstab
vim /etc/fstab
# 将里面修改为如下内容
# -----------------------------------------------------------------------------------
# root
UUID=[/dev/sda3的UUID] / btrfs subvol=@,noatime,compress=zstd:3,space_cache=v2,[ssd,discard=async] 0 1
# var
UUID=[/dev/sda3的UUID] /var btrfs subvol=@var,noatime,compress=zstd:3,space_cache=v2,[ssd,discard=async] 0 2
# EFI
UUID=[/dev/sda1的UUID] /boot/efi vfat defaults 0 2
# swap
UUID=[/dev/sda2的UUID] none sw[或defaults] 0 0
# -----------------------------------------------------------------------------------

# 3. 往EFI分区中添加启动文件
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu

# 4. 更新/boot/grub中的grub.cfg文件
update-grub

3.10 回到试用环境修改UEFI固件信息试用环境中操作)

# 1. 回到适用环境
exit

# 2. 添加UEFI启动项
sudo efibootmgr -c -d /dev/sda -p 1 -L "ubuntu" -l "\EFI\ubuntu\grubx64.efi"

# 如果需要查询、删除、排序等,用下面这些命令操作
## sudo efibootmgr [-v] # 查询 UEFI 信息
## sudo efibootmgr -b 0001 -B # 删除某个启动项
## sudo efibootmgr -o 0000,0002,0001 # 修改启动项顺序
## sudo efibootmgr -n 0002 # 设置单次启动项,下次从这一项启动

3.11 重启进入tty界面即新安装的系统(试用环境中操作)

reboot

4 在tty界面中安装plasma + kde桌面环境

这里已经是一个命令行界面(tty界面)的ubuntu系统了。如果不需要图形界面安装到这里就基本结束了。

不过由于系统默认设置的关系,这个系统的网络还不能使用。这里假设有计算机有物理上的有线网卡和有线网络,只是还没有配置通畅。

4.1 配置tty界面的有线网络

# 可能刚开始有线网络不能使用
# 1. 查看是否有网络(如果ping通了就有网络)
ping baidu.com

# 否则
# 2. 查看所有网络接口
ip link show

# 2. 查看接口状态
ip addr show

# 3. 故障排除
## 如果存在没有ip地址,即有线网卡没有启用的状态试用如下方法排除,假设有线网卡是eth0

# 如果有线网络的接口是 DOWN 状态(假设有线是eth0),可以用如下命令开启
sudo ip link set etho up
## 修改如下配置文件
sudo vim /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf
### 在其排除项目中添加 except:type:ethernet

# 查看有线网卡的管理状态
nmcli device status # 如果显示 unmanaged ,表示这个接口没有被管理
## 没有被管理时修改如下配置文件
sudo vim /etc/NetworkManager/NetworkManager.conf
### 将里面的部分内容进行修改
[ifupdown]
managed=false  ---->  managed=true

# 4. 启动 NetworkManager
sudo systemctl enable NetworkManager --now
## 如果不行
sudo systemctl restart NetworkManager
## 如果还不行,那么重启一下试试
## 如果,如果还不行,那么根据错误自行搜索解决

4.2 安装kde-standard桌面

(包含x11 + plasma + kde标准组件,noble至少是这样的,不同的版本可能不同)

# 1. 更新系统
sudo apt update
sudo apt upgrade

# 2. 安装标准桌面(kde原生的plasma桌面,你可可以根据个人喜好更改,比如安装kubuntu-desktop)
sudo apt install kde-standard

4.4 安装并启用sddm登录器

sudo apt sddm
sudo systemctl enable sddm

# 进行完这些理论上就可以了,不过此时sddm的风格默认的是maya风格,非常原始,而且注销后可能假黑屏,然后不能跳出登陆界面,因此安装plasma微风风格解决
sudo apt install [--reinstall] sddm-theme-breeze
## 如果还有其他问题,搜索解决

4.5 重启并进入desktop环境

reboot

5 在 desktop 界面中配置系统

5.1 通过kde的系统设置,设置时区

可以搜索region来定位到时区

5.2 配置语言为中文

* 方法同 3.81 中的方法
** 只是把字符集改为zh_CN.UTF-8 UTF-8;语言改为LANG=zh_CN.UTF-8
** 而后在kde系统设置中将语言选择为“中文简体”。可搜索language定位到该选项
*** 注意:需要重启才能生效

# 如果要使得汉化更加彻底可以选装language-pack-zh-hans包
sudo apt install language-pack-zh-hans

5.3 安装配置fcitx5以及中文输入法

# 1. 安装框架和中文插件
sudo apt install fcitx5 fcitx5-chinese-addons

# 2. 安装fcitx的其他模块
sudo apt install fcitx5-frontend-* fcitx5-config-qt

# 安装之后一般就可以使用了,如果不能使用尝试重启一下看看
# 如果还不能使用右键点击右下角的键盘图标,选择里面的configur选项配置
# 如果还不行,在系统设置中试试
# 如果还不行,那么自行搜索解决

5.4 据说的其他一些可行的配置方法(没有亲测)

# 重新配置 locales
dpkg-reconfigure locales

# 重新配置时区
dpkg-reconfigure tzdata

# 重新配置键盘布局
dpkg-reconfigure keyboard-configuration

# 重新配置任何已安装的包
dpkg-reconfigure <package-name>

6 安装Nvidia显卡驱动

我的显卡是3060ti

6.1 先禁用 Nouveau 驱动

(因为系统可能默认开启的是这个驱动,我只是禁用了,但不知道是否必须)

# 1. 编辑或创建nouveau的黑名单
sudo vim /etc/modprobe.d/blacklist-nouveau.conf
## 在其中添加如下两行
blacklist nouveau
options nouveau modeset=0

# 2. 更新初始化ramfs并重启
sudo update-initramfs -u
sudo reboot

# 3. 验证是否已禁用(重启后执行)
lsmod | grep nouveau
## 如果没有输出,则表明已成功禁用

6.2 安装Nvidia驱动(据说是闭源驱动)

# 1. 安装驱动并重启
sudo apt install nvidia-driver-535
## 或者让系统自动选择安装驱动
# sudo ubuntu-drivers autoinstall
sudo reboot

# 2. 重启后用命令查看是否安装成功
nvidia-smi
## 如果安装成功,这个命令会输出一个表格,显示你的GPU型号、驱动版本、温度、性能状态等信息。

7 应用软件安装

7.1 安装google-chrome

# 1. 下载
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

# 2. 安装
sudo apt install ./google-chrome-stable_current_amd64.deb

7.2 安装wechat、wps

这些都是从官网下载deb包,然后安装

7.3 安装logseq

从网站下载AppImage,而后运行,运行时可能需要加上--no-sandbox选项,如果缺少某些依赖那么就安装

其他应用软件安装请自行研究

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐