无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: 2011niumao

[发布] SQUASHFS系统UBUNTU20.04与18.04,VHD系统UBUNTU16.04(64位)

    [复制链接]
发表于 2020-5-1 16:04:02 来自手机 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2020-5-10 11:30:54 | 显示全部楼层
本帖最后由 2011niumao 于 2020-5-10 11:33 编辑
gland2015 发表于 2020-4-26 09:21
的确是我搞错了,磁盘分区成gpt的了,还有逻辑分区。不过我在使用过程中发现,如果cpu使用过高会造成死机 ...

我有一段时间也是间隔性死机,百度后发现可能与内核有关,不见得是cpu过热。
有一个方案是“定期内存清理”, 不知道其效果,可以试试。

方法二:定期清理内存

该操作可能导致部分浏览器页面内容丢失

转:https://blog.csdn.net/qq_21398167/article/details/51657977

# vim /root/satools/freemem.sh

#!/bin/bash

used=`free -m | awk 'NR==2' | awk '{print $3}'`
free=`free -m | awk 'NR==2' | awk '{print $4}'`

echo "===========================" >> /var/log/mem.log
date >> /var/log/mem.log
echo "Memory usage | [Use:${used}MB][Free:${free}MB]" >> /var/log/mem.log

if [ $free -le 100 ] ; then
                sync && echo 1 > /proc/sys/vm/drop_caches
                sync && echo 2 > /proc/sys/vm/drop_caches
                sync && echo 3 > /proc/sys/vm/drop_caches
                echo "OK" >> /var/log/mem.log
else
                echo "Not required" >> /var/log/mem.log
fi

将脚本添加到crond任务,定时执行。

# echo "*/1 * * * * root /root/satools/freemem.sh" >> /etc/crontab

crontab -e
添加
*/1 * * * * root /root/satools/freemem.sh

(切换到root用户下将上面那句话加入到crontab里,注意格式*之间的空格 )

加入自动释放内存脚本以后,再也没有死机过。


回复

使用道具 举报

 楼主| 发表于 2020-5-14 12:41:11 | 显示全部楼层
本帖最后由 2011niumao 于 2020-5-29 11:43 编辑

