无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: 2011niumao
打印 上一主题 下一主题

[教程] 从 固定VHD与只读squashfs引导LINUX, UBUNTU ARCH Fedora Opensuse Mageia五种

    [复制链接]
151#
发表于 2015-7-2 13:31:40 | 只看该作者
楼主有空研究下centos....z装到vhd

点评

所有使用dracut的linux发行版原理上都可以这样处理.注意 手工编译ntfs-3g这一步看来是必须的.原来我一直以为他的作用只是防止关机时候出现的I/O buffer 错误.现在看在引导阶段为了能够以可写方式挂载ntfs分区上的vhd  详情 回复 发表于 2015-7-10 11:00
固定vhd上安装了一个centos.成功引导.为了简化,使用标准分区ext4.. 参考Fedora的方法.可以简化为两步 在一楼KLOOP连接里面下载 mydracut.zip 解压到主目录内, 第一步,手工编译安装ntfs-3g. 三个命令. 打开一个sh  详情 回复 发表于 2015-7-10 10:52
回复

使用道具 举报

152#
 楼主| 发表于 2015-7-10 10:52:41 | 只看该作者

需要手工编译安装ntfs-3g

本帖最后由 2011niumao 于 2015-7-10 11:01 编辑
carbonjiao 发表于 2015-7-2 13:31
楼主有空研究下centos....z装到vhd


固定vhd上安装了一个centos.成功引导.为了简化,使用标准分区ext4..
参考Fedora的方法.可以简化为两步
注意 需要安装gcc 检查kpartx命令是否安装.(我这里kpartx默认安装了)
在一楼KLOOP连接里面下载 mydracut.zip 解压到主目录内,
第一步,手工编译安装ntfs-3g. 三个命令.
打开一个shell  su  密码进入root模式.
进入ntfs-3gXXXXXXXXXX的目录,依次执行
  1. ./configure
  2. make
  3. make install
复制代码

第二步,制作可以引导固定vhd的initramfs.一个命令搞定.
  1. dracut  -i /home/niumao/mydracut/10-vhdmount-kloop.sh /lib/dracut/hooks/pre-mount/10-vhdmount-kloop.sh  --no-hostonly  --install " vi /etc/virc ps grep cat rm blkid losetup  kpartx partx mount.fuse mount.ntfs-3g ntfs-3g shutdown  lvm  vgchange  vgmknodes  vgscan  dmsetup dmeventd  "   --add-drivers  "fuse dm-mod "  -o " plymouth btrfs crypt  cifs fcoe fcoe-uefi iscsi nfs nbd"  /home/niumao/dracut-centos-kloop
复制代码
回复

使用道具 举报

153#
 楼主| 发表于 2015-7-10 11:00:56 | 只看该作者
carbonjiao 发表于 2015-7-2 13:31
楼主有空研究下centos....z装到vhd

所有使用dracut的linux发行版原理上都可以这样处理.注意 手工编译ntfs-3g这一步看来是必须的.原来我一直以为他的作用只是防止关机时候出现的I/O buffer 错误.现在看在引导阶段为了能够以可写方式挂载ntfs分区上的vhd,也需要手工编译安装ntfs-3g.(原因可能是内核所带ntfs驱动只能只读挂载ntfs分区.)

点评

我把出问题[fail to start journal service]的vhd中 ntfs-3g 删掉,apt-get安装未fix过的ntfs-3g ,虽然引入了i/o buffer的问题,但是journal的问题解决了,重新生成的initrd依然能挂载可读写ntfs分区,不解  详情 回复 发表于 2015-9-8 15:43
感谢 一下忘记 Centos 和 Federa 都是 红帽子系了。。。  详情 回复 发表于 2015-7-15 15:59
回复

使用道具 举报

154#
发表于 2015-7-15 15:59:45 | 只看该作者
2011niumao 发表于 2015-7-10 11:00
所有使用dracut的linux发行版原理上都可以这样处理.注意 手工编译ntfs-3g这一步看来是必须的.原来我一直 ...

