AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1212390
Accepted
NullVoxPopuli
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 3 个回答
  • 7696 Views

3 个回答

  • Voted
  1. Best Answer
    Fabby
    2020-02-26T05:42:12+08:002020-02-26T05:42:12+08:00

    您可以将环境完全放在 RAM 中, 但是:

    • 没有什么是坚持的!
    • 您将需要 SSD 大小的 RAM:64G 会很小,128G 会很舒服

    可能性 1:RAM 中的整个系统:

    1. 将 Ubuntu 安装到 USB 驱动器¹
    2. 使用 Gnome 磁盘将 USB 驱动器¹ 转换为 ISO 文件
    3. 将 ISO 文件添加到 grub
    4. 启动那个 ISO 文件

    那里!完全在 RAM 中的环境!

    可能性 2:/home在 RAM 中:

    1. 创建 RAM 磁盘
    2. 正常开机
    3. rsync 全部/home存入 RAM 盘
    4. mount bindRAM 磁盘到/home
    5. 关闭时,您要么丢失 RAM 磁盘中的所有内容,要么必须执行 #3 的相反操作

    因此,所有这些在技术上都是可行但不切实际的:

    • 您需要在永久 USB 驱动器上进行所有升级/系统设置¹,并在每次想要更改单个永久字节时转换为 ISO。(您希望在您的 IDE 中启用一个选项?嗯...打开它并重新创建 ISO...)
    • 它需要大量的 RAM,因为您需要整个磁盘或整个家庭环境的 RAM和足够的 RAM 来运行您需要的应​​用程序。
    • 你需要rsync你想要持久化的数据。
    • 你失去做上述的时间会超过你获得的好处。

    注意 1:我以 U 盘为例,它也可以是您 PC 上的分区/磁盘,但 U 盘会让事情变得更容易,因为您还可以将 U 盘复制到另一个 U 盘以进行备份那个环境。

    • 10
  2. 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盘)

    我要解决的挑战是:

    1. 不要留下任何应用程序正在处理的任何文件的任何痕迹。(就我而言,出于同样的原因,我也关闭了交换)。一些开发人员工具可能需要大内存,因此您可能必须真正考虑实际需要多少 RAM。
    2. 除了主目录之外,一些程序可能会使用/var/tmp和。/tmp如果没有明确禁用这些目录上的粘性位(否则某些程序可能会中断),则不应在任何这些文件下留下任何痕迹
    3. 系统应始终提供主目录的干净映像——因此即使配置更改也不会保留。
    4. 普通用户不应该有sudo特权。
    5. 必须适用于所有发行版支持的 GUI 程序,没有任何黑客(否则我会简单地使用 Docker 图像)。解决方案也应该可以在任何 Linux 发行版上实现,而无需特殊的 hack。它必须由 L1 Sys Admin 安装和管理。
    6. 管理员用户必须能够在需要时升级系统。

    解决方案1:符合Fabby在可能性2(低复杂性)下的建议

    1. 创建两个帐户:第一个是安装发行版时创建的默认帐户(在 Ubuntu 上,通常此帐户具有sudo权限)。假设默认帐户admin和主目录是/home/admin,而第二个帐户是developer,并且主目录设置为/ramdisk。创建第二个帐户时,请确保它不会创建主目录。developer帐户不得具有sudo特权。root帐户密码必须锁定,因此su在帐户下工作时 不会有使用的诱惑developer。如果您非常偏执,您希望使用chrootfordeveloper并且不要在 chrooted 目录中保留任何 set-uid 程序。

    2. 测试所有内容(例如 set .gitconfig、gitignore和.bashrc一些其他配置文件),直到一切正常。确保TMPDIR=/ramdisk/tmp已设置,.bashrc因此即使是临时目录也可以由那些支持的程序在大 RAM 磁盘上创建TMPDIR。

      测试后,按照适用于您的发行版的说明禁用自动更新功能。这是必须的,因为我还建议将其安装/tmp在/var/tmp尽可能小的 RAM 磁盘上(请参见下面的 5),并且您的自动更新程序最终可能会损坏您的系统。

    3. 复制/home/admin到一个单独的目录,比如在/var/warehouse/devtools-home. 清理任何不是作为原始图像的一部分明确要求的内容/var/warehouse/devtools-home,以使其尽可能小。创建一个 ZIP 文件/var/warehouse/devtools-home——主目录图像。

    4. 为所需大小/etc/fstab的 RAM 磁盘 ( )添加一个条目,安装在 上,并将安装选项设置为.tmpfs/ramdiskuid=developer,gid=developer,mode=700,default,noatime,nodev,nosuid,noexec

    5. 更新/etc/fstab挂载/tmp,/var/tmp就tmpfs好像您的发行版没有为这些目录使用 RAM 磁盘。(我尽量保持它尽可能小)。

    6. 添加一个 cron 作业@reboot以解压缩开发人员主目录图像/ramdisk和chown -R developer.developer /ramdisk. rc.local您可以使用您的发行版支持的引导服务或同等服务。

    7. 重新启动并测试一切。developer像正常工作一样登录。重新启动机器,所有的痕迹都丢失了,你再一次得到一个带有默认配置的主目录的新副本。

    8. 当您需要进行升级或添加新工具时,请以 身份登录admin,卸载/tmp和/var/tmp执行升级,然后重新启动服务器。如果您希望更改主目录中的默认值,请按照上面的步骤(2)和(3),并创建一个新的主目录映像。

    解决方案 2:中央 PXE 引导服务器(与上述解决方案相比复杂度高)

    (我目前正在研究此解决方案,因此所有步骤可能不正确)

    解决方案 1 适用于一次性机器。如果您希望在一个局域网中为多个桌面创建一个完整的环境,上述方法可能会变得过于繁琐而无法管理。但是,您不希望失去使用现代台式机的高速 CPU 和高 RAM 的能力。在这种情况下,建议使用中央 PXE 引导服务器而不是中央终端服务器。无需赘述,您需要的内容如下:

    1. 具有 TFTP、DHCP、NFS、中央系统日志服务器和 LDAP 服务的中央 Linux 服务器。
    2. 使用所需的帐户/组配置 LDAP 服务。
    3. 配置 TFTP 以将 Linux 内核提供给桌面,并将根分区以只读方式挂载到 NFS 上,该 NFS 将包含您的发行版的映像以及所需的开发人员工具。NFS 安装的映像也应配置为通过 LDAP 进行身份验证。由于可能存在不同的显示配置,您还需要将/etc每个设备安装为单独的分区/目录。
    4. 使用具有高速 CPU 和高 RAM 的无磁盘桌面。将桌面 BIOS 配置为使用 PXE 引导。
    5. 确保在桌面上创建所需配置的 RAM 磁盘,并将主目录安装在 RAM 磁盘上,并按照解决方案 1 中的说明复制主映像。在桌面上运行的 Syslog 应将 syslogs 发送到中央 syslog 服务器.
    6. 测试一切。
    7. 当您希望升级时,使用所需的开发人员工具更新基于 NFS 的映像,在中央服务器上更新此映像,然后重新启动桌面。(我更喜欢保留最后一个和当前的图像,以便在任何时间点,如果在新的更新中报告任何问题,我都可以切换回旧版本)。
    • 4
  3. 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

    要永久禁用,请再次编辑配置文件。

    • 1

相关问题

  • grub 菜单中的“恢复”选项是什么?

  • 用户如何避免在启动时输入密码?[关闭]

  • 更改 Wubi 的启动顺序

  • 如何在 Ubuntu 启动时显示或隐藏启动消息?

  • 如何避免启动时出现“S to Skip”消息?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve