> For the complete documentation index, see [llms.txt](https://hanxu.gitbook.io/blogs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hanxu.gitbook.io/blogs/linux/linuxinstall-xiang-xi-de-ubuntu-he-win-shuang-xi-tong-an-zhuang-zhi-nan.md).

# 【Linux\_install】详细的Ubuntu和win双系统安装指南

@[TOC](https://github.com/UnderTurrets/notes/blob/master/Linux/文章目录/README.md)

***

本文介绍了在windows环境下从零开始安装Ubuntu系统的方法，并提供了卸载Ubuntu系统的步骤，还介绍了一些在Ubuntu系统下查找、安装、卸载软件的方法。

## 1.前期准备

### 1.1 制作启动盘

先下载一下Ubuntu系统映像。官网下载得比较慢，可以去其他镜像源网站下载比如清华源。下载好的镜像是`iso`后缀。

随便准备一个硬盘（U盘），不需要用太好的硬盘，而且制作启动盘之后硬盘里面所有的内容都会销毁。然后用一些硬盘制作工具烧录进去即可。这里推荐`rufus`。下面演示一下操作：

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_install_bootdisk.png)

选择好映像文件之后**什么都不用动**，一路确定之后就是等待烧录完成。由于rufus不会自动弹出烧录完成的弹窗，有的小白可能不知道烧录完成了，这里我们只要等**状态进度条跑满就好了**。

### 1.2关闭快速启动、安全启动、bitlocker

#### 1.2.1 原因

* 在安装时，我们要进入的是启动盘。如果不关闭快速启动，计算机就会快速地加载Windows系统，进不去启动盘。
* 如果不关闭安全启动，计算机可能会拒绝加载不受信任的外部设备，从而无法进入启动盘。
* 如果不关闭bitlocker，外部设盘就无法对硬盘进行写入，也就无法安装。这个关闭比较容易，请自行查阅资料，此处就不具体讲解了。

#### 1.2.2 进入BIOS

进入主板的BIOS界面可以关闭。BIOS是英文"Basic Input Output System"的缩略词，直译过来后中文名称就是"基本输入输出系统"。在IBM PC兼容系统上，是一种业界标准的固件接口。BIOS是个人电脑启动时加载的第一个软件，是一组固化到计算机内主板上一个ROM芯片上的程序，它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序，它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。此外，BIOS还向作业系统提供一些系统参数。系统硬件的变化是由BIOS隐藏，程序使用BIOS功能而不是直接控制硬件。现代作业系统会忽略BIOS提供的抽象层并直接控制硬件组件。

这里列举几种进入BIOS界面的方法。

**shell命令行进入BIOS**

首先查询一下`shutdown.exe`指令的用法

```shell
PS C:\Users\Xu Han> shutdown.exe
用法: C:\Windows\system32\shutdown.exe [/i | /l | /s | /sg | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/soft] [/fw] [/f]
    [/m \\computer][/t xxx][/d [p|u:]xx:yy [/c "comment"]]

    没有参数   显示帮助。这与键入 /? 是一样的。
    /?         显示帮助。这与不键入任何选项是一样的。
    /i         显示图形用户界面(GUI)。
               这必须是第一个选项。
    /l         注销。这不能与 /m 或 /d 选项一起使用。
    /s         关闭计算机。
    /sg        关闭计算机。在下一次启动时，如果启用了
               自动重启登录，则将自动登录并锁定上次交互用户。
               登录后，重启任何已注册的应用程序。
    /r         完全关闭并重启计算机。
    /g         完全关闭并重启计算机。重新启动系统后，
               如果启用了自动重启登录，则将自动登录并
               锁定上次交互用户。
               登录后，重启任何已注册的应用程序。
    /a         中止系统关闭。
               这只能在超时期间使用。
               与 /fw 结合使用，以清除任何未完成的至固件的引导。
    /p         关闭本地计算机，没有超时或警告。
               可以与 /d 和 /f 选项一起使用。
    /h         休眠本地计算机。
               可以与 /f 选项一起使用。
    /hybrid    执行计算机关闭并进行准备以快速启动。
               必须与 /s 选项一起使用。
    /fw        与关闭选项结合使用，使下次启动转到
               固件用户界面。
    /e         记录计算机意外关闭的原因。
    /o         转到高级启动选项菜单并重新启动计算机。
               必须与 /r 选项一起使用。
    /m \\computer 指定目标计算机。
    /t xxx     将关闭前的超时时间设置为 xxx 秒。
               有效范围是 0-315360000 (10 年)，默认值为 30。
               如果超时期限大于 0，则 /f 参数为
               /f 参数。
    /c "comment" 注释重启或关闭的原因。
               最多允许 512 个字符。
    /f         强制关闭正在运行的应用程序而不事先警告用户。
               当大于 0 的值为
 时，隐含 /f 参数               则默示为 /f 参数。
    /d [p|u:]xx:yy  提供重新启动或关闭的原因。
               p 指示重启或关闭是计划内的。
               u 指示原因是用户定义的。
               如果未指定 p 和 u，则
重新启动或关闭               是计划外的。
               xx 是主要原因编号(小于 256 的正整数)。
               yy 是次要原因编号(小于 65536 的正整数)。

此计算机上的原因:
(E = 预期 U = 意外 P = 计划内，C = 自定义)
类别    主要    次要    标题

 U      0       0       其他(计划外)
E       0       0       其他(计划外)
E P     0       0       其他(计划内)
 U      0       5       其他故障: 系统没有反应
E       1       1       硬件: 维护(计划外)
E P     1       1       硬件: 维护(计划内)
E       1       2       硬件: 安装(计划外)
E P     1       2       硬件: 安装(计划内)
E       2       2       操作系统: 恢复(计划外)
E P     2       2       操作系统: 恢复(计划内)
  P     2       3       操作系统: 升级(计划内)
E       2       4       操作系统: 重新配置(计划外)
E P     2       4       操作系统: 重新配置(计划内)
  P     2       16      操作系统: Service Pack (计划内)
        2       17      操作系统: 热修补(计划外)
  P     2       17      操作系统: 热修补(计划内)
        2       18      操作系统: 安全修补(计划外)
  P     2       18      操作系统: 安全修补(计划内)
E       4       1       应用程序: 维护(计划外)
E P     4       1       应用程序: 维护(计划内)
E P     4       2       应用程序: 安装(计划内)
E       4       5       应用程序: 没有反应
E       4       6       应用程序: 不稳定
 U      5       15      系统故障: 停止错误
 U      5       19      安全问题(计划外)
E       5       19      安全问题(计划外)
E P     5       19      安全问题(计划内)
E       5       20      网络连接丢失(计划外)
 U      6       11      电源故障: 电线被拔掉
 U      6       12      电源故障: 环境
  P     7       0       旧版 API 关机
```

然后我们就知道用如下命令就可以`高级启动`

```shell
shutdown.exe -o -r -t 0
```

通过高级启动，然后选择`疑难解答`-`高级选项`-`UEFI固件设置`，就可以进入BIOS了

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_install_winReboot2.jpeg)