感谢   

一下忘记 Centos 和 Federa 都是 红帽子系了。。。
回复

使用道具 举报

155#
发表于 2015-7-18 11:26:18 | 只看该作者
来学习啦!!!
回复

使用道具 举报

156#
发表于 2015-9-6 11:36:36 | 只看该作者
请教一下,现在日常从硬盘中的vhd直接启动是正常的,但用virtualbox启动vhd中的Ubuntu,使用修改过的内核3.19.0-26会提示Error - systemd[1]: Failed to start Journal Service,但使用没有经过 mkinitramfs的3.19.0-15内核启动在virtualbox启动就是没有报错的,请问是vhd引导造成的么?

点评

应该不是vhd引导的原因,猜测是systemd的问题.可以更新到最新后重新制作一下,也许可以变好.  详情 回复 发表于 2015-9-6 18:56
应该不是vhd引导的原因,猜测是systemd的问题.可以更新到最新后重新制作一下,也许可以变好.  详情 回复 发表于 2015-9-6 18:56
回复

使用道具 举报

157#
 楼主| 发表于 2015-9-6 18:56:28 | 只看该作者
sherylynn 发表于 2015-9-6 11:36
请教一下,现在日常从硬盘中的vhd直接启动是正常的,但用virtualbox启动vhd中的Ubuntu,使用修改过的内核3. ...

应该不是vhd引导的原因,猜测是systemd的问题.可以更新到最新后重新制作一下,也许可以变好.
回复

使用道具 举报

158#
 楼主| 发表于 2015-9-6 18:56:28 | 只看该作者
sherylynn 发表于 2015-9-6 11:36
请教一下,现在日常从硬盘中的vhd直接启动是正常的,但用virtualbox启动vhd中的Ubuntu,使用修改过的内核3. ...

应该不是vhd引导的原因,猜测是systemd的问题.可以更新到最新后重新制作一下,也许可以变好.

点评

更新到最新了,没有效果,不知道15.10出来后会不会变好,现在尝试重新用centos制作一个  详情 回复 发表于 2015-9-7 11:49
回复

使用道具 举报

159#
发表于 2015-9-7 11:49:01 | 只看该作者
2011niumao 发表于 2015-9-6 18:56
应该不是vhd引导的原因,猜测是systemd的问题.可以更新到最新后重新制作一下,也许可以变好.

更新到最新了,没有效果,不知道15.10出来后会不会变好,现在尝试重新用centos制作一个
回复

使用道具 举报

160#
发表于 2015-9-8 15:43:26 | 只看该作者
2011niumao 发表于 2015-7-10 11:00
所有使用dracut的linux发行版原理上都可以这样处理.注意 手工编译ntfs-3g这一步看来是必须的.原来我一直 ...

我把出问题[fail to start journal service]的vhd中 ntfs-3g 删掉,apt-get安装未fix过的ntfs-3g ,虽然引入了i/o buffer的问题,但是journal的问题解决了,重新生成的initrd依然能挂载可读写ntfs分区,不解

点评

我也不懂.慢慢折腾看吧.  发表于 2015-9-8 18:56
回复

使用道具 举报

161#
发表于 2015-10-19 15:29:20 | 只看该作者
yGeo 发表于 2015-2-10 22:49
亲测Debian使用vloop方法成功!刚才所出现的问题是由于Ubuntu和Debian的local文件差异导致的。
总结Debian ...

debian 来制作vhd的情况下,最后修改完的文件是怎么样的呢,可否分享一下?我按照教程走,制作出来的依然有报错,能开机不能关机
回复

使用道具 举报

162#
发表于 2015-11-5 08:22:46 | 只看该作者
LZ好。 最近在使用syslinux 602 启动一连串的linux ,在启动您的UBT-SMALL VHD时,使用:
  kernel /ubuntu/vmlinuz-3.13.0-45-generic root=UUID=%?%  vloop=/ubuntu/ubt-small.vhd  vlooppart=p1
   append initrd=/ubuntu/initrd.img-3.13.0-45-generic
