找回密码
 -注册-
查看: 3019|回复: 19
打印 上一主题 下一主题

全内存系统 for Arch Linux

[复制链接]
跳转到指定楼层
1
发表于 2024-4-4 17:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自 北京
之前在github上和绿檀发过帖子【1】介绍了当前流行的几种全内存系统实现及其优缺点,以及我给出的兼具性能和优雅的实现。不过当时给出的例子是Gentoo Linux上的,有烧友告诉我现在Arch Linux aur的ramroot目前有些问题不能用了,我就在pve里装了个Arch把之前的全内存系统脚本迁移过来,在这简单介绍。

【1】http://erji.net/forum.php?mod=vi ... =2328383&extra=

2
 楼主| 发表于 2024-4-4 17:53 | 只看该作者 来自 北京
本帖最后由 中关村东路 于 2024-4-4 18:00 编辑

首先看看你当前的initramfs是什么格式的,6.0以后默认是zstd,如果是别的格式下面的脚本略有不同但操作类似:
  1. file /boot/initramfs-linux.img
  2. initramfs-linux-ramroot.img.zst: Zstandard compressed data (v0.8+), Dictionary ID: None
复制代码


接下来我们来看看mkinitcpio是怎么打包zstd格式的initramfs的,

  1. nano /usr/bin/mkinitcpio
复制代码


按ctrl+w搜索关键字zstd,找到这段可以看到命令参数只有一个-T0,最终我们就要用zstd -T0来打包。如果你用的是其他压缩格式也是类似的。

  1.         zstd)
  2.             COMPRESSION_OPTIONS=('-T0' "${COMPRESSION_OPTIONS[@]}")
复制代码


现在来解压缩当前正常运行的initramfs,

  1. mkdir ramroot
  2. cd ramroot
  3. cp /boot/initramfs-linux.img initramfs-linux.img.zst
  4. zstd -d initramfs-linux.img.zst
  5. cpio -iF initramfs-linux.img
  6. rm initramfs-linux.img.zst initramfs-linux.img
复制代码


