无忧启动论坛

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

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

    [复制链接]
646#
发表于 2015-11-29 19:39:25 | 只看该作者

dmsetup是自带的,加入到dracut 不起作用

要用dmsetup创建 /dev/mapper/loop0p1  ?

点评

倒不是.按理 kpartx 可以自动调用 losetup 和 dmsetup 的. 你这里的 vhd 是固定大小的吧? 如果不是,就需要把系统转移到一个固定vhd上. 如果是固定大小的,就需要深入分析 kpartx 的脚本来看原因了.  详情 回复 发表于 2015-11-29 22:06
回复

使用道具 举报

645#
 楼主| 发表于 2015-11-29 17:59:27 | 只看该作者
试试安装 dmsetup

点评

ee1
dmsetup是自带的,加入到dracut 不起作用 要用dmsetup创建 /dev/mapper/loop0p1 ?  详情 回复 发表于 2015-11-29 19:39
回复

使用道具 举报

644#
发表于 2015-11-29 17:33:26 | 只看该作者
本帖最后由 ee1 于 2015-11-29 17:47 编辑
2011niumao 发表于 2015-11-29 17:11
奇怪。记得我装的centos是在/dev/mapper/loop0p1.现在已经删除也没有办法验证。
那可以暂时性使用ubuntu ...


最小化安装了centos7, kpartx和losetup已经有了
又安装了ntfs-3g, 会不会少什么?
关键是kpartx  -av VHD      ,之后 显示添加了 loop0p1

确找不到loop0p1,  loop0位置在/dev/loop0

ubuntu没问题。
回复

使用道具 举报

643#
 楼主| 发表于 2015-11-29 17:11:44 | 只看该作者
ee1 发表于 2015-11-29 15:36
centos7 有kpartx,

kpartx  -av VHD      ,之后 显示添加 loop0p1

奇怪。记得我装的centos是在/dev/mapper/loop0p1.现在已经删除也没有办法验证。
那可以暂时性使用ubuntu的两个内核文件 或者 Fedora的两个内核 引导centos 。
我这里好像都是可以引导成功的。

点评

ee1
最小化安装了centos7, kpartx和losetup已经有了 又安装了ntfs-3g, 会不会少什么? 关键是kpartx -av VHD ,之后 显示添加 loop0p1  详情 回复 发表于 2015-11-29 17:33
回复

使用道具 举报

642#
发表于 2015-11-29 15:36:56 | 只看该作者
本帖最后由 ee1 于 2015-11-29 15:39 编辑
2011niumao 发表于 2015-11-19 13:20
对很多发行版,可以使用 partx 来代替 kpartx。这样就不用特意安装kpartx了。
命令一样  
但注意其输 ...


centos7 有kpartx,

kpartx  -av VHD      ,之后 显示添加 loop0p1
loop0p1的位置即不在/dev/mapper/loop0p1 也不在/dev/loop0p1 奇怪了!用losetup也能看到loop0p1 确找不到loop0p1的位置!
手动 和用05-vhdmount.sh都无法启动
fedora和 centos 差别好大啊

点评

奇怪。记得我装的centos是在/dev/mapper/loop0p1.现在已经删除也没有办法验证。 那可以暂时性使用ubuntu的两个内核文件 或者 Fedora的两个内核 引导centos 。 我这里好像都是可以引导成功的。  详情 回复 发表于 2015-11-29 17:11
回复

使用道具 举报

641#
 楼主| 发表于 2015-11-19 13:20:24 | 只看该作者

partx与kpartx

本帖最后由 2011niumao 于 2015-11-19 13:31 编辑
ee1 发表于 2015-11-17 16:31
呵呵,做好了
进入initramfs以后
mkdir -p /media


对很多发行版,可以使用 partx 来代替 kpartx。这样就不用特意安装kpartx了。
命令一样
  1. partx -av VHD文件名
复制代码

但注意其输出和kpartx 不一样,VHD的各个分区挂到的LOOP设备名称是 /dev/loop0p1 /dev/loop0p3 等等,
没有kpartx命令时候的 mapper目录。

这样在启动参数中 应该使用 /dev/loop0p3 这种格式来代替 /dev/mapper/loop0p3 ,其他不用变。就可以了。
例如ARCH就是如此。可以看看 ARCH-KLOOP 教程。

点评

ee1
centos7 有kpartx, kpartx -av VHD ,之后 显示添加 loop0p1 loop0p1的位置即不在/dev/mapper/loop0p1 也不在/dev/loop0p1 奇怪了 手动 和用05-vhdmount.sh都无法启动 fedora和 centos 差别好大啊  详情 回复 发表于 2015-11-29 15:36
回复

使用道具 举报

640#
发表于 2015-11-17 16:31:30 | 只看该作者
本帖最后由 ee1 于 2015-11-17 16:37 编辑
2011niumao 发表于 2015-11-17 10:55
嗯。需要给initrd.img加入一些原来没有的功能就必须重新制作initrd.img。
以下是在initramfs环境下手工 ...


呵呵,做好了
进入initramfs以后
mkdir -p /media
mount -t ntfs-3g -o rw /dev/sda2 /media
kpartx -av /media/kan/u.vhd
mount -t ext4 -o rw /dev/mapper/loop0p1 /root
exec chroot /root /sbin/init
就这样能启动了

要点是在vbox 进虚拟机
sudo apt-get install kpartx
然后编辑/usr/sbin/mkinitramfs只需要在# util-linux加入下面两行
copy_exec /sbin/losetup /sbin
copy_exec /sbin/kpartx /sbin

sudo /usr/sbin/mkinitramfs -o   /initrd.img 重做initrd.img
要是想不敲那几行命令  修改下/usr/share/initramfs-tools/scripts/local 我这儿没试

我这儿没装kpartx-boot,
这俩做好vhd貌似就有了,util-linux dmsetup
fedora是有kpartx这个包,http://mirrors.aliyun.com/fedora ... -80.fc23.x86_64.rpm
centos 里面没有kpartx这个包  epel仓库也没有,安装fedora 的kpartx包可能管用。。。

点评

对很多发行版,可以使用 partx 来代替 kpartx。这样就不用特意安装kpartx了。 命令一样 但注意其输出和kpartx 不一样,VHD的各个分区挂到的LOOP设备名称是 /dev/loop0p1 /dev/loop0p3 等等, 没有kpartx命令时  详情 回复 发表于 2015-11-19 13:20
很好的简化。  发表于 2015-11-18 18:28
回复

使用道具 举报

639#
发表于 2015-11-17 11:06:54 | 只看该作者
2011niumao 发表于 2015-11-17 10:55
嗯。需要给initrd.img加入一些原来没有的功能就必须重新制作initrd.img。
以下是在initramfs环境下手工 ...

多谢LZ!

现在把在真机里启动VHD的LINUX原理算是弄明白了,关键是挂在u.vhd
这样普适大多数LINUX发行版!
回复

使用道具 举报

638#
 楼主| 发表于 2015-11-17 10:55:21 | 只看该作者
ee1 发表于 2015-11-17 10:45
需要kpartx ,initramfs 里面没有kpartx,看来 重做initrd.img是必须的

嗯。需要给initrd.img加入一些原来没有的功能就必须重新制作initrd.img。
以下是在initramfs环境下手工启动的几个命令。测验还是成功的。供参考。
加括号的是上一行命令的变化,似乎都可以。
  1. mount -t ntfs-3g -o rw /dev/sda5 /host
  2. (mount -t ntfs -o rw /dev/sda5 /host)
  3. kpartx -av /host/ubuntu/UBUNTU-1510.vhd
  4. mount -t ext4 -o rw /dev/mapper/loop0p1 /root
  5. exec switch-root /root /sbin/init
  6. (exec chroot /root /sbin/init)
复制代码

点评

ee1
呵呵,做好了 进入initramfs以后 mkdir -p /media mount -t ntfs-3g -o rw /dev/sda2 /media kpartx -av /media/kan/u.vhd mount -t ext4 -o rw /dev/mapper/loop0p1 /root exec chroot /root /sbin/init 就这  详情 回复 发表于 2015-11-17 16:31
ee1
多谢LZ! 现在把在真机里启动VHD的LINUX原理算是弄明白了,关键是挂在u.vhd 这样普适大多数LINUX发行版!  详情 回复 发表于 2015-11-17 11:06
回复

使用道具 举报

637#
发表于 2015-11-17 10:45:31 | 只看该作者
2011niumao 发表于 2015-11-17 10:15
还是使用mount命令挂载ntfs分区。使用kpartx -av挂载vhd到loop设备上,再把/dev/mapper/loop0p1挂载到/ ...