不能实现 UUID ,chroot 完成不了。但我想了一个笨办法,改成:
kernel /ubuntu/vmlinuz-3.13.0-45-generic root=/dev/sda2  vloop=/ubuntu/ubt-small.vhd  vlooppart=p1
   append initrd=/ubuntu/initrd.img-3.13.0-45-generic
则一路畅通无阻,能启动起来,但中间有些报错,无关紧要。 LZ可以研究一下,用syslinux 引导您的各种VHD 。

点评

多谢反馈.也遇到过有时UUID不灵的情况.使用你的这招很有效的. 最近发现linux内核4.0以后会出现一种新错误,进入系统后命令行 dmesg 查看信息,有 blk_update_required I/O error /dev/loop0 sector xxxxxxxxxxxxxxx  详情 回复 发表于 2015-11-5 08:46
回复

使用道具 举报

163#
 楼主| 发表于 2015-11-5 08:46:37 | 只看该作者
本帖最后由 2011niumao 于 2015-11-5 10:32 编辑
jxdeng 发表于 2015-11-5 08:22
LZ好。 最近在使用syslinux 602 启动一连串的linux ,在启动您的UBT-SMALL VHD时,使用:
  kernel /ubunt ...


多谢反馈.也遇到过有时UUID不灵的情况.使用你的这招很有效的.
最近发现linux内核4.0以后会出现一种新错误,进入系统后命令行 dmesg 查看信息,有
blk_update_request: I/O error, dev loop0, sector 25227520
不妨碍使用.但也找不到解决方法.
3.版本的内核没有这个错误.很奇怪.看来只能等到内核大更新才行了.

点评

这个毛病并不是vhd系统特有的。硬盘系统中,如果挂在一个vhd,也会出现同样的错误。 问题像是dm类型设备的驱动问题。不好解决的。  详情 回复 发表于 2015-11-5 10:34
回复

使用道具 举报

164#
 楼主| 发表于 2015-11-5 10:34:53 | 只看该作者
本帖最后由 2011niumao 于 2015-11-8 09:17 编辑
最近发现linux内核4.0以后会出现一种新错误,进入系统后命令行 dmesg 查看信息,有
blk_update_request: I/O error, dev loop0, sector 25227520
不妨碍使用.但也找不到解决方法.
3.版本的内核没有这个错误.很奇怪.看来只能等到内核大更新才行了

一个解决方法是  只是用版本3(3.19.0-32)的linux内核直接启动vhd,虚拟机则可以使用版本4的最新内核(4.2.0-17)。
可以编辑源 /etc/apt/sources.list,把1510的wily替换为1504的vivid,
然后安装3.19.0-32的内核,
再编辑/etc/apt/sources.list,把vivid替换为wily .
把3.19.0-32的内核拷贝出来。
回复

使用道具 举报

165#
发表于 2015-11-10 16:00:26 | 只看该作者
LZ好!
   今天用syslinux 602 试试引导您 1404LIVE ,G4D的引导串是:
title UBUNTU14.04LIVE
find --set-root --ignore-floppies --ignore-cd /casper/UBUNTU1404-20140422.squashfs
kernel /casper/vmlinuz-3.13.0-24-generic  boot=casper
initrd /casper/initrd.img-3.13.0-24-generic

改成 syslinux 引导串是,
LABEL ubuntu1404
MENU LABEL 1. Ubuntu Live 1404
      kernel /casper/vmlinuz-3.13.0-24-generic  boot=casper
       append initrd=/casper/initrd.img-3.13.0-24-generic
成功引导!!! 但是改成以下引导串:

LABEL ubuntu1404
MENU LABEL 1. Ubuntu Live 1404
      kernel /casper1404/vmlinuz-3.13.0-24-generic  boot=casper
      append initrd=/casper1404/initrd.img-3.13.0-24-generic