**windows设置中高级启动**

如图，高级启动后同上。

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_install_winReboot1.png)

**在开机时狂按某个键进入BIOS**

这个按键根据机型有所不同，可以自行查阅，以下是一些常用的：

| 机型                                             | 方式                                      |
| ---------------------------------------------- | --------------------------------------- |
| 华硕Asus、神舟Hasee、小米、海尔、明基、技嘉、方正、清华同方、雷神、未来人类、外星人 | 启动时按F2                                  |
| 戴尔dell                                         | 启动和重新启动时按F2                             |
| 微星msi                                          | 启动时按Delete                              |
| 惠普hp                                           | 启动和重新启动时按F2或者F10，或者先按ESC再按F10           |
| ibm/thinkpad                                   | 冷开机按F1，部分新型号可以在重新启动时启动按F1，少数机型是Fn+F1或F2 |

#### 1.2.3 关闭`Fast boot`和`Secure boot`

这个根据主板BIOS的图形化界面有所不同，但多半都在`Boot`这一栏目中，以下列举一下华硕的：

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_install_bios1.png)

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_install_bios2.png)

### 1.3 划分磁盘空间

在`磁盘管理`中，划出一块分区用作Ubuntu的空间即可，不需要分配。下图我划出了100GB。

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_install_diskspace.png)

这里建议留出充足的空间，否则后续空间不足扩容将极为麻烦。**因为Linux在大多数情况下不能向左扩容。**

* 查看目前的虚拟内存大小

等会安装Ubuntu的时候，可能会需要手动分区，需要设置虚拟内存的大小，这里可以先查看win系统下的虚拟内存大小作为参考：

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_install_virtualMemory.png)

## 2.开始安装

### 2.1 使用启动盘启动

#### 2.1.1 法一：BIOS调整启动顺序

关机进入BIOS，在Boot那一栏选择启动顺序，找到你的启动盘的名字，调整到最优先即可。

#### 2.1.2 法二：使用windows高级启动直接进入启动盘

高级启动后，点击`使用设备`即可。

### 2.2 语言

语言方面，对于自己英语有信心的可以选择英语。

### 2.3 联网

暂时先不要联网，不然等会会自动下载，安装会很慢。

选择`最小安装`或者`正常安装`都是可以的。

### 2.4 **分区**