需要kpartx ,initramfs 里面没有kpartx,看来 重做initrd.img是必须的

点评

嗯。需要给initrd.img加入一些原来没有的功能就必须重新制作initrd.img。 以下是在initramfs环境下手工启动的几个命令。测验还是成功的。供参考。 加括号的是上一行命令的变化,似乎都可以。  详情 回复 发表于 2015-11-17 10:55
回复

使用道具 举报

636#
发表于 2015-11-17 10:20:32 | 只看该作者
2011niumao 发表于 2015-11-17 10:15
还是使用mount命令挂载ntfs分区。使用kpartx -av挂载vhd到loop设备上,再把/dev/mapper/loop0p1挂载到/ ...

好的,试一下,多谢!
回复

使用道具 举报

635#
 楼主| 发表于 2015-11-17 10:15:17 | 只看该作者
ee1 发表于 2015-11-17 10:00
在initramfs 手动怎样挂载 root? 不用改动vhd 里面的initrd.img


还是使用mount命令挂载ntfs分区。使用kpartx -av挂载vhd到loop设备上,再把/dev/mapper/loop0p1挂载到/root。
手工chroot到/root。具体命令百度看看。

点评

ee1
需要kpartx ,initramfs 里面没有kpartx,看来 重做initrd.img是必须的  详情 回复 发表于 2015-11-17 10:45
ee1
好的,试一下,多谢!  详情 回复 发表于 2015-11-17 10:20
回复

使用道具 举报

634#
发表于 2015-11-17 10:00:59 | 只看该作者
2011niumao 发表于 2015-11-17 09:58
请到 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=336079&extra=page%3D1 一楼的链接下载vloop ...

在initramfs 手动怎样挂载 root? 不用改动vhd 里面的initrd.img

点评

还是使用mount命令吧。使用kpartx -av挂载vhd到loop设备上,再把/dev/mapper/loop0p1挂载到/root。 手工chroot到/root。具体命令百度看看。  详情 回复 发表于 2015-11-17 10:15
回复

使用道具 举报

633#
 楼主| 发表于 2015-11-17 09:58:46 | 只看该作者
ee1 发表于 2015-11-17 09:16
这个办法好!
原来 vhd 也能map ,呵呵,很好!


请到 http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1 一楼的链接下载vloop教程 kloop教程,任选其一按照教程制作。

点评

ee1
在initramfs 手动怎样挂载 root? 不用改动vhd 里面的initrd.img  详情 回复 发表于 2015-11-17 10:00
回复

使用道具 举报

632#
发表于 2015-11-17 09:16:14 | 只看该作者
本帖最后由 ee1 于 2015-11-17 09:54 编辑
2011niumao 发表于 2013-6-20 21:58
GRUB4DOS引导vbuntufix.vhd的菜单一种新法
=======不需要外部的vmlinuz initrd.img的文件,直接用vhd内部 ...


这个办法好!
原来 vhd 也能map ,呵呵,很好!

title UBUNTU MAP
find  --set-root --ignore-floppies --ignore-cd /kan/u.vhd
map  /kan/u.vhd (hd)
map  --hook

kernel (hd-1,0)/vmlinuz root=/dev/sda1 vloop=/kan/u.vhd vlooppart=p1
initrd (hd-1,0)/initrd.img


能进到initramfs ,可以看到/kan/u.vhd已经mount ,但是无法mount root,奇怪

init脚本怎样修改?  挂载根分区
或者在initramfs 手动怎样挂载 root?

点评

请到一楼的链接下载vloop教程 kloop教程,任选其一按照教程制作。  详情 回复 发表于 2015-11-17 09:58
回复

使用道具 举报

631#
 楼主| 发表于 2015-9-11 18:17:24 | 只看该作者
本帖最后由 2011niumao 于 2015-9-11 18:24 编辑
nyhfsl 发表于 2015-9-11 16:24
老大新问题。有能引导雪豹系统(传说苹果系统Apple.Mac.OSX.v10.7.Lion-iND.iso)的,引导文件吗?用你的引 ...


到了这一步,引导已经完成了. 感觉不是引导工具的事情.应该是系统的事情吧.就是initramfs里面那个init脚本需要修改,以便挂载根分区.

当然也可能是引导参数有问题.请检查核对.
回复

使用道具 举报

