如何在UEFI和Intel Smart Response Technology下运行Ubuntu

这个问题尚未得到以下链接的回答,因为他们说要永久禁用这些功能:

我如何使Ubuntu支持UEFI和启用Intel Smart Response技术(SRT)?我需要在安装Ubuntu时打开它们吗?如果是这样,该如何操作?或者我可以在安装Ubuntu后启用这些功能,并且仍然让它们正常工作吗?

我不关心保留Windows,并且想要一台只运行Linux的机器,所以我没有双启动的问题。我希望SSD缓存的好处适用于整个文件系统,而不仅仅是操作系统部分,否则我将禁用SRT并将Linux安装到SSD上。

一番在网上搜索后,我发现有很多像安装Ubuntu与预装Windows UEFI这样的文章,告诉如何禁用这些功能。但这不是我想要的。我还找到了一些信息,表明Intel支持mdadm而不支持dmraid,但我不知道这是否意味着我可以在AHCI模式下安装并在安装后切换,或者我需要以某种方式准备一个自定义安装程序。另外,我也不确定这是否适用于SRT,因为Intel有太多类似的缩写,它们之间关系密切。

症状

我尝试过12.04.2 LTS版本,目前正在尝试使用13.04版本 ubuntu-13.04-desktop-amd64.iso
MD5 : 8d72e2db7e72e13813731eab37a14d26

我收到的消息和我选择的选项是:

Secure boot not enabled
Try Ubuntu without Installing
error: failure reading sector 0x60100 from 'cd0'
error: you need to load the kernel first.

Press any key to continue...

然后它回到屏幕上,我可以选择“尝试Ubuntu而不安装”的界面。
这种行为在12.04.2 LTS和13.04 LiveCD中是相同的。虽然有时无法读取的扇区是0x0。这张同样的DVD在UEFI + AHCI或Legacy BIOS模式下能够正常启动。
硬件信息
我有一台Dell Inspiron 15R特别版dw510268au,配备了32GB mSATA缓存和1TB 5400rpm硬盘。
在Legacy BIOS模式下,输出结果为
sudo hwinfo --storage 29: PCI 1f.2: 0104 RAID总线控制器 [创建于pci.318] 唯一标识符:w7Y8.SQqymDbIGqA SysFS标识符:/devices/pci0000:00/0000:00:1f.2 SysFS总线标识符:0000:00:1f.2 硬件类别:存储 型号:"Intel Mobile 82801 SATA RAID Controller" 制造商:pci 0x8086 "Intel Corporation" 设备:pci 0x282a "Mobile 82801 SATA RAID Controller" 子制造商:pci 0x1028 "Dell" 子设备:pci 0x0572 版本:0x04 驱动程序:"ahci" 驱动模块:"ahci" I/O端口:0x4088-0x408f (读写) I/O端口:0x4094-0x4097 (读写) I/O端口:0x4080-0x4087 (读写) I/O端口:0x4090-0x4093 (读写) I/O端口:0x4060-0x407f (读写) 内存范围:0xc1617000-0xc16177ff (读写,非预取) 中断请求(IRQ):42 (22089次事件) 模块别名:"pci:v00008086d0000282Asv00001028sd00000572bc01sc04i00" 驱动程序信息 #0: 驱动程序状态:ahci已激活 驱动程序激活命令:"modprobe ahci" 配置状态:cfg=new,avail=yes,need=no,active=unknown

使用整个32GB SSD作为交换分区怎么样?这样不会增加内存访问速度吗? - jgomo3
1这只对使用了合理数量的交换空间的系统有所帮助,即使如此,也只能在从硬盘读取并推送到虚拟内存后才能加快速度。 - BeowulfNode42
3个回答

