livecd修改linux文件,Linux下直接修改LiveCD系统

最近需要使用一个 LiveCD Linux 系统时发现原来的 root 密码忘了,无法进入系统,因此想到在另外一个 Linux 系统直接修改 LiveCD 系统里的 root 密码。

经过分析下 LiveCD 里 squashfs 文件系统的处理脚本中的流程,下面以 在 CentOS 6.1 Linux 系统中修改 RHEL 6.3 64位 USB LiveCD 为例介绍实际流程。

1、首先挂载 LiveCD 设备分区(假设为 sdb1 设备):

[root@localhost /]# mount /dev/sdb1 /mnt

[root@localhost /]# ls /mnt/LiveOS/

livecd-iso-to-disk osmin.img overlay-LIVE-B2C5-F047 squashfs.img

然后查看 /mnt 挂载路径下的文件,可以在 /mnt/LiveOS 下看到 squashfs.img 这个只读的 image 这个就是初始的 Linux 文件系统。

2、挂载初始 image 映像:

[root@localhost /]# mount -t squashfs -o ro,loop /mnt/LiveOS/squashfs.img /media

[root@localhost /]# mount

/dev/sda3 on / type ext3 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

nfsd on /proc/fs/nfsd type nfsd (rw)

/dev/sdb1 on /mnt type vfat (rw)

/mnt/LiveOS/squashfs.img on /media type squashfs (ro,loop=/dev/loop0)

[root@localhost /]# ls /media/LiveOS

ext3fs.img

这里将初始 image 映像挂载到 /media 路径下,需要注意的是新的 LiveCD 系统使用的基本都是最新的 squashfs 4.0 版本的映像,如果 Linux kernel 版本比较老的话可能无法正常挂载。

/media/LiveOS/ext3fs.img 就是映像中的 ext3 文件系统,如果想确认其中的内容,也可以手工挂载查看:

[root@localhost /]# mount -t ext3 -o ro,loop /media/LiveOS/ext3fs.img /misc

[root@localhost /]# ls /misc

bin boot dev etc home lib lib64 media misc mnt net opt proc root sbin selinux srv sys tmp usr var

[root@localhost /]# umount /misc

这里我们先不直接挂载 ext3 映像,而是使用下面快照的方式生成可读写的设备。

3、生成 ext3 文件系统的 loop 设备:

[root@localhost /]# losetup -f /media/LiveOS/ext3fs.img

[root@localhost /]# losetup -a

/dev/loop0: [0811]:124 (/mnt/LiveOS/squashfs.img)

/dev/loop1: [0700]:3 (/media/LiveOS/ext3fs.img)

完成之后使用 losetup -a 命令可以看到当前系统中所有的 loop 设备,初始 image 映像对应的 loop 设备为:/dev/loop0,ext3 loop 设备即为:/dev/loop1。

接着查看 LiveCD 设备分区中的 overlay 可读写快照文件:

[root@localhost /]# ls /mnt/LiveOS/overlay*

/mnt/LiveOS/overlay-LIVE-B2C5-F047

可以看到当前的 overlay 快照文件名为:overlay-LIVE-B2C5-F047(每个 LiveCD 系统的 overlay 文件名可能都不同),下面就可以生成 overlay loop 设备了:

[root@localhost /]# losetup -f /mnt/LiveOS/overlay-LIVE-B2C5-F047

[root@localhost /]# losetup -a

/dev/loop0: [0811]:124 (/mnt/LiveOS/squashfs.img)

/dev/loop1: [0700]:3 (/media/LiveOS/ext3fs.img)

/dev/loop2: [0811]:125 (/mnt/LiveOS/overlay-LIVE-B2C5-F047)

使用 losetup -a 命令可以看到 overlay loop 设备为:/dev/loop2。

4、生成快照 DM 设备:

[root@localhost /]# echo 0 `blockdev --getsz /dev/loop1` snapshot /dev/loop1 /dev/loop2 p 8 | dmsetup create live-rw

[root@localhost /]# dmsetup ls

VolGroup00-LogVol01 (253, 1)

live-rw (253, 2)

VolGroup00-LogVol00 (253, 0)

生成 DM 设备就需要用到上面生成的两个 loop 设备了,这里使用了 snapshot device mapper target 生成一个快照设备,/dev/loop1 表示源设备,/dev/loop2 表示存放差异数据的设备。

最终生成的 /dev/mapper/live-rw DM 设备就是我们最终需要的设备了,可以使用 dmsetup 命令查询到。

5、使用 DM 设备:

到这一步就可以直接挂载 DM 设备进行各种修改操作了:

[root@localhost /]# mount /dev/mapper/live-rw /misc

[root@localhost /]# mount

/dev/sda3 on / type ext3 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

nfsd on /proc/fs/nfsd type nfsd (rw)

/dev/sdb1 on /mnt type vfat (rw)

/mnt/LiveOS/squashfs.img on /media type squashfs (ro,loop=/dev/loop0)

/dev/mapper/live-rw on /misc type ext4 (rw)

[root@localhost /]# ls /misc

bin boot dev etc home lib lib64 lost+found media misc mnt net opt p proc root sbin selinux srv sys tmp usr var

修改完成之后不能忘记依次的释放操作:

[root@localhost /]# umount /misc

[root@localhost /]# dmsetup remove live-rw

[root@localhost /]# losetup -d /dev/loop2

[root@localhost /]# losetup -d /dev/loop1

[root@localhost /]# umount -d /media

[root@localhost /]# umount /mnt

上面几步依次为卸载挂载路径及释放 loop 设备的操作,最后重启回到修改之后的 LiveCD 系统就可以看到修改生效了。

无相关文章.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值