在启动脚本的最后,大约最后一个if之后,修改成如下:

  1. nano init

  2. if []
  3. fi

  4. mkdir /ram_root
  5. mount -t tmpfs -o rw,noatime none /ram_root
  6. cp -a /new_root/* /ram_root/

  7. mount --move /proc /ram_root/proc
  8. mount --move /sys /ram_root/sys
  9. mount --move /dev /ram_root/dev

  10. umount /new_root

  11. # this should always be the last thing we do before the switch_root.
  12. rdlogger_stop

  13. exec env -i \
  14.     "TERM=$TERM" \
  15.     /usr/bin/switch_root /ram_root "$init" "$@"
  16. #    /usr/bin/switch_root /new_root "$init" "$@"

  17. # vim: set ft=sh ts=4 sw=4 et:
复制代码
注意上面这段假定硬盘根目录下容量小于内存的一半。如果不是,请参考【1】中的rsync --exclude技巧。

保存之后就可以打包了,注意最后一段,是假定了之前initramfs是用zstd格式压缩的,其他格式需要对应修改。

  1. find . -print0 | cpio --quiet --null -o -H newc --owner root:root --force-local | zstd -T0 > /boot/initramfs-linux-ramroot.img
复制代码


接下来修改/boot/grub/grub.cfg文件,找到这一段,复制个一模一样的,最后一行改成ramroot的版本。现在重启就会启动到ramroot里了,如果你想切回去就在启动系统时候选第二项。

  1. ### BEGIN /etc/grub.d/10_linux ###
  2. menuentry 'Arch Linux in ramroot' ... {
  3.     ...
  4.     initrd  /boot/initramfs-linux-ramroot.img
  5. }
  6. menuentry 'Arch Linux' ... {
  7.     ...
  8.     initrd  /boot/initramfs-linux.img
  9. }
复制代码






回复

使用道具 举报

3
 楼主| 发表于 2024-4-4 17:53 | 只看该作者 来自 北京
打完收工。
回复

使用道具 举报

4
发表于 2024-4-5 10:23 | 只看该作者 来自 亚太地区
顶一下
回复

使用道具 举报

5
 楼主| 发表于 2024-4-5 20:10 来自手机 | 只看该作者 来自 北京
回复

使用道具 举报

6
发表于 2024-4-6 03:34 | 只看该作者 来自 美国
顶一下, 好帖子收藏了
回复

使用道具 举报

7
发表于 2024-4-7 10:55 | 只看该作者 来自 北京
顶!继续学习
回复

使用道具 举报

8
发表于 2024-4-7 15:38 | 只看该作者 来自 浙江
完美实现。
回复

使用道具 举报

9
 楼主| 发表于 2024-4-7 16:06 | 只看该作者 来自 北京

恭喜恭喜
回复

使用道具 举报

10
发表于 2024-7-1 13:36 | 只看该作者 来自 北京
大佬请教一下,怎么关闭arm处理器内置的显卡(gpu)?有没有脚本代码?
主要想着关掉它能减少处理器的发热
回复

使用道具 举报

11
 楼主| 发表于 2024-7-1 17:14 | 只看该作者 来自 北京
lalekuku 发表于 2024-7-1 13:36
大佬请教一下,怎么关闭arm处理器内置的显卡(gpu)?有没有脚本代码?
主要想着关掉它能减少处理器的发热 ...

这就不懂了,我在内核里关闭了gpu/drm的驱动,没测过是不是降温了。不过如果你用的是树莓派是可以降低gpu频率的,在/boot/config.txt

  1. force_turbo=1
  2. arm_freq=1500
  3. arm_freq_min=1500
  4. gpu_freq=150
  5. core_freq=200
  6. core_freq_min=200
  7. h264_freq=200
  8. isp_freq=200
  9. v3d_freq=200
  10. sdram_freq=300
  11. sdram_freq_min=300
  12. avoid_pwm_pll=1
  13. # over_voltage=-8
  14. # over_voltage_min=-8
  15. # over_voltage_sdram=-8
  16. # over_voltage_sdram_c=-8
  17. # over_voltage_sdram_i=-8
  18. # over_voltage_sdram_p=-8
复制代码


回复

使用道具 举报

12
发表于 2024-7-1 17:15 | 只看该作者 来自 广东广州
好帖
回复

使用道具 举报

13
发表于 2024-7-1 20:51 | 只看该作者 来自 北京
中关村东路 发表于 2024-7-1 17:14
这就不懂了,我在内核里关闭了gpu/drm的驱动,没测过是不是降温了。不过如果你用的是树莓派是可以降低gpu ...

感谢。再次学习了,
回复

使用道具 举报

14
发表于 2024-7-5 20:05 | 只看该作者 来自 北京
刚才发现最新版naa运行时是3个线程,不是2个了,在naa的onstart里设置实时优先级好像不好使了。
大佬知道这是什么原因吗?有办法解决吗?
回复

使用道具 举报

15
 楼主| 发表于 2024-7-5 20:56 | 只看该作者 来自 北京
lalekuku 发表于 2024-7-5 20:05
刚才发现最新版naa运行时是3个线程,不是2个了,在naa的onstart里设置实时优先级好像不好使了。
大佬知道 ...

一直是三个,一个心跳,另外两个应该一个网络一个播放
回复

使用道具 举报

16
发表于 2024-7-6 13:03 | 只看该作者 来自 北京
本帖最后由 lalekuku 于 2024-7-6 14:34 编辑
中关村东路 发表于 2024-7-5 20:56
一直是三个,一个心跳,另外两个应该一个网络一个播放

哦,应该是我记错了。
onstart不好使的问题也找到了,我这系统里应该用bash,不是sh



回复

使用道具 举报

17
发表于 2024-7-24 10:58 | 只看该作者 来自 北京
大佬再请教个问题。树莓派5版的hqos里,哪块是控制hqplayer自启动的配置文件?感觉好像跟debian差别挺大。hqos是基于哪个linux开发的?
回复

使用道具 举报

18
 楼主| 发表于 2024-7-24 17:32 来自手机 | 只看该作者 来自 北京
lalekuku 发表于 2024-7-24 10:58
大佬再请教个问题。树莓派5版的hqos里,哪块是控制hqplayer自启动的配置文件?感觉好像跟debian差别挺大。h ...

暑假没在家不方便,应该还是systemd吧,试试搜索一下
回复

使用道具 举报

19
发表于 2024-7-24 20:07 | 只看该作者 来自 北京
中关村东路 发表于 2024-7-24 17:32
暑假没在家不方便,应该还是systemd吧,试试搜索一下

收到。我去找找看,谢谢
回复

使用道具 举报

20
发表于 2024-11-12 16:38 | 只看该作者 来自 北京
大佬请教一下,initramfs-linux.img最后如果不switch root的话,会怎么样?
initramfs本身也是一个小linux文件系统,直接把可执行文件都做到这个initramfs里是否可行?是否能省掉后面的ram root?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | -注册-

本版积分规则

Archiver|手机版|粤icp备09046054号|耳机网-耳机大家坛

粤公网安备 44030602000598号 耳机大家坛、www.erji.net、网站LOGO图形均为注册商标

GMT+8, 2024-12-24 08:17

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表