linux使用镜像修改密码,linux VM映像chroot注入修改root密码

在提供VM给用户使用的时候,可能需要生成一个随机密码供用户第一次登陆VM使用,这就涉及到修改VM映像中root密码的问题。对于Linux映像而言,可以使用qemu-nbd和chroot来进行修改。本文中以CentOS为例(因为ubuntu更加简单)。

宿主机OS:Ubuntu 12.04LTS

VM OS:CentOS 6.2

首先,无论采用何种虚拟化技术,都要生成一个映像文件,可以是raw、qcow2等格式的,这里以kvm为例(因为比较方便,xen要写配置文件太麻烦),生成一个4G的映像文件。

# kvm-img create -f raw centos.img 4G

然后,将下载好的iso文件挂载到VM的光驱上,在映像中安装系统。

# kvm -m 1024 -cdrom CentOS-6.2-x86_64-minimal.iso -drive file=centos.img -boot d -net nic -net tap -nographic -vnc :6

(如果你对kvm不熟,注意:"-vnc"和冒号之间有个空格)

接下来,用VNC打开安装界面,按步骤安装。

# vncviewer 192.168.1.102:6

安装完以后就会进入系统,你可以自定义地配置映像中的系统来满足未来量产的需求。其中,为了能够通过chroot修改root密码,必须关闭SELINUX,否则使用chroot对系统文件进行修改都不会生效,因为受到SELINUX的保护。

# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

关闭VM,接下来把映像挂载起来用chroot进行修改。(如果不关机,也可以挂载映像文件并修改VM文件系统里的内容,但是似乎不会生效。)

用mount挂载全虚拟化模式下安装的映像文件是不行的,所以这里就要用到qemu-nbd,这个工具很强大,即便映像文件中的文件系统类型是ntfs的,也可以被挂载起来。

# qemu-nbd --connect=/dev/nbd0 /home/p_w_picpaths/centos.img

(这里的映像文件路径必须是绝对路径,qemu-nbd似乎不能识别相对路径)

# partprobe /dev/nbd0

# mount /dev/nbd0p1 /mnt

(具体分区表请通过fdisk -l /dev/nbd0查看)

挂载完毕后,chroot到/mnt下,然后使用passwd修改root密码

# chroot /mnt

# passwd root

修改完毕后,推出chroot的shell,卸载映像文件。

# exit

# umount /mnt

# qemu-nbd --disconnect /dev/nbd0

启动VM。

# kvm -m 1024 -drive file=centos.img -boot c -net nic -net tap -nographic -vnc :6

再登录VM的时候,会发现root密码已经被修改了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值