NullVoxPopuli Asked: 2020-02-23 13:22:32 +0800 CST2020-02-23 13:22:32 +0800 CST 2020-02-23 13:22:32 +0800 CST 登录后(或可选地在启动时)如何仅在 ramdisk 中运行我的系统? 772 我知道如何创建一次性 ramdisk,但我不确定如何执行以下操作: 使用传统的持久存储配置开发环境 下次启动时,可以将我的主文件夹推入 ramdisk(或整个系统) 因为开发环境已经预先配置好,所以我不在乎ramdisk在重启或断电期间是否丢失。因为我经常使用 git,所以我唯一需要的额外持久存储是在 git 上。 我知道这会占用大量 RAM,但有物理限制,如何配置它? boot ram 3 个回答 Voted Best Answer Fabby 2020-02-26T05:42:12+08:002020-02-26T05:42:12+08:00 您可以将环境完全放在 RAM 中, 但是: 没有什么是坚持的! 您将需要 SSD 大小的 RAM:64G 会很小,128G 会很舒服 可能性 1:RAM 中的整个系统: 将 Ubuntu 安装到 USB 驱动器¹ 使用 Gnome 磁盘将 USB 驱动器¹ 转换为 ISO 文件 将 ISO 文件添加到 grub 启动那个 ISO 文件 那里!完全在 RAM 中的环境! 可能性 2:/home在 RAM 中: 创建 RAM 磁盘 正常开机 rsync 全部/home存入 RAM 盘 mount bindRAM 磁盘到/home 关闭时,您要么丢失 RAM 磁盘中的所有内容,要么必须执行 #3 的相反操作 因此,所有这些在技术上都是可行但不切实际的: 您需要在永久 USB 驱动器上进行所有升级/系统设置¹,并在每次想要更改单个永久字节时转换为 ISO。(您希望在您的 IDE 中启用一个选项?嗯...打开它并重新创建 ISO...) 它需要大量的 RAM,因为您需要整个磁盘或整个家庭环境的 RAM和足够的 RAM 来运行您需要的应用程序。 你需要rsync你想要持久化的数据。 你失去做上述的时间会超过你获得的好处。 注意 1:我以 U 盘为例,它也可以是您 PC 上的分区/磁盘,但 U 盘会让事情变得更容易,因为您还可以将 U 盘复制到另一个 U 盘以进行备份那个环境。 Kishan Parekh 2020-02-28T11:37:40+08:002020-02-28T11:37:40+08:00 我正在为需要在 Ubuntu 上使用 GIMP 的团队开发两种解决方案。在您的情况下,GIMP 将被一组开发人员工具取代。 (注意:在你的情况下,如果你想保留一个RAM盘的内容,你将不得不使用Fabby和Zeiss的建议,你不再需要挂载/tmp和/var/tmp下面描述为RAM盘) 我要解决的挑战是: 不要留下任何应用程序正在处理的任何文件的任何痕迹。(就我而言,出于同样的原因,我也关闭了交换)。一些开发人员工具可能需要大内存,因此您可能必须真正考虑实际需要多少 RAM。 除了主目录之外,一些程序可能会使用/var/tmp和。/tmp如果没有明确禁用这些目录上的粘性位(否则某些程序可能会中断),则不应在任何这些文件下留下任何痕迹 系统应始终提供主目录的干净映像——因此即使配置更改也不会保留。 普通用户不应该有sudo特权。 必须适用于所有发行版支持的 GUI 程序,没有任何黑客(否则我会简单地使用 Docker 图像)。解决方案也应该可以在任何 Linux 发行版上实现,而无需特殊的 hack。它必须由 L1 Sys Admin 安装和管理。 管理员用户必须能够在需要时升级系统。 解决方案1:符合Fabby在可能性2(低复杂性)下的建议 创建两个帐户:第一个是安装发行版时创建的默认帐户(在 Ubuntu 上,通常此帐户具有sudo权限)。假设默认帐户admin和主目录是/home/admin,而第二个帐户是developer,并且主目录设置为/ramdisk。创建第二个帐户时,请确保它不会创建主目录。developer帐户不得具有sudo特权。root帐户密码必须锁定,因此su在帐户下工作时 不会有使用的诱惑developer。如果您非常偏执,您希望使用chrootfordeveloper并且不要在 chrooted 目录中保留任何 set-uid 程序。 测试所有内容(例如 set .gitconfig、gitignore和.bashrc一些其他配置文件),直到一切正常。确保TMPDIR=/ramdisk/tmp已设置,.bashrc因此即使是临时目录也可以由那些支持的程序在大 RAM 磁盘上创建TMPDIR。 测试后,按照适用于您的发行版的说明禁用自动更新功能。这是必须的,因为我还建议将其安装/tmp在/var/tmp尽可能小的 RAM 磁盘上(请参见下面的 5),并且您的自动更新程序最终可能会损坏您的系统。 复制/home/admin到一个单独的目录,比如在/var/warehouse/devtools-home. 清理任何不是作为原始图像的一部分明确要求的内容/var/warehouse/devtools-home,以使其尽可能小。创建一个 ZIP 文件/var/warehouse/devtools-home——主目录图像。 为所需大小/etc/fstab的 RAM 磁盘 ( )添加一个条目,安装在 上,并将安装选项设置为.tmpfs/ramdiskuid=developer,gid=developer,mode=700,default,noatime,nodev,nosuid,noexec 更新/etc/fstab挂载/tmp,/var/tmp就tmpfs好像您的发行版没有为这些目录使用 RAM 磁盘。(我尽量保持它尽可能小)。 添加一个 cron 作业@reboot以解压缩开发人员主目录图像/ramdisk和chown -R developer.developer /ramdisk. rc.local您可以使用您的发行版支持的引导服务或同等服务。 重新启动并测试一切。developer像正常工作一样登录。重新启动机器,所有的痕迹都丢失了,你再一次得到一个带有默认配置的主目录的新副本。 当您需要进行升级或添加新工具时,请以 身份登录admin,卸载/tmp和/var/tmp执行升级,然后重新启动服务器。如果您希望更改主目录中的默认值,请按照上面的步骤(2)和(3),并创建一个新的主目录映像。 解决方案 2:中央 PXE 引导服务器(与上述解决方案相比复杂度高) (我目前正在研究此解决方案,因此所有步骤可能不正确) 解决方案 1 适用于一次性机器。如果您希望在一个局域网中为多个桌面创建一个完整的环境,上述方法可能会变得过于繁琐而无法管理。但是,您不希望失去使用现代台式机的高速 CPU 和高 RAM 的能力。在这种情况下,建议使用中央 PXE 引导服务器而不是中央终端服务器。无需赘述,您需要的内容如下: 具有 TFTP、DHCP、NFS、中央系统日志服务器和 LDAP 服务的中央 Linux 服务器。 使用所需的帐户/组配置 LDAP 服务。 配置 TFTP 以将 Linux 内核提供给桌面,并将根分区以只读方式挂载到 NFS 上,该 NFS 将包含您的发行版的映像以及所需的开发人员工具。NFS 安装的映像也应配置为通过 LDAP 进行身份验证。由于可能存在不同的显示配置,您还需要将/etc每个设备安装为单独的分区/目录。 使用具有高速 CPU 和高 RAM 的无磁盘桌面。将桌面 BIOS 配置为使用 PXE 引导。 确保在桌面上创建所需配置的 RAM 磁盘,并将主目录安装在 RAM 磁盘上,并按照解决方案 1 中的说明复制主映像。在桌面上运行的 Syslog 应将 syslogs 发送到中央 syslog 服务器. 测试一切。 当您希望升级时,使用所需的开发人员工具更新基于 NFS 的映像,在中央服务器上更新此映像,然后重新启动桌面。(我更喜欢保留最后一个和当前的图像,以便在任何时间点,如果在新的更新中报告任何问题,我都可以切换回旧版本)。 user535733 2021-04-04T16:04:29+08:002021-04-04T16:04:29+08:00 试试这个overlayroot包。 Overlayboot 将以只读方式加载您的系统,并可选择将持久性本地更改保存到不同的分区......或简单地丢弃。 安装超级简单:sudo apt install overlayroot 通过编辑配置/etc/overlayroot.conf。说明在文件中,只需编辑文件底部的行即可启用。要完全在 ram 中运行您的系统:overlayroot=tmpfs 并重新启动。您的控制台登录现在会提醒您正在使用 overlayroot。您的系统现在是只读的。 要暂时禁用(用于升级等),请在 GRUB 中传递命令:overlayroot=disabled 要永久禁用,请再次编辑配置文件。
您可以将环境完全放在 RAM 中, 但是:
可能性 1:RAM 中的整个系统:
那里!完全在 RAM 中的环境!
可能性 2:
/home
在 RAM 中:/home
存入 RAM 盘mount bind
RAM 磁盘到/home
因此,所有这些在技术上都是可行但不切实际的:
rsync
你想要持久化的数据。注意 1:我以 U 盘为例,它也可以是您 PC 上的分区/磁盘,但 U 盘会让事情变得更容易,因为您还可以将 U 盘复制到另一个 U 盘以进行备份那个环境。
我正在为需要在 Ubuntu 上使用 GIMP 的团队开发两种解决方案。在您的情况下,GIMP 将被一组开发人员工具取代。
(注意:在你的情况下,如果你想保留一个RAM盘的内容,你将不得不使用Fabby和Zeiss的建议,你不再需要挂载
/tmp
和/var/tmp
下面描述为RAM盘)我要解决的挑战是:
/var/tmp
和。/tmp
如果没有明确禁用这些目录上的粘性位(否则某些程序可能会中断),则不应在任何这些文件下留下任何痕迹sudo
特权。解决方案1:符合Fabby在可能性2(低复杂性)下的建议
创建两个帐户:第一个是安装发行版时创建的默认帐户(在 Ubuntu 上,通常此帐户具有
sudo
权限)。假设默认帐户admin
和主目录是/home/admin
,而第二个帐户是developer
,并且主目录设置为/ramdisk
。创建第二个帐户时,请确保它不会创建主目录。developer
帐户不得具有sudo
特权。root
帐户密码必须锁定,因此su
在帐户下工作时 不会有使用的诱惑developer
。如果您非常偏执,您希望使用chroot
fordeveloper
并且不要在 chrooted 目录中保留任何 set-uid 程序。测试所有内容(例如 set
.gitconfig
、gitignore
和.bashrc
一些其他配置文件),直到一切正常。确保TMPDIR=/ramdisk/tmp
已设置,.bashrc
因此即使是临时目录也可以由那些支持的程序在大 RAM 磁盘上创建TMPDIR
。测试后,按照适用于您的发行版的说明禁用自动更新功能。这是必须的,因为我还建议将其安装
/tmp
在/var/tmp
尽可能小的 RAM 磁盘上(请参见下面的 5),并且您的自动更新程序最终可能会损坏您的系统。复制
/home/admin
到一个单独的目录,比如在/var/warehouse/devtools-home
. 清理任何不是作为原始图像的一部分明确要求的内容/var/warehouse/devtools-home
,以使其尽可能小。创建一个 ZIP 文件/var/warehouse/devtools-home
——主目录图像。为所需大小
/etc/fstab
的 RAM 磁盘 ( )添加一个条目,安装在 上,并将安装选项设置为.tmpfs
/ramdisk
uid=developer,gid=developer,mode=700,default,noatime,nodev,nosuid,noexec
更新
/etc/fstab
挂载/tmp
,/var/tmp
就tmpfs
好像您的发行版没有为这些目录使用 RAM 磁盘。(我尽量保持它尽可能小)。添加一个 cron 作业
@reboot
以解压缩开发人员主目录图像/ramdisk
和chown -R developer.developer /ramdisk
.rc.local
您可以使用您的发行版支持的引导服务或同等服务。重新启动并测试一切。
developer
像正常工作一样登录。重新启动机器,所有的痕迹都丢失了,你再一次得到一个带有默认配置的主目录的新副本。当您需要进行升级或添加新工具时,请以 身份登录
admin
,卸载/tmp
和/var/tmp
执行升级,然后重新启动服务器。如果您希望更改主目录中的默认值,请按照上面的步骤(2)和(3),并创建一个新的主目录映像。解决方案 2:中央 PXE 引导服务器(与上述解决方案相比复杂度高)
(我目前正在研究此解决方案,因此所有步骤可能不正确)
解决方案 1 适用于一次性机器。如果您希望在一个局域网中为多个桌面创建一个完整的环境,上述方法可能会变得过于繁琐而无法管理。但是,您不希望失去使用现代台式机的高速 CPU 和高 RAM 的能力。在这种情况下,建议使用中央 PXE 引导服务器而不是中央终端服务器。无需赘述,您需要的内容如下:
/etc
每个设备安装为单独的分区/目录。试试这个
overlayroot
包。Overlayboot 将以只读方式加载您的系统,并可选择将持久性本地更改保存到不同的分区......或简单地丢弃。
安装超级简单:
sudo apt install overlayroot
通过编辑配置
/etc/overlayroot.conf
。说明在文件中,只需编辑文件底部的行即可启用。要完全在 ram 中运行您的系统:overlayroot=tmpfs
并重新启动。您的控制台登录现在会提醒您正在使用 overlayroot。您的系统现在是只读的。
要暂时禁用(用于升级等),请在 GRUB 中传递命令:
overlayroot=disabled
要永久禁用,请再次编辑配置文件。