630#
发表于 2015-9-11 16:24:33 | 只看该作者
本帖最后由 nyhfsl 于 2015-9-11 16:49 编辑

老大新问题。有能引导雪豹系统(传说苹果系统Apple.Mac.OSX.v10.7.Lion-iND.iso)的,引导文件吗?用你的引导文件不能引导,进入命令行,不走了。

点评

到了这一步,引导已经完成了. 感觉不是引导工具的事情.应该是系统的事情吧.就是initramfs里面那个init脚本需要修改,以便挂载根分区.  详情 回复 发表于 2015-9-11 18:17
回复

使用道具 举报

629#
发表于 2015-8-22 08:24:45 | 只看该作者

谢谢大神,下载最新的grub通用启动器-2014-11-11,发现Grub4dos引导的NTBOOT不能启动 newwin7.vhd,通过对比旧版的menu.lst发现:
新:command /NTBOOT/NTBOOT NT6=/newwin7.vhd
旧:command (bd)/NTBOOT/NTBOOT NT6=/WIN7_VHD_CHILD.VHD
command后增加 (bd),可以正常引导启动,不知道有没有人碰到,分享下。

点评

谢谢分享  发表于 2015-8-22 10:49
回复

使用道具 举报

628#
 楼主| 发表于 2015-8-13 14:45:21 | 只看该作者
yweiqiang 发表于 2015-8-13 11:20
谢谢分享,之前已经下载第七版的VHD,正常使用,现在想更新,看帖子好像最新的是UBUNTU-14101-VHD-new吧? ...

应该是吧,

点评

谢谢大神,下载最新的grub通用启动器-2014-11-11,发现Grub4dos引导的NTBOOT不能启动 newwin7.vhd,通过对比旧版的menu.lst发现: 新:command /NTBOOT/NTBOOT NT6=/newwin7.vhd 旧:command (bd)/NTBOOT/NTBOOT N  详情 回复 发表于 2015-8-22 08:24
回复

使用道具 举报

627#
发表于 2015-8-13 11:20:31 | 只看该作者
谢谢分享,之前已经下载第七版的VHD,正常使用,现在想更新,看帖子好像最新的是UBUNTU-14101-VHD-new吧?下载文件夹下的所有东西,替换掉VHD就可以了吗?

点评

应该是吧,  详情 回复 发表于 2015-8-13 14:45
回复

使用道具 举报

626#
 楼主| 发表于 2015-8-13 10:28:24 | 只看该作者
sherylynn 发表于 2015-8-9 22:32
感谢楼主,请问一下,在grubpc.cfg的启动项中,在linux的行尾添加 text,为什么这样linux开机不能直接进入 ...

看了看 好像如此.这个与init文件代码有关.不好改.
回复

使用道具 举报

625#
发表于 2015-8-9 22:32:54 | 只看该作者
感谢楼主,请问一下,在grubpc.cfg的启动项中,在linux的行尾添加 text,为什么这样linux开机不能直接进入命令行,而在虚拟机中,通过编辑grub就可以实现呢

点评

看了看 好像如此.这个与init文件代码有关.不好改.  详情 回复 发表于 2015-8-13 10:28
回复

使用道具 举报

624#
发表于 2015-7-20 15:39:51 | 只看该作者
感谢分享!!!!!!!!!
回复

使用道具 举报

623#
 楼主| 发表于 2015-6-5 18:24:32 | 只看该作者
photor 发表于 2015-6-4 22:16
那就是说3.16.0-39版本的vhd引导内核没法引导实际系统的3.16.0-38内核了?另外我有点奇怪你这个39版本 ...

应该是 可以引导vhd的内核一定能引导实际系统和固定vhd系统的.3.16.0-39是自然升级升的.可能是软件源不一样造成的时间差别.
回复

使用道具 举报

622#
发表于 2015-6-4 22:16:37 | 只看该作者
2011niumao 发表于 2015-6-2 08:13
需要重新制作内核的.不过如果按照kloop教程操作一次,并把引导vhd内核initrd.img文件改为系统内核initrd名 ...


那就是说3.16.0-39版本的vhd引导内核没法引导实际系统的3.16.0-38内核了?另外我有点奇怪你这个39版本是从哪里来的,最新的稳定版也才38啊?
看来那个kloop制作教程我也得好好学了,等有时间了折腾折腾

点评

