全内存系统 for Arch Linux
之前在github上和绿檀发过帖子【1】介绍了当前流行的几种全内存系统实现及其优缺点,以及我给出的兼具性能和优雅的实现。不过当时给出的例子是Gentoo Linux上的,有烧友告诉我现在Arch Linux aur的ramroot目前有些问题不能用了,我就在pve里装了个Arch把之前的全内存系统脚本迁移过来,在这简单介绍。【1】http://erji.net/forum.php?mod=viewthread&tid=2328383&extra=
本帖最后由 中关村东路 于 2024-4-4 18:00 编辑
首先看看你当前的initramfs是什么格式的,6.0以后默认是zstd,如果是别的格式下面的脚本略有不同但操作类似:
file /boot/initramfs-linux.img
initramfs-linux-ramroot.img.zst: Zstandard compressed data (v0.8+), Dictionary ID: None
接下来我们来看看mkinitcpio是怎么打包zstd格式的initramfs的,
nano /usr/bin/mkinitcpio
按ctrl+w搜索关键字zstd,找到这段可以看到命令参数只有一个-T0,最终我们就要用zstd -T0来打包。如果你用的是其他压缩格式也是类似的。
zstd)
COMPRESSION_OPTIONS=('-T0' "${COMPRESSION_OPTIONS[@]}")
现在来解压缩当前正常运行的initramfs,
mkdir ramroot
cd ramroot
cp /boot/initramfs-linux.img initramfs-linux.img.zst
zstd -d initramfs-linux.img.zst
cpio -iF initramfs-linux.img
rm initramfs-linux.img.zst initramfs-linux.img
在启动脚本的最后,大约最后一个if之后,修改成如下:
nano init
if []
fi
mkdir /ram_root
mount -t tmpfs -o rw,noatime none /ram_root
cp -a /new_root/* /ram_root/
mount --move /proc /ram_root/proc
mount --move /sys /ram_root/sys
mount --move /dev /ram_root/dev
umount /new_root
# this should always be the last thing we do before the switch_root.
rdlogger_stop
exec env -i \
"TERM=$TERM" \
/usr/bin/switch_root /ram_root "$init" "$@"
# /usr/bin/switch_root /new_root "$init" "$@"
# vim: set ft=sh ts=4 sw=4 et:注意上面这段假定硬盘根目录下容量小于内存的一半。如果不是,请参考【1】中的rsync --exclude技巧。
保存之后就可以打包了,注意最后一段,是假定了之前initramfs是用zstd格式压缩的,其他格式需要对应修改。
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里了,如果你想切回去就在启动系统时候选第二项。
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Arch Linux in ramroot' ... {
...
initrd/boot/initramfs-linux-ramroot.img
}
menuentry 'Arch Linux' ... {
...
initrd/boot/initramfs-linux.img
}
打完收工。 顶一下
qdatmjxb 发表于 2024-4-5 10:23
顶一下
{:4_115:} 顶一下, 好帖子收藏了 顶!继续学习 完美实现。:victory: xsyzm 发表于 2024-4-7 15:38
完美实现。
恭喜恭喜
大佬请教一下,怎么关闭arm处理器内置的显卡(gpu)?有没有脚本代码?
主要想着关掉它能减少处理器的发热
{:4_116:} lalekuku 发表于 2024-7-1 13:36
大佬请教一下,怎么关闭arm处理器内置的显卡(gpu)?有没有脚本代码?
主要想着关掉它能减少处理器的发热 ...
这就不懂了,我在内核里关闭了gpu/drm的驱动,没测过是不是降温了。不过如果你用的是树莓派是可以降低gpu频率的,在/boot/config.txt
force_turbo=1
arm_freq=1500
arm_freq_min=1500
gpu_freq=150
core_freq=200
core_freq_min=200
h264_freq=200
isp_freq=200
v3d_freq=200
sdram_freq=300
sdram_freq_min=300
avoid_pwm_pll=1
# over_voltage=-8
# over_voltage_min=-8
# over_voltage_sdram=-8
# over_voltage_sdram_c=-8
# over_voltage_sdram_i=-8
# over_voltage_sdram_p=-8
好帖 中关村东路 发表于 2024-7-1 17:14
这就不懂了,我在内核里关闭了gpu/drm的驱动,没测过是不是降温了。不过如果你用的是树莓派是可以降低gpu ...
感谢。再次学习了,{:4_116:}:)
刚才发现最新版naa运行时是3个线程,不是2个了,在naa的onstart里设置实时优先级好像不好使了。
大佬知道这是什么原因吗?有办法解决吗? lalekuku 发表于 2024-7-5 20:05
刚才发现最新版naa运行时是3个线程,不是2个了,在naa的onstart里设置实时优先级好像不好使了。
大佬知道 ...
一直是三个,一个心跳,另外两个应该一个网络一个播放
本帖最后由 lalekuku 于 2024-7-6 14:34 编辑
中关村东路 发表于 2024-7-5 20:56
一直是三个,一个心跳,另外两个应该一个网络一个播放
哦,应该是我记错了。
onstart不好使的问题也找到了,我这系统里应该用bash,不是sh
{:4_116:}
大佬再请教个问题。树莓派5版的hqos里,哪块是控制hqplayer自启动的配置文件?感觉好像跟debian差别挺大。hqos是基于哪个linux开发的?
{:4_116:} lalekuku 发表于 2024-7-24 10:58
大佬再请教个问题。树莓派5版的hqos里,哪块是控制hqplayer自启动的配置文件?感觉好像跟debian差别挺大。h ...
暑假没在家不方便,应该还是systemd吧,试试搜索一下 中关村东路 发表于 2024-7-24 17:32
暑假没在家不方便,应该还是systemd吧,试试搜索一下
收到。我去找找看,谢谢{:4_116:} 大佬请教一下,initramfs-linux.img最后如果不switch root的话,会怎么样?
initramfs本身也是一个小linux文件系统,直接把可执行文件都做到这个initramfs里是否可行?是否能省掉后面的ram root?
页:
[1]