无忧启动论坛

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

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

    [复制链接]
361#
 楼主| 发表于 2020-3-2 15:18:12 来自手机 | 显示全部楼层
左手按住  alt printscreen两个键不放,右手依次点击字母 r e i s u b六个键,可以安全重启。
回复

使用道具 举报

362#
 楼主| 发表于 2020-3-3 15:56:35 | 显示全部楼层
riverdarda 发表于 2020-3-2 15:40
谢谢!以前试了几次,有一次正常关机(新装不升级的情况),后来dist-upgrade,关机就卡在I/O错误,只能 ...

如果是I/O错误,那应该是手工编译安装的ntfs-3g被升级时候覆盖了,需要重新编译安装ntfs-3g和重新制作一个内核镜像(initrd.img).
回复

使用道具 举报

363#
 楼主| 发表于 2020-4-24 17:50:29 | 显示全部楼层
本帖最后由 2011niumao 于 2020-4-25 11:53 编辑
gland2015 发表于 2020-4-24 12:43
牛毛兄,ubuntu 20.04似乎不行了,我试了几次,能制作启动文件,就是不能启动,这里有sleep 3的,也不 ...

需要检查启动的各个参数是不是正确. 根目录没有挂载成功.
如果参数没有错误,可去一楼连接下载我制作好的引导文件,
我在第一楼的百度共享里面刚刚上传了两个文件
UBUNTU20.04LTS 的启动文件  vmlinuz-5.4.0-26-generic initrd.img-5.4.0-26-generic
可以用它们引导看看

点评

在我机器上还是成功引导了固定vhd的20.04的.  详情 回复 发表于 2020-4-24 17:52
在我机器上还是成功引导了固定vhd的20.04的.  详情 回复 发表于 2020-4-24 17:52
回复

使用道具 举报

364#
 楼主| 发表于 2020-4-24 17:52:14 | 显示全部楼层
2011niumao 发表于 2020-4-24 17:50
需要检查启动的各个参数是不是正确. 根目录没有挂载成功.
如果参数没有错误,可去一楼连接下载我制作好的 ...

在我机器上还是成功引导了固定vhd的20.04的.
回复

使用道具 举报

365#
 楼主| 发表于 2020-4-24 17:52:24 | 显示全部楼层
本帖最后由 2011niumao 于 2020-4-25 11:56 编辑
2011niumao 发表于 2020-4-24 17:50
需要检查启动的各个参数是不是正确. 根目录没有挂载成功.
如果参数没有错误,可去一楼连接下载我制作好的 ...
新上传的,vmlinuz-5.3.0-46-generic vmlinuz-5.3.0-46-generic  是UBUNTU 18.04 LTS的
vmlinuz-5.4.0-26-generic initrd.img-5.4.0-26-generic是UBUNTU 20.04 LTS的,不要弄混了
(我就搞混了上传错了)

点评

的确是我搞错了,磁盘分区成gpt的了,还有逻辑分区。不过我在使用过程中发现,如果cpu使用过高会造成死机,最后我在本地磁盘上装好系统和软件,再备份还原到vhd里解决了这个问题。牛毛兄怎么看,我怀疑是init文件的  详情 回复 发表于 2020-4-26 09:21
回复

使用道具 举报

366#
 楼主| 发表于 2020-4-26 11:34:30 | 显示全部楼层
gland2015 发表于 2020-4-26 09:21
的确是我搞错了,磁盘分区成gpt的了,还有逻辑分区。不过我在使用过程中发现,如果cpu使用过高会造成死机 ...

cpu过高死机,备份还原到vhd可以解决问题-----不理解,第一感觉是cpu温度太高导致的cpu罢工.
不像是init文件问题.  但能解决就好,不知道原理.

我都是靠测试-摸索往前走的,对linux机制并没有深入理解.

今天上传了一个 ubuntu18044 与 ubuntu 2004 ,都是只有2G大小的squashfs 文件,
用7z分割为4个小文件.  有兴趣可以下载,用7z解压合并为一个,照着引导squashfs 的方法
写好引导,就可以使用了.

点评

嗯,不管怎么样,都非常感谢楼主的分享。  详情 回复 发表于 2020-4-26 21:45
回复

使用道具 举报

367#
 楼主| 发表于 2020-4-26 11:52:10 | 显示全部楼层

发布两个只读squashfs系统ubuntu18044与2004

本帖最后由 2011niumao 于 2020-5-2 18:17 编辑

在一楼百度云共享上传了两个 ubuntu18.04x64(设置好了桌面特效) 与 ubuntu 20.04x64(无桌面特效) 的2G左右的squashfs 文件系统, 用7z分割为3,4个小文件.

