我可以加载到RAM中的发行版?

是否有Ubuntu的修改版本,我可以选择在启动时加载到RAM? 有点像LiveCD,但当我选择从磁盘启动时,可以很容易地修改(即:我可以安装东西)。

我的想法是将其安装到USB驱动器。 我知道有类似的东西,但很多部门都缺乏。 一个“完整”版本Ubuntu会更好。

LiveUSB安装似乎非常接近我想要的,但显然我必须选择它是否会在我安装它时持久化。 我希望每次启动时都能选择。

有参数toram ,你可以在启动时给最近的Ubuntu livecd,最近意思是10.04或更新。 这将把所有内容加载到RAM(假设你有足够的RAM来容纳它),之后你可以删除CD(或USB记忆棒)并继续正常使用Ubuntu。

这个答案包括我用来回答不同问题的文字,但它放在这里是为了说明和给出一个你可能已经拥有的视觉指南。

在大多数情况下,Ubuntu(几乎任何版本)都可以在实时会话中完美运行,并且放置在具有“持久”数据选项的USB中,您将拥有您想要的。

问题是,当您拔下USB存储器/硬盘驱动器时,磁盘将被卸载,这样 – 即使重新插入,USB将无法访问,除非您执行某些操作以便将安装点恢复到USB。

尽管如此,即使拔下或拔下USB,所有正在运行的应用程序仍将继续运行。

尝试的一个好主意是确保在启动时加载所需的所有进程,这将确保在拔出USB时进程将运行。

我自己只用了几个应用程序就完成了。 我正在使用以前预装了大量应用程序的Israel Remix Team发行版,这样,当加载应用程序时,我可以拔掉USB内存,程序继续运行。

我没有尝试过要求严格的资源计划,但在我的情况下:

  1. 文件共享继续工作和共享文件,即使这些文件位于固定硬盘驱动器中,而不是USB文件系统。
  2. VLC继续播放广播电台没有问题,
  3. Yakuake继续工作并完成我的要求,除非我希望有一些不插电的USB
  4. 谷歌浏览器继续在网上冲浪,并允许我做一些事情,如监控IP摄像头。

唯一的问题是,当我尝试插入USB以运行新的应用程序时,当前正在运行的操作系统实例无法实现,因此我必须重新启动才能启动新应用程序,而不是在那些加载的应用程序旁边启动。

另一个好主意是在“系统/首选项/启动应用程序”首选项窗口中使用“记住当前正在运行的应用程序”function。 哪个(启用时)将“记住”您正在使用的所有程序,并在重新启动后或在一天内第一次启动系统时重新打开它们。

如果您希望从此function中删除应用程序,只需将其关闭并转到此function并按“记住当前正在运行的应用程序”,以刷新下次将打开的程序列表。

屏幕截图放在这里是为了说明。

在此处输入图像描述

然后,考虑到我上面说的话,值得进行下一个实验:

USB启动盘指南:

首先,您可以使用GUI制作USB启动盘,这将简化任务。 不幸的是,这只能在ubuntu系统内部完成,Live会话或Installed系统都可以完成。

我知道人们可能会建议你遵循其他几个成功的程序,但在我的情况下,我将谈论“启动磁盘创建器”。

在几个Linux发行版中,您可以在“系统/管理/启动磁盘创建器”中找到此工具。 我强烈建议你尝试一下我使用的以色列混音团队 ,但几乎任何发行版都应该使用这个工具。

屏幕截图放在这里,供您在最近打开时查看该工具:

在此处输入图像描述

在实时会话中尝试此操作之前,请确保已下载了首选的Ubuntu发行版。

在“Make Startup Disk”窗口中,单击右上角的“Other”按钮,以选择您之前下载的Linux发行版iso,并且已经插入了将用于该过程的USB。 “.iso”和USB都应出现在各自的区域中。

在此处输入图像描述

注意:如果您要在此过程中使用预先刻录的DVD,只需将DVD插入托盘,它将列在源列表中,如下图所示:

在此处输入图像描述

在我的情况下,我的4 GB USB存储器已经安装了一个实时会话,我首先要做的是在“擦除磁盘”中进行clic以便为系统收集足够的空间,之后我将获得选项对于数据处理,我将在其中选择我希望用于保存数据和配置的磁盘大小(如安装程序等)。我将使用1.4 GB用于此目的。

在此处输入图像描述

现在我单击“Make Startup Disk”,复制过程即将发生。

在此处输入图像描述

之后还应安装GRUB。 不幸的是,GRUB安装过程太快,所以我无法拍摄。

将创建持久性文件。

在此处输入图像描述在此处输入图像描述

然后你就可以从那个USB开始了。 请注意,即使与适配器,IDE-to-USB或SATA-to-USB一起使用,也可以使用USB存储器或USB硬盘驱动器。

在此处输入图像描述

这应该按照你的意愿工作,至少它让我对结果感到满意。

祝好运!

