因为智慧交通的课上要用apollo平台来写课程作业,而平台又需要linux系统运行。虽然也可以用虚拟机在自己电脑里跑,但想到后面很多事情可能也会用到linux,索性决定在主机上安装一个ubuntu系统。

第一次被玩弄

安装ubuntu可以参考官网的安装方式,说实话,简洁易懂,因为教程是在一个正常的,干净的电脑上安装的。按照它的步骤,我到了烧录iso文件到usb上的这一步。

不知道是我没仔细看文档,没人告诉我会把USB格式化清除原有数据!

我惊出一身冷汗,害怕师兄的U盘上会不会有什么机密文件就这么被我给格式化了。还好师兄说没有关系,此为第一次被玩弄。

如果有人要烧录U盘,最好用个空的。。。。最好用自己的。。。。就算数据没丢,但是文件读取方式变了,怎么改文件系统都不知道。

在用 USB 烧录 Ubuntu 的 ISO 文件后,你可能会遇到以下两个常见问题:

  1. USB 在 Windows 上无法打开,提示文件系统不对或未格式化
  2. 重新使用 USB 时需要格式化和清除数据

这些问题通常是由于使用了特定的工具(如 RufusEtcher(没错就是你)、UNetbootin 等)将 Ubuntu 的 ISO 文件烧录到 USB 上时,修改了 USB 的分区表和文件系统导致的。为了更好地理解这些现象,我们需要先了解在 Linux 发行版 ISO 烧录过程中 USB 是如何被处理的。

问题原因分析

1. 烧录过程如何修改了 USB 的分区表和文件系统?

在创建 Ubuntu 启动盘时,烧录工具通常会对 USB 进行以下操作:

  • 直接写入 ISO 镜像内容: 烧录工具并不是简单地将 ISO 文件拷贝到 USB 中,而是会将 ISO 镜像的底层文件系统结构、启动扇区(boot sector)以及分区信息直接写入到 USB。这样一来,USB 就被改造成了一个类似光盘格式的设备。
  • 创建混合分区(Hybrid Partition Table): 大部分 Linux ISO 文件在制作时采用了混合分区结构(Hybrid Partition)。混合分区表包含了 GPT 和 MBR 两种分区表,允许该 USB 在 BIOS 和 UEFI 两种启动模式下都可以被识别和启动。
  • 修改文件系统格式: 通常的 USB 设备在 Windows 下默认使用的文件系统是 FAT32 或 exFAT。而 Linux 发行版的 ISO 文件内部使用了不同的文件系统,比如 ISO9660SquashFSext4。当把这些文件系统直接写入到 USB 时,原先的 FAT32 文件系统就会被覆盖掉,导致 USB 在 Windows 系统上无法识别。

由于 Windows 系统无法识别 ISO9660SquashFS 这样的 Linux 文件系统,因此你会看到 USB 显示为“文件系统不对”或“需要格式化”。

2. 为什么 Windows 无法识别烧录后的 USB ?

这是由于在写入 Ubuntu ISO 时,USB 的分区表和文件系统被改变。Windows 默认只能识别 FAT32、NTFS、exFAT 等常见文件系统,而 Ubuntu 的启动盘可能会使用 ISO9660 或混合文件系统,这些文件系统在 Windows 下无法识别。因此,当你尝试在 Windows 中打开 USB 时,会看到以下几种情况:

  • 未分配分区或无效文件系统: Windows 可能显示 USB 为“RAW”格式,表示 Windows 无法识别该文件系统。
  • 提示需要格式化: 这是因为 Windows 认为该 USB 中的文件系统不符合 FAT32 或 NTFS 格式,所以无法访问。
  • 分区表错误或显示多个分区: 由于混合分区表的存在,Windows 可能只能识别其中一个分区(通常是 EFI 分区),其余分区显示为未分配或无效。

3. 为什么重新使用 USB 时需要格式化?

