我想要的是:我想将 Ubuntu 安装在 USB 笔式驱动器上,完全独立于 Windows 分区方案,但我希望它运行速度快。
即:当未插入 pdrive 时,启动 Windows,没有人知道我使用 linux;
当插入 pdrive 时启动 ubuntu(将 bios 设置为在存在 pdrive 时使用它)
||
问题:由于 U 盘速度慢,Ubuntu 会将文件/应用程序加载到 U 盘和/或其上的交换分区。只有加载活动应用程序的库(可能偶尔也会写入一些设置文件)才会对操作系统产生最显著的影响;似乎交换(在我的 6gb、4x2.4ghz 计算机上)从未发生过(这很好,因为 pdrive 交换非常慢)。例如,Firefox 非常慢,如果我正在安装东西(每次安装操作系统时都会这样做),每 20 秒就会冻结 5 秒,如果我没有安装但打开了 5 个标签,每 60 秒就会冻结 5 秒 = 真是让人头疼
||
我的解决方案:
1 我可以使用 TrueCrypt 在 Windows 硬盘上创建一个虚拟交换分区(因为它们不会影响硬盘,没有人能分辨出我正在使用不同的操作系统),这将大大加快交换速度,但是由于硬盘交换速度(即使解密也快 10 倍),应用程序从 U 盘加载怎么办?2 感谢 blankreg 提供这些命令(虽然我想更详细地介绍它们)3 启动到 RAM
4 预加载对于启动到 RAM 毫无用处
|| ||
|| ||
还有哪些其他方法可以优化这样的配置?
感谢 blankreg 提供的这些重要信息,我还想补充一下 PRELOAD 包的效果非常好
答案1
0k 这是我所做的并且产生了奇迹:
-1 truecrypt 从 hdd 交换(还没有做,我会做的,因为稍后我需要一些 10gb 交换空间来进行一些 gimp 图像处理
2 感谢 blankreg,我使用了他的一些代码:
vm.swappiness = 10
vm.vfs_cache_pressure = 50
vm.dirty_writeback_centisecs = 1500
这 3 行非常有用,但是一旦我实现了第三个选项,后面的几行就变得毫无用处了,尽管 swappiness(不要将其设置为 0,因为当 RAM 已满时,您将需要等待交换部分内容才能运行当前程序,当设置为 10 时,想象一下操作系统将为意外应用程序留下 10% 的可用 RAM 空间,而在运行它们时释放另外 10%)
缓存压力很重要,因为如果下一个要运行的命令不在内存中,程序可能会中断(将此值设置为低将导致数据 RAM 在需要时被弹出以进行交换,并且代码 RAM 一直存在于 RAM 中 - 这很糟糕,因为当你不使用 Firefox 时,例如你不需要它的代码 RAM,因此这些 RAM 可以被活动应用程序用来存储数据 RAM)
并且写回对于 /home 目录读写很有用,不会用大量小写入淹没 pdrive,而是使用少量大写入(不确定),以便 pdrive 可以在需要执行读取操作时释放(你确实希望 Firefox 不冻结,是吗?这是因为程序不需要等待写入,他们只是说他们想将其保存在那里然后继续他们的业务,但是当程序读取某些内容时,它正在等待(99% 的时间)接收它想要的内容,并且在 pdrive 的情况下,它将需要几秒钟以上的时间,因此 Firefox 会冻结)
要执行这些命令,您需要编辑 /etc/sysctl.conf 并运行
gksudo gedit /etc/sysctl.conf
在我的情况下,这些行不存在(已加载默认值),所以我只添加了这些行,您可以编辑包含这些变量的行(附加或覆盖,谁在乎,只管去做)
3 启动到内存,
http://ubuntuforums.org/showthread.php?t=1594694
这里是论坛,一个很棒的启动到 RAM 脚本,它创建了另一个操作系统(现在你有 2 个 ubuntus)一个是 readonly-fast-ram(不要误解只读,你可以在文件系统中读写任何你想要的东西,即安装游戏和程序,但一旦重新启动或关机,这些文件就会丢失)另一个是 readwrite-slow-pdrive
为了让你的 /home 文件夹在重新启动之间存储数据,你需要为“/home”创建一个分区,为“/”创建一个分区,
我注意到“/”分区使用了 2x800mb,所以考虑一下你要在那里安装多少个应用程序我不知道只读快速内存操作系统是否可以移动到交换而不是内存(最好是硬盘交换,使其与安装在硬盘上一样慢(而不是慢 10 倍的 pdrive),但与安装在未来的 PC 上一样快)否则它会一直吃内存
无需阅读论坛即可安装脚本
sudo apt-get install git
git clone git://github.com/terminator14/RAM_booster.git
cd /home/UserName/RAM_booster
sudo bash RAM_booster_Ubuntu_12.04.sh
CAFERUL 上面的例子适用于 12.4 版本,
在安装过程中(我的情况大约需要 45 分钟),系统会询问您一些问题,例如让主文件夹在会话之间保存数据,并在午夜自动执行计划操作(我更喜欢手动更新,并且事先阅读了论坛,我已经将 /home 分区分开了),
之后您的 grub 将有一个额外的(新的默认)选项来启动只读快速内存操作系统,这里太棒了!我的意思是我点击了 Firefox,感觉就像我没有把手指从按钮上松开,Firefox 已经打开(双关语)来
保存您对只读快速内存操作系统运行所做的任何更新(简单的方法)
sudo rupdate --both
此操作将 RAM 操作系统中的数据保存到 readwrite-slow-pdrive 和 readonly-fast-ram 容器中(它们是分开的,在我的情况下,这个容器在启动时大约需要 45 秒才能加载到 RAM 中)
4 预加载器,不能不谈论预加载器,预加载器很好,因为它尝试加载所有可能需要的库(而不是在那个时刻需要然后删除)到内存中,但由于步骤 3 已经这样做了,如果你安装了启动到内存,那么安装预加载器是没用的,但如果你不想安装启动到内存,那么请使用此代码
sudo apt-get install preload
但是如果你已经在这里(没有安装 boot to ram)考虑使用 blankreg 的代码将一些临时文件存储到 ram 而不是磁盘(虽然它不会有太大帮助,我几天前尝试过,当 pc 正在做很多事情时,firefox 经常冻结,让你很恼火(我正在更新本地 dropbox 文件夹 + 安装一些应用程序 + 浏览有关 boot to ram 的网络,它仍然每 45 秒左右冻结一次,幸好我可以在它冻结的时候读取字母)
我不建议使用最后一行代码,因为我的 ubuntu 在从工作区切换器中的 pendrive 运行时坏了几次(~4)即 mose 正在移动,键盘没有效果,屏幕上没有任何内容更新时钟显示过去 30 分钟的相同时间,我真的很想检查崩溃报告
gksudo gedit /etc/fstab
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/backups tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/cache/apt/archives/ tmpfs defaults,noatime 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0
答案2
对于优化此类配置,我的看法是:
由于您是从 USB 运行的,如果您有足够的 RAM(4 GB 或更多),我会不使用交换文件来延长其使用寿命,或者至少减少交换使用量,将以下内容添加到 /etc/sysctl.conf
vm.swappiness = 10
vm.vfs_cache_pressure = 50
我还会添加以下行来增加 USB 闪存写入周期之间的延迟:
vm.dirty_writeback_centisecs = 1500
此外,所有临时文件、日志和 deb 都可以移至 RAM,以减少写入周期。只需将以下几行添加到 /etc/fstab 即可
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/backups tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/cache/apt/archives/ tmpfs defaults,noatime 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0
(请注意,包含 /var/log 行意味着重新启动后将不会保留任何日志文件。如果您不想要这样,可以将其删除。)