在SQUASHFS只读系统中制作可写img系统.
当启动到一个只读squashfs系统后,如果想安装一些自己喜欢的软件并且保留到系统中,可以预先制作一个固定大小的vhd再把整个系统同步rsync到vhd的分区上.也可以在squashfs系统中制作一个img,把系统恢复到img上,以UBUNTU2004.squashfs为例, 在squashfs系统中依次输入命令如下.
  1. sudo dd if=/dev/zero of=/media/ubuntu/UBT/ubuntu/ubt.vhd bs=1G count=16
  2. sudo kpartx -av /media/ubuntu/UBT/ubuntu/ubt.vhd
  3. sudo mkfs.ext4 /media/ubuntu/UBT/ubuntu/ubt.vhd
  4. sudo mkdir /tmp/mm /tmp/tt
  5. sudo mount --bind / /tmp/mm
  6. sudo mount /media/ubuntu/UBT/ubuntu/ubt.vhd /tmp/tt
  7. sudo rsync -SHav /tmp/mm/* /tmp/tt/
复制代码
制作完毕.这里kpartx命令可能不需要,存疑.另外输出文件在标签为UBT的硬盘分区的子目录ubuntu内,文件名字为ubt.vhd(正常的名字后缀应该为img).再设置引导即可直接启动到这个可写img系统,grub2菜单如下
  1. enuentry "ubt-VHD" --class ubuntu  {
  2.         insmod gzio
  3.         insmod part_msdos
  4.         insmod part_gpt
  5.         insmod ext2
  6.         insmod ntfs
  7.         insmod probe
  8.         set vhdfile="/ubuntu/ubt.vhd"
  9.         set root=(hd0,1)
  10.         search --no-floppy -f --set=aabbcc  $vhdfile
  11.         set root=${aabbcc}
  12.         probe -u --set=ddeeff ${aabbcc}
  13.         loopback lo $vhdfile
  14.         linux        (lo)/boot/vmlinuz    root=UUID=${ddeeff} kloop=$vhdfile  rw kroot=/dev/loop0 audit=0 apparmor=0
  15.         initrd        (lo)/boot/initrd.img  
  16. }
复制代码
GRUB4DOS需要把两个引导文件拷贝到外面,菜单例子如下:
  1. title 启动ubt.img
  2.     find --set-root --ignore-floppies --ignore-cd  /ubuntu/ubt.img
  3.     uuid ()
  4.     kernel /ubuntu/vmlinuz root=UUID=%?% kloop=/ubuntu/ubt.img kroot=/dev/loop0
  5.     initrd  /ubuntu/initrd.img
复制代码
附注1:  这个就是传统的wubi安装模式, 只是kloop引导模式包含wubi模式作为一个特例.
附注2:  最好在squashfs系统中运行"sudo blkid"查看img文件系统的uuid, 并把img文件系统中"/etc/fstab"文件修改好再重启.
回复

使用道具 举报

发表于 2021-4-5 08:43:33 | 显示全部楼层
感恩分享 刚好要编译openwrt
回复

使用道具 举报

发表于 2022-10-14 12:10:46 | 显示全部楼层
学习使我快乐。
回复

使用道具 举报

发表于 2023-5-28 00:41:06 | 显示全部楼层
终于找到linux版的vhd了,学习一下
回复

使用道具 举报

发表于 2023-6-19 10:25:10 | 显示全部楼层
您好,我想用Squashfs烧录到Nvme里,请问您知道怎么将Squashfs烧录到Nvme下吗?

点评

不懂什么叫烧录。直接拷贝过去就可以吧?我印象里,nvme好像只能uefi, 并且grub2菜单里面不能使用uuid自动探测功能,必须手写填入具体的root=/dev/sdaX 或者 root=/dev/LABEL/硬盘分区标签(必须纯英文)。这里root是  详情 回复 发表于 2023-6-26 16:57
回复

使用道具 举报

 楼主| 发表于 2023-6-26 16:57:11 | 显示全部楼层
DongQ 发表于 2023-6-19 10:25
您好,我想用Squashfs烧录到Nvme里,请问您知道怎么将Squashfs烧录到Nvme下吗?

不懂什么叫烧录。直接拷贝过去就可以吧?我印象里,nvme好像只能uefi, 并且grub2菜单里面不能使用uuid自动探测功能,必须手写填入具体的root=/dev/sdaX  或者 root=/dev/LABEL/硬盘分区标签(必须纯英文)。这里root是vhd,squashfs文件所在分区.
回复

使用道具 举报

发表于 2023-7-4 21:05:46 | 显示全部楼层
您好grub引导代码中的kroot是怎么看的呢?

点评

自己写好的grub2菜单。在我的grub引导器里,这个菜单文件是grubpc.cfg 或grubedi.cfg. 可以在grub2界面按e键临时更改。 kroot是指linux启动后挂载vhd 或者其他虚拟磁盘文件为根目录时候,vhd或者虚拟磁盘文件的被  详情 回复 发表于 2023-7-4 21:24
回复

使用道具 举报

 楼主| 发表于 2023-7-4 21:24:40 | 显示全部楼层
本帖最后由 2011niumao 于 2023-7-4 22:54 编辑
wlight_ 发表于 2023-7-4 21:05
您好grub引导代码中的kroot是怎么看的呢?

自己写好的grub2菜单。在我的grub引导器里,这个菜单文件是grubpc.cfg 或grubefi.cfg.
可以在grub2界面按e键临时更改。
kroot是指linux启动后挂载vhd 或者其他虚拟磁盘文件为根目录时候,vhd或者虚拟磁盘文件的被内核识别的设备名称,可以先在一个做好的linux系统手工挂载这个虚拟文件系统,比如使用kpartx命令或者 qemu-nbd命令, 就可以看出其设备名。注意使用不同的命令mount时候,虚拟文件系统作为虚拟设备,设备名称也不一样的。
回复

使用道具 举报

发表于 2023-7-4 21:38:09 | 显示全部楼层
2011niumao 发表于 2023-7-4 21:24
自己写好的grub2菜单。在我的grub引导器里,这个菜单文件是grubpc.cfg 或grubedi.cfg.
可以在grub2界面 ...

好的谢谢谢谢谢谢,感谢回复,我试一下。
回复

使用道具 举报

发表于 2023-7-5 08:12:34 | 显示全部楼层
您好,kloop引导时报错,请问是哪里出问题了呢?
Begin: Mounting root file system  … /init: .: line 259: can’t open ‘/scripts/local’
exit code=0x200

点评

检查一下你的init文件,里面是不是有错误。看看scripts/local这个文件不存在,或者它的权限可能被错误设置为不可执行。  详情 回复 发表于 2023-7-5 11:28
回复

使用道具 举报

 楼主| 发表于 2023-7-5 11:28:15 | 显示全部楼层
wlight_ 发表于 2023-7-5 08:12
您好,kloop引导时报错,请问是哪里出问题了呢?
Begin: Mounting root file system  … /init: .: line 2 ...

检查一下你的init文件,里面是不是有错误。看看scripts/local这个文件是不是不存在,或者它的权限可能被错误设置为不可执行。
回复

使用道具 举报

发表于 2023-7-5 12:48:07 | 显示全部楼层
本帖最后由 wlight_ 于 2023-7-5 15:56 编辑
2011niumao 发表于 2023-7-5 11:28
检查一下你的init文件,里面是不是有错误。看看scripts/local这个文件是不是不存在,或者它的权限可能被 ...

您好,/scripts/local这个文件没找到,应该如何解决呢?-----------------------
编辑:
您好,我重新把附件中的local文件复制到scripts下了,我再试试------------编辑:
您好,已经解决了问题了,谢谢您的方案。

点评

OK!很棒!  发表于 2023-7-6 18:05
回复

使用道具 举报

发表于 2023-12-29 08:15:34 | 显示全部楼层
Linux 的VHD系统还没见过,感谢大佬分享~
回复

使用道具 举报

发表于 2024-1-7 08:34:06 | 显示全部楼层
谢谢楼主的分享
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-3-29 21:53

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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