由于 Ubuntu 烧录工具更改了 USB 的分区表和文件系统格式,所以如果你想将 USB 恢复为普通存储设备,必须执行以下操作:

  1. 删除所有分区并重新创建: 恢复 USB 的分区表和结构,使其回到 FAT32 或 exFAT 格式。
  2. 重新格式化: 创建新的文件系统,以便 Windows 和其他操作系统能够识别和使用。

第二次被玩弄

按照步骤,我现在应该把它插入pc,启动boot,选择usb,美美安装系统。

一切很顺利,直到安装ubuntu的第三步,选完系统语言那一步。

告诉我:此计算机使用了英特尔RST(快速存储技术),我需要在windows中关闭。

没错,这台主机之前是windows的,而且我不知道上一个用户的密码。

此为第二次被玩弄。

在安装 Ubuntu(或其他 Linux 发行版)时,如果计算机的 BIOS 或 UEFI 中启用了 Intel 的快速存储技术(Intel Rapid Storage Technology, RST),则可能导致安装程序无法识别到硬盘。这是因为 RST 提供了一种复杂的 RAID 管理模式,而默认的 Linux 内核通常不支持这种模式。这会导致在安装 Linux 时出现以下问题:

  1. 硬盘无法被识别: 当 RST 启用时,Ubuntu 安装程序(或者其他 Linux 发行版)可能无法正确识别硬盘,导致在安装过程中找不到任何硬盘或分区。
  2. 磁盘分区访问异常: 即使能看到硬盘,有时分区表和分区信息也会被扭曲,出现不可读的状态,导致无法对分区进行操作(如格式化、安装引导程序等)。
  3. 与 Windows 共存的双系统可能出错: 如果打算安装双系统,启用 RST 会导致 Ubuntu 与 Windows 共享硬盘时可能发生读写冲突。即使能成功安装,Ubuntu 也可能无法正确访问 Windows 的分区或数据。

为什么会发生这种情况?

RST 是 Intel 为提升磁盘性能和数据安全性而推出的一种 RAID 模式。当启用 RST 时,BIOS 或 UEFI 会将硬盘控制权交给 RST 驱动程序。这样一来,操作系统看到的硬盘是经过 RST 中间层处理后的,而不是传统意义上的硬盘。Windows 有内置的 RST 驱动程序,所以能够正常工作,但大部分 Linux 发行版在默认情况下不具备对 RST 驱动的支持,因此无法正确识别经过 RST 处理的硬盘。

第三次被玩弄

师兄说可以把windows密码先改了,于是又去借了个U盘去下载另一个系统(再次感谢师兄的耐心)。

问题来了,重新登陆windows时,没有办法切换用户,并且改了密码也进不去。

此为第三次被玩弄。

第四次被玩弄

师兄说直接把windows给消灭了吧,于是就把windows系统给删掉了。

drama来了,当我又回到了安装ubuntu的第三步时,还是提醒我RST没有关闭。

即便 Windows 已被移除,只要 BIOS 中的 RST 功能仍然处于启用状态,安装程序就会检测到这个问题并阻止安装。

第五次被玩弄

那让我们返回BIOS里。由于只浅浅瞟了一眼网上的教程,把将 SATA 模式直接改成了null(如果我没有记错)。

终于没有RST关闭的提示了!但是在磁盘分区的时候,发现系统好像被安装在了U盘上而非主机磁盘上。

此为第五次被玩弄。

将 SATA 模式改为 null 可能导致 BIOS 无法正确识别硬盘,从而让 Ubuntu 安装程序只能找到 USB 驱动器进行安装。

第六次被玩弄

事已至此,不如问问GPT吧。

原来应该把SATA模式改为AHCI。终于成功安装了Ubuntu!

在 AHCI 模式下,Linux 对 SATA 硬盘的支持更加广泛和稳定。许多 Linux 发行版在默认情况下能够更好地识别和管理 AHCI 设备。

然后发现之前踩过的所有坑,GPT都给我回答了一遍。

成功后的教训

早点问GPT!