#### 2.4.1 与windows共存

网上很多教程都在极力劝说不要选择第一个选项`与windows共存`，实际上，Ubuntu会自动检测空白的分区（就是我刚刚分配的100GB），并不会覆盖windows的文件数据。

在下图中，nvme1是我的第二块硬盘，我在windows下使用了nvme1p1分区，而Ubuntu很完美地避开了这一块区域，自动做出了相应的更改。

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_install_diskpart.jpeg)

`nvme`的意思是我的这块硬盘是nvme固态硬盘。`p1`的意思是`partition 1`，即第一分区。

### 2.5 合并分区

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_install_diskpart.jpeg)

其实，**这里Ubuntu自动分出的nvme1n1p2作为ESP分区也是没必要的**。因为我们是双系统，后续还是用grub启动，不需要再划分EFI系统启动分区。因此，后续我们可以把这个扇区合并到根目录下。

合并的方法比较多，无论是win系统还是Linux，都有图形化的界面，这里就不演示了。

而且，如果不合并这个ESP分区的话，我们是没有办法再进行扩容的。**因为硬盘只能合并相邻的扇区。** nvme1n1p2阻隔了nvme1n1p1和nvme1n1p3，而我们在扩容时希望把nvme1n1p1的空间划出一些给nvme1n1p3，这是一种向左扩容的操作，比较麻烦，请看[笔者的另一篇教程](https://hanxu.gitbook.io/blogs/linux/linux-fen-qu-xiang-zuo-kuo-rong-de-fang-fa)。

#### 2.4.2 如果要手动分区...

这里建议分三个区：

1. 划出256MB用于 `EFI系统分区`，逻辑分区，并设置`安装启动引导器的设备`为你刚刚设置的`EFI系统分区`的分区。这里**千万不要**让`安装启动引导器的设备`和`你的windows系统的efi启动分区`重合，否则你的两个系统都启动不了！

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_install_mannualdisk1.jpeg)

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_install_mannualdisk2.jpeg)

2. 划出一些空间用于`交换空间`，逻辑分区，作为虚拟内存使用。分配的大小可以使用刚才在windows中查看的`推荐`。

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_install_mannualdisk3.jpeg)

3. 其他所有空间都用于默认的`Ext4日志文件系统`，主分区，挂载点`/`。

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_install_mannualdisk4.jpeg)

4. 对于其他诸如`/usr`、`/home`这样的挂载点，**是可以不手动选择的**。这样的话，`/home`、`/usr`这些目录就会自动与`/`根目录共享一块磁盘的分区，这也是符合Windows用户的文件树方式。

**主分区和逻辑分区**

这里稍微解释一下主分区和逻辑分区的区别。**对于一块硬盘来说，主分区只能有4个。** 因此，我们最好把交换空间设置为逻辑分区。

在windows下，文件树是基于硬盘的分区的，windows系统会自动给硬盘的分区分配盘符。下面，我的C盘就是硬盘0的第0分区：

```shell
DISKPART> list disk

  磁盘 ###  状态           大小     可用     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  磁盘 0    联机              476 GB  1024 KB        *
  磁盘 1    联机              953 GB  1024 KB

DISKPART> sel disk 0

磁盘 0 现在是所选磁盘。

DISKPART> list partition

  卷 ###      LTR  标签         FS     类型        大小     状态       信息
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  卷     0     C   这很C          NTFS   磁盘分区         453 GB  正常         启动
  卷     1         RESTORE      NTFS   磁盘分区          22 GB  正常
  卷     2     Z   SYSTEM       FAT32  磁盘分区         260 MB  正常         系统
  卷     3         RECOVERY     NTFS   磁盘分区         750 MB  正常         已隐藏
  卷     4         MYASUS       FAT32  磁盘分区         200 MB  正常         已隐藏
  卷     5     D                NTFS   磁盘分区         953 GB  正常

DISKPART>
```

而我C盘中的所有的目录，都在磁盘0的分区0之内，不可能在其他分区。

但是在Linux中，**同一目录下的两个子目录可以分管磁盘的两个分区**。比方说，`/home`可以独占磁盘1的第1分区，`/usr`也可以独占磁盘1的第2分区，但`/home`和`/usr`都是在根目录`/`之下的。

## 3.完全卸载Ubuntu

### 3.1 删除Ubuntu分区

在`磁盘管理`中，Ubuntu作为系统分区，是无法直接在图形化界面中操作的，如图中的win分区一样：

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_install_del1.png)

因此需要使用`diskpart`工具去删除之前建立的分区：

以`管理员权限`打开shell，列出所有磁盘（如果您有多个磁盘的话）并选中存放了Ubuntu的磁盘，然后，列出所有卷并逐一选中Ubuntu的分区删除。