我有点晚来参加这个派对,但我觉得我的经验可能会有用。
我有一台戴尔Precision M4800笔记本电脑,最初配备了32GB的mSATA固态硬盘,现在换成了256GB的mSATA固态硬盘。我将我的全尺寸三星830 Pro 256GB固态硬盘安装在2.5英寸硬盘位上,还通过适配器在光驱位上安装了一个1TB的硬盘。它们都是SATA 6G接口。最初我在2.5英寸SATA固态硬盘上安装了Win8和Debian,并使用完整的32GB mSATA作为1TB硬盘的缓存,因为它的速度相对较慢,而且我在那里保存了很多VMware虚拟机。由于SRT是硬件/固件操作,所以它在Linux和Windows下都可以工作,我验证了即使在Linux下,1TB硬盘也能被加速。当启用SRT时,32GB固态硬盘完全消失了。英特尔做得非常好。
最近我把32GB的硬盘换成了256GB的。整个过程非常简单和顺利。我启动了Windows系统,禁用了智能响应功能,让它稳定一下,然后关机进行物理更换。再次启动Windows后,我重新启用了智能响应功能,并将其设置为使用最大的64GB。我告诉智能响应功能将其他的192GB空间留给我使用,计划将我的Debian安装在那里,并扩展Windows分区,给所有的东西提供更多的空间。
在智能响应功能填充缓存并重启了一两次之后,我启动了我的Debian安装。1TB的硬盘比以前还要快,拥有一个大的SSD缓存对于我的大容量数据盘来说非常棒,因为它原本是5400转每分钟的速度,非常慢。我启动了gparted来对剩余的mSATA SSD进行分区,问题就开始了。看起来gparted可以看到整个磁盘区域,包括缓存,所以它注意到了我的GPT布局中的一些“问题”,并提供修复选项。我选择了修复,然后意识到发生了什么,并重新启动到Windows。智能响应功能离线了!SSD缓存损坏了!糟糕!
启动Debian,完全清零SSD,再次启动Windows,重新设置SRT(考虑到GPT的“错误”可能是之前启用SRT时遗留的GPT)。结果相同,gparted认为我的SSD分区错误。现在我打算在Windows中利用未使用的空间创建一个分区,看看是否可以直接编辑/替换而不破坏SRT。
除此之外,OP只单系统启动,所以使用更多针对Linux的解决方案可能是个好主意。你可以将基本安装放在SSD上,将家目录和大容量数据放在HDD上,这样应该能在速度和简便性之间取得良好的平衡。

1谢谢提供的信息。你能详细说明一下你所说的“我最初安装了Win8和Debian”是如何进行的吗?包括BIOS选项和顺序是怎样的?另外,“SRT在Linux和Windows中都可以工作……我验证过1TB硬盘即使在我使用Linux时也有加速。”你是如何验证这一点的呢?请在回答中更新这些信息。另外,你能否提供启用了SRT的系统上运行lspci -v命令的输出结果?我猜你可能是使用高端笔记本电脑,可能配备了真正的硬件RAID卡,而不像我的廉价笔记本电脑。 - BeowulfNode42
当然可以。最初我将操作系统安装在我的主要SSD上(SRT未启用,SATA控制器处于RAID模式),首先安装了Win8,然后安装了最新的Debian,以UEFI模式进行(虽然我认为这并不重要)。使用rEFInd来管理引导加载程序,但GRUB也可以正常工作。安装完成后,我通过一个适配器将我的1TB 5400rpm硬盘安装在光驱位上,它被识别为/dev/sdb。然后,我在mSATA插槽中安装了一个32GB的mSATA SSD,启动Win8,并使用Intel软件启用了SRT模式。我允许它使用整个SSD作为缓存。 - Forge
重新启动到Debian并看到与其单独管理时更高的1TB磁盘传输速率(初始传输速度超过200MB/s)。我的配置为最大化模式,因此缓存读写以完全SSD速度进行。在增强模式下,效果要微妙得多。我刚刚将32GB SSD更换为256GB mSATA SSD,重新启用了SRT,虽然磁盘被正确地缓存,但当我尝试对剩余空间进行分区时,gparted会不断清除Intel SRT缓存。 - Forge
我会让它正常运行,并通过pastebin或类似的方式发布你要求的lscpi信息。确实,这是一台高端的Precision电脑,但它并没有使用硬件RAID控制器,只是用了Intel的东西。 - Forge
2哎呀,我得承认我错了。显然我有确认偏见,相信Intel SRT在运行时让硬盘看起来更快。但在进行客观测试后,事实证明Intel SRT实际上只在Windows系统下起作用。 - Forge
我的主要SSD(sda),内部HDD(sdb)和缓存SSD(sdc)的hdparm结果如下: /dev/sda: 缓冲磁盘读取时间:3.00秒内1484 MB = 494.52 MB/sec /dev/sdb: 缓冲磁盘读取时间:3.01秒内270 MB = 89.70 MB/sec /dev/sdc: 缓冲磁盘读取时间:3.00秒内1426 MB = 474.78 MB/sec - Forge
@Forge 加1,承认并确认你最初是错的。顺便说一下,我这样使用我的223GB固态硬盘:在Windows中运行64GB的SRT缓存,Linux中运行另外64GB的bcache,并将剩余的95GB用作普通文件系统。这样我可以在两个操作系统中获得快速启动和启动时间,但需要确保gparted和fdisk都不会触碰我的固态硬盘,因为ISRT会对GPT进行奇怪的处理。 - Gunther Piez