我一直在研究这个问题。 livecd-to-usb设置对我来说效果不佳。 我为ubuntu服务器11.04创建了一个“本地”脚本的修改版本。 应用补丁(或手动编辑本地更改当然)后,您只需要更新-iniramfs -u,并使用“ramboot”内核参数启动linux,您的系统将完全启动正常的Linux系统进入ram。 进行持久更改就像将ramdisk文件系统rsync到引导设备上一样简单。 在我的情况下,一个usb-pen,但它可以很容易地成为任何合适的可引导块设备。 当然,您可以在没有“ramboot”参数的情况下重新启动并进行更改,因为您将返回到块设备,然后再次重新启动到ramboot,但是没有必要,除非它使您非常清楚在哪个州。

0)“sudo su”

(你不必这么做,但是你需要确保你sudo所有可能需要它的东西)当我正在做这种类型的系统修改时,我倾向于只是“sudo su”。

1)将此补丁的内容下载或复制/粘贴到文件中:

“/usr/share/initramfs-tools/scripts/ramboot.patch” – 不能包括pastebin,新手。 包括在最后

2)cd / usr / share / initramfs-tools / scripts; cp local local.bak #just以防万一

3)补丁本地ramboot.patch

这会将ramboot.patch中定义的更改应用于本地脚本。 / usr / share / initramfs-tools / scripts / local是正常的启动脚本配置程序,它配置init的rootmountfunction。 补丁是由“diff local local.modified> ramboot.patch”创建的。

4)cp / bin / busybox / usr / lib / initramfs-tools / bin / busybox

这使得你的initramfs.img文件比正常情况稍大,但差别大约是1.5兆字节,而不是主要的。 我想要df -h的人类可读输出,被剥离的busybox的df不支持。 如果你关心保持300k版本的busybox,请确保cp / usr / lib / initramfs-tools / bin / busybox / small_busybox,然后在步骤5之后将其返回到它以前的名称/位置。

5)update-initramfs -u

6) 可选你很可能想要创建一个/etc/grub.d/06_custom,包含内核参数“ramboot”,以及一个隐含的标题。

(或40_custom,如果你想让ramboot菜单项位于列表的末尾,而不是在顶部),例如06_custom – 不能包括pastebin链接,这里是新手。

您需要将正确的内核版本和initrd.img-verion以及根设备的文件系统uuid填入此06_custom文件中,否则它将无法正常工作。

你可以通过查看/ boot / with“ls / boot”来找到kernel / initrd.img信息,以下命令应该输出你的根文件系统uuid:

blkid | grep`df / | grep dev | cut -d” – f1` | cut -d’“’ – f2

一旦你的06_custom有正确的uuid,kernel和initrm.img路径和文件名,你就可以更新grub,然后试一试!

7)update-grub将自定义条目添加到/boot/grub/grub.cfg文件中。

注意:我有一个小系统,根分区只包含大约1.2g的数据要复制到ram中。 如果你的系统没有足够的备用内存,这个脚本将安全地正常启动(或至少尝试!)我发现remastersys,并且持久的usb-casper安装不完全适合我的需要。

这在目前的scst-iscsi服务器上使用,唯一真正的缺点是,如果你不保存对系统的更改,失去电源或其他一些错误(初始0,哦不,我忘了检查我的回到颠覆!灾难!)然后ramdisk系统没有任何持久性。 我在这个配置上没有大量的播出时间,但是因为我环顾四周寻找这类信息,找到了许多不太合适的方法,或者只是让我感到困惑,我想我会把它放在那里。 也许它会拯救某人一点牙齿拉* 8 ^)

remastersys和root-ro脚本帮助了我这一点。 它们既有用又有不同的项目。 remastersys将您正在运行的系统打包,进行部署/克隆,或者只是作为系统的live.iso版本运行,或者我认为是备份。 root-ro是一个双ramdisk blockdevice-filesystem,安装了union-style,ramdisk是可写的,blockdev是只读的。 然后同步你可以只重新安装blockdev rw,rsync一旦分支到另一个,并重新安装它ro。 这几乎是完美的,但我希望卸下usb-pen /能够将其移除,系统将维持它的状态,这个解决方案就是这样。

root-ro页面底部 – https://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash

remastersys – http://www.geekconnection.org/remastersys/ubuntu.html

您可以轻松地从ramboot(安装在/上)和在ram中运行时最初来自的磁盘/设备进行rsync或copy -r,以使该更改“持久”。 我保存了ramboot从中启动的设备的uuid,因此您可以随后找到它。 它位于ramdisk的/.bootdisk_byuuid中,您可以轻松设置脚本以在某处安装此设备,执行rsync并再次卸载它,并将该脚本称为“ramtodisk”或其他任何内容。

NB! 您可能需要备份/boot/initrd.img文件,以防万一出错,您的系统仍然可以启动。 在做这项工作的时候,我把我保存到了/ boot / initrd。 当我用grub / init发生故障时,我只是编辑了我的initrd以指向backup / boot / initrd文件并重新进入调试阶段。 无论如何,我猜这是更多的准则,而不是食谱。 玩得开心! 它需要我的1.2gig系统9:30ish在usb 1.1上启动,在usb 2.0上启动1:30-45,在usb 3.0上启动〜= 35秒以加载到ram中。 每年越来越多汁! * 8 ^)