却一系列的报错,不能引导起来。不知何故?? 把boot=casper
改成boot=casper1404 也不成。
boot=casper 的casper 是目录名吗? 还是 定制好了的参数。
我想 把1204 1404 1410等几个版本放在一个分区,要怎样存放? 请LZ指教。

点评

jxdeng中将好。 casper是一种启动机制,同时也是这个机制要求的目录名称。参数 boot=casper 不能更改。 当系统检查启动参数,发现有 boot=casper 后就检查硬盘上是否有 casper 目录,有的话就 挂载其目录内的 .sq  详情 回复 发表于 2015-11-11 13:43
回复

使用道具 举报

166#
发表于 2015-11-10 17:17:51 | 只看该作者
vbuntufix-12042live-new  这个版本的 G4D 引导串 ? 是不是也跟ubuntu / casper   有关。

点评

如果表明是live系统,只能使用 boot=casper 这中引导参数。  详情 回复 发表于 2015-11-11 13:44
回复

使用道具 举报

167#
 楼主| 发表于 2015-11-11 13:43:00 | 只看该作者
jxdeng 发表于 2015-11-10 16:00
LZ好!
   今天用syslinux 602 试试引导您 1404LIVE ,G4D的引导串是:
title UBUNTU14.04LIVE

jxdeng中将好。
casper是一种启动机制,同时也是这个机制要求的目录名称。参数 boot=casper 不能更改。
当系统检查启动参数,发现有 boot=casper 后就检查硬盘上是否有 casper 目录,有的话就
挂载其目录内的 .squashfs文件作为根目录并转换到该文件内部的只读系统。

这样如果有多个casper目录 ,可能会随机选中一个。如果 casper 目录下有很多 squashfs 文件,
也都会挂载,但只有一个挂载为根目录。到底是呢一个无法预先指定。

我是使用手工笨办法。capser只留一个。内部的squashfs文件很多,但都改名为 squashfs1 文件,只保留一个
squashfs 文件。让它启动到这个文件內。需要启动到其他文件时候再更改后缀。
回复

使用道具 举报

168#
 楼主| 发表于 2015-11-11 13:44:31 | 只看该作者
jxdeng 发表于 2015-11-10 17:17
vbuntufix-12042live-new  这个版本的 G4D 引导串 ? 是不是也跟ubuntu / casper   有关。

如果表明是live系统,只能使用 boot=casper 这中引导参数。
回复

使用道具 举报

169#
发表于 2015-11-11 18:25:35 | 只看该作者
感谢老师的解答。我也是跟你一样用笨办法!启动哪个版本时,再更改目录名为capser。确有不灵活之嫌。我用syslinx 基本可以引导您的Live/VHD系统,但好像syslinux 不如改g4d 快。请问老大,Live系统的定制/squashfs文件的教程有吗,想学学。

点评

几点注释 1, 第二个方法是查看UCloner脚本看出来的. 所以两个方法没有区别. 但参数 -b 262144 可以得到更大的压缩率.大约多压缩四分之一. 2,mksquashfs命令的 -e 后面的是不要压缩,被排除的目录和文件.需要使用相  详情 回复 发表于 2015-11-12 16:44
两个方法: 第一个方法,使用现成软件叫 UCloner 。 下载后解压到主目录直接使用。 我验证在UBUNTU 1510上依然可以使用图形界面。 只需要解决一下依赖 第二个方法 使用mksquashfs命令。需要安装squashfs-to  详情 回复 发表于 2015-11-11 20:51
回复

使用道具 举报

170#
发表于 2015-11-11 18:41:38 | 只看该作者
这个比较厉害啊,需要这个技能,先收藏了!!!
回复

使用道具 举报

171#
发表于 2015-11-11 18:42:45 | 只看该作者
求大神指导下,在UEFI下如果直接启动一个ISO镜像!!!

点评