有兴趣的可以连带启动用的initrd.img1804 ,vmlinuz1804 一起下载下来,用7z把多个分卷解压合并为一个, 将squashfs文件与vmlinuz1804, initrd.img1804拷贝到一个硬盘分区(或优盘内)的名字为ubuntu的子目录内(如果没有就自己建立一个).如下写好grub4dos,grub2的引导菜单, 就可以直接启动到squashfs系统来体验使用了.
readme-squashfsubt2004.zip (2.32 KB, 下载次数: 30)
grub4dos菜单:
  1.     title UBUNTU1804-squashfs
  2.     find --set-root --ignore-floppies --ignore-cd  /ubuntu/UBUNTU1804.squashfs
  3.     uuid ()
  4.     kernel /ubuntu/vmlinuz1804 root=UUID=%?% squashfs=/ubuntu/UBUNTU1804.squashfs apparmor=0
  5.     initrd  /ubuntu/initrd.img1804
复制代码
grub2菜单:
  1.     menuentry "UBUNTU1804-squashfs "  --class ubuntu  {
  2.             insmod gzio
  3.             insmod part_msdos
  4.             insmod part_gpt
  5.             insmod ext2
  6.             insmod ntfs
  7.             insmod probe
  8.             set sfsfile="/ubuntu/UBUNTU1804.squashfs"
  9.             set root=(hd0,1)
  10.             search --no-floppy -f --set=aabbcc  $sfsfile
  11.             set root=${aabbcc}
  12.             probe -u --set=ddeeff ${aabbcc}
  13.             linux         /ubuntu/vmlinuz1804   root=UUID=${ddeeff} squashfs=$sfsfile  rw apparmor=0
  14.             initrd         /ubuntu/initrd.img1804
复制代码
注释:对于squahsfs的ubuntu系统,需要在引导时候加入参数apparmor=0,这样网络可自动链接。

点评

squashfs系统是一个压缩格式的只读系统,有多种使用方法: 第一,仅仅作为已有系统的备份存储。 第二,可以拷贝到优盘上,把优盘做好启动设置(启动盘),可以作为(只读)随身带系统。 第三,可以恢复到一个指定  详情 回复 发表于 2020-4-26 18:33
回复

使用道具 举报

368#
 楼主| 发表于 2020-4-26 18:33:40 | 显示全部楼层

squashfs只读文件系统几种使用方法

本帖最后由 2011niumao 于 2020-4-27 09:20 编辑

squashfs系统是一个压缩格式的只读系统,有多种使用方法:
第一,可以放在一个硬盘分区上,作好启动设置后直接启动到这个只读squashfs系统。也可仅作为备份存储。
第二,可以拷贝到优盘上,把优盘做好启动设置(启动盘),可以作为(只读)随身带系统。
第三,可以恢复到一个指定的硬盘分区(需要把该分区的所有数据备份到其他地方)。
(注意,恢复时先进入squashfs系统,然后把这个分区格式化为ext4,分区的原有的所有数据不在存在)
第四,也可以使用boot=casper启动方式,但要求必须把squashfs文件放在某个分区的一个名字为casper的目录内。

第五, 最后的也是最重要的,制作成一个可写的固定vhd系统(仅需一个优盘作启动盘,启动方式是grub4dos或grub2)

先在windows下或者winPE下制作一个固定大小的VHD(最小8G,推荐16G或24G),初始化,
作分区(格式化为fat ntfs都可以,后面还需要格式化ext4),标记为活动分区。

再启动到squashfs系统,在这个系统里面先使用kpartx识别vhd,再把vhd上分区格式化为ext4,
挂载这个vhd上的分区后用rsync把整个系统克隆到已经做好的固定VHD上。

最后编辑好(启动盘)上的grub4dos grub2的启动菜单就可以了。

注释1:不管squashfs文件在硬盘还是在优盘,都可以只把启动方式做在优盘上,即grub4dos grub2和菜单都在优盘里,
这样不涉及本地硬盘的引导问题,是一种更安全的方式。然后把引导优盘插在电脑上启动后选择从优盘引导。

注释2 : 如果想用VirtualBox启动这个vhd,再在squashfs系统里给vhd盘安装grub2,手工编辑一下grub.cfg即可。
回复

使用道具 举报

369#
 楼主| 发表于 2020-4-30 09:51:46 | 显示全部楼层
xiaohuang233 发表于 2020-4-28 10:05
能不能做一个14.04的Ubuntu,安卓编译要用这个版本的

原来做过,没有留备份。确实需要可以按照一楼百度云链接的mydracut.zip中的教程自行制作。
不过如果是生产环境,建议安装在真实分区而不是vhd。
回复

使用道具 举报

370#
 楼主| 发表于 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里,注意格式*之间的空格 )

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


回复

使用道具 举报

371#
 楼主| 发表于 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"文件修改好再重启.
回复

使用道具 举报

372#
 楼主| 发表于 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文件所在分区.
回复

使用道具 举报

373#
 楼主| 发表于 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时候,虚拟文件系统作为虚拟设备,设备名称也不一样的。
回复

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-11 04:12

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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