这是ramboot.patch

 2a3,13 > parse_cmdline() { > RAM="" > for x in $(cat /proc/cmdline); do > case $x in > ramboot) > RAM="Yes" ;; > quiet) > quiet=y ;; > esac > done > } 66c77 < --- > parse_cmdline 90,91c101,164 < # Mount root < mount ${roflag} ${FSTYPE:+-t ${FSTYPE} }${ROOTFLAGS} ${ROOT} ${rootmnt} --- > # Mount root - custom ramboot.patch > # By: Justin Perkins -- 4/25/12 Email: justin.perkins@vm-labs.com > if [ -z "${RAM}" ]; then > mount ${roflag} ${FSTYPE:+-t ${FSTYPE} }${ROOTFLAGS} ${ROOT} ${rootmnt} > else > mkdir /ramboot > mount ${roflag} -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} /ramboot > log_begin_msg "Detecting system resources" > size=$(df|grep ramboot|tr -s ' '|cut -d ' ' -f3) > datasize=${size} > size=$(expr ${size} + ${size} / 20 ) #5% more to be sure > freespace=$(awk '/^MemFree:/{f=$2} /^Cached:/{c=$2} END{print f+c}' /proc/meminfo) > log_end_msg > if [ "${freespace}" -lt "${size}" ] ; then > echo "Not enough system RAM, ${freespace}k > ${size}k." > echo "Attempting normal rootmount." > mount ${roflag} ${FSTYPE:+-t ${FSTYPE} }${ROOTFLAGS} ${ROOT} ${rootmnt} > else > if [ "$quiet" != "y" ] ; then > tstart_min=$(date|cut -d ' ' -f4|cut -d : -f2) > tstart_sec=$(date|cut -d ' ' -f4|cut -d : -f3) > mount -t tmpfs -o size=100% none ${rootmnt} > cd ${rootmnt} > size=$(df -h|grep ramboot|tr -s ' '|cut -d ' ' -f3) #reuse size > echo "System size: ${size} (${datasize}k) this may take a couple of minutes." > log_begin_msg "Copying system files into RAM" > echo -e -n "\b" > cp -rfa /ramboot/* ${rootmnt} & > pid=$! > while [ ! ${pid} == "done" ] ; do > alive=$(ps -o pid,args|grep -E ${pid}|grep -v grep) > alive=$(echo ${alive}|cut -d ' ' -f1) > if [ -z ${alive} ] ; then pid="done" ; fi > printf "." > sleep 1 > done > log_end_msg > echo ${ROOT} > ${rootmnt}/.bootdisk_byuuid > tend_min=$(date|cut -d ' ' -f4|cut -d : -f2) > tend_sec=$(date|cut -d ' ' -f4|cut -d : -f3) > if [ ${tend_sec} -lt ${tstart_sec} ] ; then > tend_sec=$(expr ${tend_sec} + 60) > tend_min=$(expr ${tend_min} - 1) > fi > if [ ${tend_min} -lt ${tstart_min} ] ; then > tend_min=$(expr ${tend_min} + 60) > fi > tduration_min=$(expr ${tend_min} - ${tstart_min}) > tduration_sec=$(expr ${tend_sec} - ${tstart_sec}) > echo "Copy complete, duration: $tduration_min minutes $tduration_sec seconds." > freespace=$(awk '/^MemFree:/{f=$2} END{print f}' /proc/meminfo) > freespace=$(expr ${freespace} + 425000) #this accounts for the temporal settling issue > echo "You have approximately ${freespace}k free RAM after loading the ramboot." > if [ ${freespace} -lt "502400" ] ; then echo "Warning! you have critically low system RAM free after ramboot." ; fi > > else > cp -rfa /ramboot/* ${rootmnt} > echo ${ROOT} > ${rootmnt}/.bootdisk_byuuid > freespace=$(awk '/^MemFree:/{f=$2} END{print f}' /proc/meminfo) > if [ ${freespace} -lt "102400" ] ; then echo "Warning! you have critically low system RAM free after ramboot." ; fi > fi > fi > umount /ramboot > fi #end custom ramboot.patch 

06_custom

 #!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. #uuid_, and vmlinuz-, and initrd.img- and #set root='(hd0,2)' need to be replaced with your system's values, although, if you #get the hd0,2 wrong, but the uuid correct, grub will grep around and find it anyhow. menuentry "Ubuntu, with Linux Custom-Ramboot" { recordfail set root='(hd0,2)' search --no-floppy --fs-uuid --set=root uuid_placeholder linux /boot/vmlinuz- root=UUID= ro ramboot initrd /boot/initrd.img- } 

我认为小狗linux现在基于ubuntu,并且非常小并且很容易加载到RAM中。

Interesting Posts