不懂什么算是直接启动。一般我使用grub2来UEFI启动LINUX。windows没有机器测试。 参考第一楼的KLOOP共享的内的小grub通用启动器,其内有使用说明。  详情 回复 发表于 2015-11-11 21:05
回复

使用道具 举报

172#
 楼主| 发表于 2015-11-11 20:51:57 | 只看该作者

制作LIVE-UBUNTU的方法

本帖最后由 2011niumao 于 2015-11-14 21:09 编辑
jxdeng 发表于 2015-11-11 18:25
感谢老师的解答。我也是跟你一样用笨办法!启动哪个版本时,再更改目录名为capser。确有不灵活之嫌。我用sy ...


首先给UBUNTU安装lupin-casper casper
  1. sudo apt-get install lupin-casper  casper
复制代码


其次把现有系统制作成squashfs文件(参考UCloner使用说明)

两个方法:
第一个方法,使用现成软件叫 UCloner 。
下载后解压到主目录直接使用。
我验证在UBUNTU 1510上依然可以使用图形界面。
只需要解决一下依赖
  1. sudo apt-get install python-gtk2 zenity python-vte
  2. sudo apt-get install  python-glade2
复制代码

第二个方法   使用mksquashfs命令。需要安装squashfs-tools 。
然后依次执行以下命令
  1. sudo mkdir /tmp/mmnntt /tmp/ttmmpp
  2. sudo mount /dev/mapper/loop0p3 /tmp/mmnntt
  3. sudo mksquashfs /tmp/mmnntt /tmp/ttmmpp/myubt.squashfs -b 262144 -comp xz -e tmp/mmnntt tmp/ttmmpp
复制代码

其中 /dev/mapper/loop0p3 是根设备的名字,再挂载一次。/tmp/ttmmpp下面的myubt.squashfs就是做好的squashfs文件了。然后把他拷贝到主目录内。不然重启后就没有了。

我是使用第二个方法制作squashfs,使用第一个方法解压恢复系统。
回复

使用道具 举报

173#
 楼主| 发表于 2015-11-11 21:05:05 | 只看该作者
boy6585948 发表于 2015-11-11 18:42
求大神指导下,在UEFI下如果直接启动一个ISO镜像!!!

不懂什么算是直接启动。一般我使用grub2来UEFI启动LINUX。windows没有机器测试。
参考第一楼的KLOOP共享的内的小grub通用启动器,其内有使用说明。

点评

就是启动菜单里可以选择启动Linux系统或者启动ISO  详情 回复 发表于 2015-11-12 09:32
回复

使用道具 举报

174#
发表于 2015-11-12 09:32:04 | 只看该作者
2011niumao 发表于 2015-11-11 21:05
不懂什么算是直接启动。一般我使用grub2来UEFI启动LINUX。windows没有机器测试。
参考第一楼的KLOOP共享 ...

就是启动菜单里可以选择启动Linux系统或者启动ISO

点评

那么小grub通用启动器是可以做到的。只需要编辑一下菜单文件 /grub2/grubefi.cfg加入你需要的ISO启动项就可以了。下载后解压到fat32优盘里,编辑菜单,从优盘UEFI启动可以出来菜单的。  详情 回复 发表于 2015-11-12 12:21
回复

使用道具 举报

175#
 楼主| 发表于 2015-11-12 12:21:53 | 只看该作者
boy6585948 发表于 2015-11-12 09:32
就是启动菜单里可以选择启动Linux系统或者启动ISO

那么小grub通用启动器是可以做到的。只需要编辑一下菜单文件 /grub2/grubefi.cfg加入你需要的ISO启动项就可以了。下载后解压到fat32优盘里,编辑菜单,从优盘UEFI启动可以出来菜单的。
回复

使用道具 举报

176#
 楼主| 发表于 2015-11-12 16:44:25 | 只看该作者
