[已解决]关于多硬盘引导的疑问

我已经安装完 openSUSE 和 win8 双系统差不多半年了。openSUSE 下的命令也在边用边学,在学习中也有了疑问。我主要用的参考是《鸟哥的私房菜》,其中有一段关于多硬盘开机引导的话如下:
“比较聪明的朋友会想到『我可以调整 BIOS 内的开机装置,使得要进入不同的操作系统时,就用不同的开机装置来开机, 如此一来应该就能够避免将 grub 安装到 /dev/sda 了吧?』这个想法本身是 OK 的,只不过, 因为 SATA 的装置档名是利用侦测的顺序来决定的,所以你如果这样调整来调整去的话, 你的 SATA 装置档名可能会产生不同,这对於 linux 的运作会有问题,因此如果这样随时调整 BIOS 时, 可能还是会造成无法开机成功的问题!”
其实当初由于安装 openSUSE 的机缘巧合,我就是如此安装的。并且由于 wn8 冷启动的关系,使用起来也很方便。在需要 SUSE 的时候,重启 win8,通过 [F12] BIOS 从其他硬盘启动 openSUSE。
我用得也比较长了,也没发现问题。我想知道这样下去,会不会出现什么危害?

查询了一下,开机装置是 boot device 的台译,装置档是 device file(设备文件)的台译。

那他的意思是说,「开机进 BIOS,改引导设备(也就是引导顺序,从光驱从硬盘之类的,比如从 SAMSUNG HN-M101MBB 或者 Hitachi XXX),这个想法本身没错,但是 SATA 的设备文件(也就是 /dev/sd a 本身是根据侦测的顺序决定的。于是可能会存在把日立(Hitachi)一直是 /dev/sdb 偶尔认成 /dev/sdc 的问题。」

这个现象确实存在,不过多见于服务器,不止在硬盘方面存在,在网卡方面也存在。

这个现象只见于冷、热插拔。比如你关机,插上第三块硬盘,你的三块硬盘的 sda sdb sdc 的顺序这时就是完全未知的。可能三星由 sda 变成了 sdb,日立变成 sdc,而新插入的那块西部数据的硬盘变成了 sda。但不管怎么变,原来三星在前日立在后的顺序是不会变的(具体实现在 BIOS,那东西由主板厂商编程,多数不是开源的),所以如果你不插入新硬盘是遇不到这个现象的,并不是说谁是 sda 是完全随机的。

同理,你新插入一块网卡,原来针对 eth0 的设置可能都跑到新网卡上去了。

这才是为什么现在都流行使用 ID 来挂载硬盘,使用 UUID 来挂载硬盘分区(因为它们唯一),比如 grub2 默认生成的挂载方式:

linux /vmlinuz-3.11.10-11-desktop root=UUID= 7d9a58ee-cd7c-436c-bba7-0feae35f1bbe resume=/dev/disk/by-id/ ata-SAMSUNG_HN-M101MBB_S2R8J9BB808817-part1 splash=silent quiet showopts

以及 13.1 之后使用乱序网卡名 wlp3s0 这种而不是传统的 wlan0 的原因。

但是这种做法依然活不过你那种换硬盘的方式,因为除了引导设备,其它设备都要靠 Linux 去挂载,而你换的引导设备上肯定不会有那个 UUID/ID 的分区,所以这种方法主要是应用于 RAID(分主次,引导设备肯定是主,UUID 可以解决次的硬盘冷插拔的问题)和安装好系统之后再次分区。你那种做法基本上还是落在了开发者假设的使用场景的外面。

一般来说 ,硬盘 和 PCI 卡在主板接口上是存在顺序的,sata 口那里标示的 0 -3 那些就是, 你只要把两个系统的盘接在最前两个口上 (0 和 1),以后再接的硬盘就不会插序到最前和中间,只会排在后面。同理 PCIE 槽位也是一样 ,但 PCIe 情况有些特殊,PCIE 通道又分成 CPU 通道和 ICH(即传统南桥芯片,因为现在传统北桥功能已集成到 CPU 内部,所以就只剩一个单芯片)通道,而 CPU 实现的 PCIE 通道会排在 ICH 之前,所以主板上槽位对应的 PCI 卡顺序只有看说明书或者自己插卡实验。。。