应该是 可以引导vhd的内核一定能引导实际系统和固定vhd系统的.3.16.0-39是自然升级升的.可能是软件源不一样造成的时间差别.  详情 回复 发表于 2015-6-5 18:24
回复

使用道具 举报

621#
 楼主| 发表于 2015-6-2 08:13:46 | 只看该作者
photor 发表于 2015-6-1 23:15
谢谢。不过每次更新内核之后都需要重新制作相应的vhd引导内核吗?没有办法用旧的vhd内核引导实际系统的新 ...

需要重新制作内核的.不过如果按照kloop教程操作一次,并把引导vhd内核initrd.img文件改为系统内核initrd名字并替换掉/boot/的内核,以后就可以自动更新到新版本了.

点评

那就是说3.16.0-39版本的vhd引导内核没法引导实际系统的3.16.0-38内核了?另外我有点奇怪你这个39版本是从哪里来的,最新的稳定版也才38啊? 看来那个kloop制作教程我也得学了,等有时间了折腾折腾  详情 回复 发表于 2015-6-4 22:16
回复

使用道具 举报

620#
发表于 2015-6-1 23:15:00 | 只看该作者
2011niumao 发表于 2015-6-1 22:06
http://pan.baidu.com/s/1bnnjBXX#path=%252FKLOOP
可以在这个连接下载kloop教程自己制作可以引导vhd的i ...

谢谢。不过每次更新内核之后都需要重新制作相应的vhd引导内核吗?没有办法用旧的vhd内核引导实际系统的新版本内核?3.16.0-39版本的会自动引导实际系统的3.16.0-38内核吗?

点评

需要重新制作内核的.不过如果按照kloop教程操作一次,并把引导vhd内核initrd.img文件改为系统内核initrd名字并替换掉/boot/的内核,以后就可以自动更新到新版本了.  详情 回复 发表于 2015-6-2 08:13
回复

使用道具 举报

619#
 楼主| 发表于 2015-6-1 22:06:45 | 只看该作者
photor 发表于 2015-6-1 17:42
楼主,我用你的kloop成功启动了原来虚拟机安装的kubuntu 14.04.2,内核是你给的百度网盘链接里的ubuntu-3.1 ...

http://pan.baidu.com/s/1bnnjBXX#path=%252FKLOOP
可以在这个连接下载kloop教程自己制作可以引导vhd的initrd.img

刚刚上传了一个3.16.0-39版本的.可以引导vhd的initrd.img vmlinuz.可以直接下载使用.

grub2这个缺点我也遇到过.还是卸载了保险.

点评

谢谢。不过每次更新内核之后都需要重新制作相应的vhd引导内核吗?没有办法用旧的vhd内核引导实际系统的新版本内核?3.16.0-39版本的会自动引导实际系统的3.16.0-38内核吗?  详情 回复 发表于 2015-6-1 23:15
回复

使用道具 举报

618#
发表于 2015-6-1 17:42:26 | 只看该作者
楼主,我用你的kloop成功启动了原来虚拟机安装的kubuntu 14.04.2,内核是你给的百度网盘链接里的ubuntu-3.16.0-30,这个跟kubuntu 14.04.2安装光盘上的内核版本是一致的。但是我sudo apt-get dist-upgrade更新系统之后遇到两个问题:
1、更新grub2的时候直接重写了物理硬盘的主引导记录(而不是vhd虚拟硬盘的主引导记录),导致机器重启后完全瘫痪,用usb启动后重建MBR才得以恢复,吓出我一身冷汗。后来为安全起见干脆删除了grub2,免得每次更新都要出问题。
2、kubuntu系统的内核更新到了3.16.0-38,但是用kloop启动时还是启动的3.16.0-30,如何才能启动到新内核?

点评

http://pan.baidu.com/s/1bnnjBXX#path=%252FKLOOP 可以在这个连接下载kloop教程自己制作可以引导vhd的initrd.img 刚刚上传了一个3.16.0-39版本的.可以引导vhd的initrd.img vmlinuz.可以直接下载使用. grub2  详情 回复 发表于 2015-6-1 22:06
回复

使用道具 举报

617#
 楼主| 发表于 2015-5-25 13:23:06 | 只看该作者
nyhfsl 发表于 2015-5-25 08:53
。。。。呢有能保存,数据的内存系统方法?

可以有的.道理有些像对squashfs只读系统保存修改的方法.详细的就不太懂了.不过可百度.资料很多的.
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-3 22:52

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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