```shell
DISKPART> list disk  //列出所有磁盘
DISKPART> sel disk 1  //选中目标磁盘
DISKPART> list partition  //列出磁盘所有分区
DISKPART> sel partition2  //选中目标分区
DISKPART> delete partition override  //删除目标分区
```

然后就可以在磁盘管理中直接合并了，刚刚划出的100GB又回来了！

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_install_del2.png)

### 3.2 删除Ubuntu残余的efi引导（切记）

如果你忘记了删除Ubuntu残余的efi引导就关机，那么可以直接跳到[此处](https://hanxu.gitbook.io/blogs/linux/linuxgrub-ming-ling-xing-yin-dao-jin-ru-windows-xi-tong)了，你的windows系统已经进不去了！

以`管理员权限`打开shell，找到并选中`SYSTEM`分区，分配卷标，然后删除`Ubuntu`。

```shell
PS C:\Users\Xu Han> diskpart.exe

Microsoft DiskPart 版本 10.0.22621.1

Copyright (C) Microsoft Corporation.
在计算机上: LAPTOP-3V5JAOO8

DISKPART> sel disk 0

磁盘 0 现在是所选磁盘。

DISKPART> list vol

  卷 ###      LTR  标签         FS     类型        大小     状态       信息
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  卷     0     C   这很C          NTFS   磁盘分区         453 GB  正常         启动
  卷     1         RESTORE      NTFS   磁盘分区          22 GB  正常
  卷     2         SYSTEM       FAT32  磁盘分区         260 MB  正常         系统
  卷     3         RECOVERY     NTFS   磁盘分区         750 MB  正常         已隐藏
  卷     4         MYASUS       FAT32  磁盘分区         200 MB  正常         已隐藏
  卷     5     D                NTFS   磁盘分区         853 GB  正常


DISKPART> sel vol 2

卷 2 是所选卷。

DISKPART> assign letter=Z

DiskPart 成功地分配了驱动器号或装载点。
```

分配完卷标后，**再次用管理员权限打开shell**，然后进入刚刚我们分配的卷标，删除即可：

```shell
PS C:\Users\Xu Han> cd Z:
PS Z:\> ls


    目录: Z:\


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----         2024/1/18     22:59                EFI


PS Z:\> cd .\EFI
PS Z:\EFI> ls


    目录: Z:\EFI


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----         2022/6/10     23:32                Microsoft
d-----         2024/1/18     22:59                Boot
d-----         2024/1/18     22:59                ubuntu


PS Z:\EFI> rmdir .\ubuntu\

确认
Z:\EFI\ubuntu\ 处的项具有子项，并且未指定 Recurse 参数。如果继续，所有子项均将随该项删除。是否确实要继续?
[Y] 是(Y)  [A] 全是(A)  [N] 否(N)  [L] 全否(L)  [S] 暂停(S)  [?] 帮助 (默认值为“Y”): Y
```

这里千万别删错了，要是把`Microsoft`删了，**win系统就无法启动了！**

## 4.基础环境配置

### 4.1 换源以及更新

如果不进行换源，**使用`apt`下载的速度将变得令人难以忍受的慢**。

目前，换源完全只需要鼠标点点点就可以完成了，打开应用列表里的`Software & Updates`，选择中国的镜像源即可，我这里选的`mirror.nju.edu.cn`是南京大学的。

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_install_changeSource.png)

换好源之后输入以下两个指令去更新和升级：

```shell
sudo apt update
sudo apt upgrade
```

### 4.2 deb类应用安装

使用`dpkg`命令即可。qq，网盘在官网下载的都是deb类文件。下面以qq为例子，官网下载好文件，终端输入指令即可，别忘记加上`--install`或者`-i`。

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_install_debinstall.png)

### 4.3 软件包管理

#### 修复依赖关系（经常用到）

```shell
sudo apt -f install
```

#### 查看安装历史

* `/var/log/apt/history.log`保存apt安装的历史记录。
* `/var/log/dpkg.log`保存dpkg安装的历史记录。

#### 关键字查找软件包

* 查找软件源里所有的

```shell
sudo apt list | grep -i <keyword>
```

* 查找本机已经安装的

```shell
sudo apt list  --installed | grep -i <keyword>
```

#### 卸载

* 仅卸载

```shell
sudo apt remove <name of software>
```

以卸载qq为例：

```shell
sudo apt remove linuxqq
```

* 卸载并删除配置文件

```shell
sudo apt purge <name of software>
```

#### 清理

* 自动删除不再需要的软件包

```shell
sudo apt autoclean
```

* 删除已经安装过的软件包

```shell
sudo apt clean
```

* 自动删除不再需要的依赖

```shell
sudo apt autoremove
```