你在启用SRT的目标是什么?
SSD缓存在双启动环境中会引发问题,或者可能无法按预期工作。如果你只运行Linux,那么在SSD上安装操作系统并设置/home使用HDD。无论如何,请禁用SRT。
关于RAID的注意事项:不要使用硬件/伪RAID,请参阅Kernel.org Wiki on RAID
看起来没有一个简单的解决方案可以在Linux上启用英特尔的SSD缓存解决方案(SRT),这与不使用Fake-RAID BIOS实现的建议相一致(请阅读维基中反对Fake-RAID的观点)。如果您想在Linux上使用SSD缓存,应该使用像flashcache这样的软件解决方案。
然而,在mdadm中支持Intel Matrix Storage Manager(请参考mdadmdmraidmd的man页面),有人在博客中谈到了调整RST

3将整个操作系统安装在SSD上是不可接受的,因为这样会在SSD上留下很多很少访问的数据。可能/boot文件分区可以使用SSD,但其余部分应该通过英特尔智能响应技术缓存机械硬盘,而不是通过SSD上的交换分区。 - BeowulfNode42
似乎在Linux中使用Intel的智能响应技术并没有可用的解决方案。因此,如果您想使用SSD缓存,您必须要么使用Linux上的软件实现,如flashcache,要么编写自己的实现来启用Linux的SRT,如果这是可能的话。http://www.gerrit-tamboer.net/using-flashcache-to-speed-up-your-io-on-ubuntu-12-04/ - LiveWireBT
同时还要注意,一些制造商,如联想,决定在他们的Ivy Bridge笔记本电脑上使用SATA 6G将硬盘驱动器(HDD)和光盘驱动器(ODD)连接起来,只留下mSATA使用SATA 3G,并将其传输速度限制在约300MB/s。相信我,我和你一样不喜欢这种情况。 - LiveWireBT
看起来他们做对了那部分,并将mSATA端口与SATA 6G连接起来。http://en.community.dell.com/support-forums/laptop/f/3518/p/19498697/20332281.aspx 尽管有人需要告诉他们不要将Flash对象放入PDF文件中。你知道吗,不同供应商提供更大的模块?http://www.intel.com/content/www/us/en/solid-state-drives/solid-state-drives-525-series.html - LiveWireBT

使用13.10版本,你可以使用bcache,通过使用块来转换你的分区,而不是使用SRT。详细信息请参考http://bcache.evilpiepirate.org/

1感谢提供的链接,这让我有了几个选择:bcache、flashcache、EnhanceIO、Btier以及标准的ext4外部日志选项。请参考http://www.raid6.com.au/posts/SSD_caching。我将尝试它们。 - BeowulfNode42
2还有一个askubuntu的问题如何安装和使用flashcache/bcache将HDD缓存到SSD? - BeowulfNode42