jxdeng 发表于 2015-11-11 18:25
感谢老师的解答。我也是跟你一样用笨办法!启动哪个版本时,再更改目录名为capser。确有不灵活之嫌。我用sy ...

几点注释
1, 第二个方法是查看UCloner脚本看出来的. 所以两个方法没有区别. 但参数 -b 262144 可以得到更大的压缩率.大约多压缩四分之一.
2,mksquashfs命令的 -e 后面的是不要压缩,被排除的目录和文件.需要使用相对路径.
3,mksquashfs可以用于任何LINUX发布版.即任何发布版都可以制作成LIVE系统,问题是引导问题,需要制作initramfs吧.
或者猜想可以使用发行光盘中的initramfs.
4,备份根系统需要重新挂载根系统到一个目录上,这样一些特殊的目录,如 proc sys 就只有空目录了.不然无法备份.
这个也是看UCloner脚本看出来的.
5.可以使用rsync命令恢复系统,不过还是喜欢使用UCloner的图形界面.
6,在恢复系统时候 在UCloner的图形界面可以手工填写 分区 /dev/mapper/loop0p3 分区格式填 ext4,
可以把squashfs系统恢复到虚拟磁盘分区,如固定vhd文件或固定大小img文件.

回复

使用道具 举报

177#
发表于 2015-11-12 17:28:50 | 只看该作者
本帖最后由 mac3000 于 2015-11-12 19:05 编辑

openSUSE13.2和fedora22使用kloop启动成功反馈
需要联网安装
openSUSE13.2先安装
sudo zypper in gcc make
fedora22先安装
sudo dnf install  gcc
然后
cd $HOME/mydracut/ntfs-3g_ntfsprogs-2015.3.14.fixed
sh configure         楼主教程中./configure运行出错
make
sudo make install       楼主教程中无install启动出错
以上必须先运行,然后制作启动文件
grub4dos启动成功

点评

谢谢反馈和分享  发表于 2015-11-12 18:50
谢谢反馈和分享  发表于 2015-11-12 18:50
回复

使用道具 举报

178#
发表于 2015-11-12 18:46:18 | 只看该作者
本帖最后由 mac3000 于 2015-11-12 18:48 编辑

Mageia5使用kloop启动出错:

12158.jpg (433.91 KB, 下载次数: 494)

12158.jpg

点评

从出错信息看是根目录没有挂载成功. 请检查一下引导信息是不是正确, 另外制作dracut的过程是否正确---是否安装了kpartx 不安装kpartx 使用partx需要修改10-vhdmount-kloop.sh,并且需要修改引导信息 把/dev/mappe  详情 回复 发表于 2015-11-12 19:01
回复

使用道具 举报

179#
 楼主| 发表于 2015-11-12 19:01:01 | 只看该作者
mac3000 发表于 2015-11-12 18:46
Mageia5使用kloop启动出错:

从出错信息看是根目录没有挂载成功.
请检查一下引导信息是不是正确,
另外制作dracut的过程是否正确---是否安装了kpartx
不安装kpartx 使用partx需要修改10-vhdmount-kloop.sh,并且需要修改引导信息
把/dev/mapper/loop0p1 改为 /dev/loop0p1
回复

使用道具 举报

180#
发表于 2015-11-12 22:56:21 | 只看该作者
2011niumao 发表于 2015-11-12 19:01
从出错信息看是根目录没有挂载成功.
请检查一下引导信息是不是正确,
另外制作dracut的过程是否正确--- ...

  kpartx安装后,再制作,启动出错:

123.jpg (418.37 KB, 下载次数: 465)

123.jpg

点评

应该是引导参数问题.请参考jxdeng的回复中的方法. 把引导参数中的 root=UUID=XXXXXXXXXXXXXXXX 更改为 root=/dev/sda5 其中数字5看你的具体情况,指vhd文件所在分区的序号(主1234逻辑5678).或者 root=/dev/dist/by-l  详情 回复 发表于 2015-11-13 10:24
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-7-6 05:30

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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