rt
Vicer大佬的DD脚本Centos最高只支持到6,而且不支持其他发行版(比如Fedora,OpenSUSE等)。
这里记录下如何制作一个linux系统的DD包。
转载请注明作者。
以OpenSUSE为例。
首先我们需要VirtualBox来创建使用VHD来做硬盘的虚拟机。
VirtualBox下载:https://www.virtualbox.org/wiki/Downloads
打开后如下:
点击新建
名称随意
内存推荐尽量大(比如2048MB)
然后点击创建
文件位置选一个自己找的到的地方,
为保证兼容性,文件大小尽量越小越好。Centos7 最小安装只需要2GB空间就行,OpenSUSE最小安装则需要3GB。
然后点击创建
创建完成后,进入到刚才创建的虚拟机的设置里,把安装CD挂上然后就可以开机进行安装了。
安装的时候,网络建议选DHCP,其他选项随意。
到了硬盘分区设置时需要按照如下设置:
确保硬盘格式为DOS(MBR)
创建两个分区:sda1和sda2
sda1 请设置成 /boot 分区 文件系统随意(这里是ext4)。分区至少200M大小
sda2 请设置成 linux LVM物理卷 并使用剩余的所有空间。(方便以后扩充硬盘空间)
使用sda2物理卷新建一个 卷组vg0(名称可以随意)
在vg0上分出来一个逻辑卷lv_root (名称可以随意) 用来挂载在 / 当系统盘,使用卷组的所有空间。文件系统类型随意(这里是ext4)
然后就可以开始安装了。
安装完成后:
登入root账户,开始做最后的准备工作。
1,禁用自动修改网卡名:
防止在一些奇怪的网卡驱动下出现无法启动网络的情况。
首先修改 /etc/default/grub (如果有的话)
在GRUB_CMDLINE_LINUX_DEFAULT行后边添加
net.ifnames=0 biosdevname=0
保存退出后运行grub2-mkconfig -o /boot/grub2/grub.cfg 重新生成grub配置文件然后重启。
如果系统没有grub2而是用grub或者syslinux来引导的话
grub:修改/boot/grub/grub.cfg
在系统启动使用的linux行后添加net.ifnames=0 biosdevname=0
syslinux:修改/boot/extlinux.conf
在系统启动使用的linux行后添加net.ifnames=0 biosdevname=0
系统重启后,使用
ip addr
来查看并确保主网卡名为eth0
接下来打开/etc/sysconfig/network-scripts或者/etc/sysconfig/network
确认主网卡配置文件名为ifcfg-eth0并且里面DEVICE行值为eth0
MAC地址必须清空
然后检查/etc/udev/rules.d/70-persistent-net.rules是否存在,有的话删掉
2, 修复启动
打开系统的引导文件
比如/boot/grub2/grub.cfg
确保set root行值不为UUID=XXXXXXXXXXXXXXXXXXXXXXXXXX
如果是的话请修改成hd0,1
然后重启确认系统可以正常启动。
最后修改/etc/fstab
将/boot使用的分区删掉
然后在rc.local或者其他能自启动的地方加上
mount /dev/*da1 /boot
同时,系统之前生成的initramfs很可能不包含一些虚拟化驱动。这会导致系统在使用一些vps上无法识别到硬盘。
所以要使用硬盘的话还需要给现在的initramfs额外加上的scsi驱动。首先打开/boot/grub2/grub.cfg查看当前使用的initramfs
在/etc/dracut.conf里添加
add_drivers+="virtio virtio_scsi virtio_blk xen_blkfront xenfs xen_privcmd hv_storvsc hv_vmbus hv_utils mptspi scsi_transport_spi mptscsih mptbase"
解释一下:
virtio virtio_scsi virtio_blk是kvm virtio驱动
xen_blkfront xenfs xen_privcmd 是 xen的驱动
hv_storvsc hv_vmbus hv_utils 是 hyper-v的驱动
mptspi scsi_transport_spi mptscsih mptbase是 vmware的驱动
然后
dracut -f
然后确认驱动是否成功添加
lsinitrd /boot/initrd-$(uname -r) | grep virtio
有输出就行。
3,清除命令执行历史记录
cd ~
ls -a
如果有 .XX_history (XX可能为bash,ash等等)的话
echo "" > .XX_history
然后就可以关机开始打包DD包了
找到虚拟机的硬盘文件(.VHD)
然后用7zip压缩成gz压缩包
压缩等级随意,如果比较闲的话可以选择极限压缩(最小但是很耗时)
DD完成后硬盘空间并不会自动扩展,
可以参考https://cosmiccat.net/2018/06/335/
手动扩展空间
感谢博主撰写Linux dd包的教程。
图片挂了 能修复下么 谢谢
已修复
centos 7 按照教程制作dd镜像,dd后无法启动,直接是网卡dhcp启动,请问是哪个步骤有问题吗
感谢博主解决了我找了半年的制作教程的疑问,请问可以加个qq让我仰望下吗?
很有用的教程。在添加Virtio驱动那里,反复测试没有成功,希望能出一个视频教程,谢谢!
您好:
由于某第三方小厂的系统极其不好用,
因此用您的脚本尝试在小vps重装……但忽略了内存限制,
在气头上以为是厂商限制不能重装,然后发工单痛骂客服,
所以能否在脚本中添加一个小小的内存检测功能?若不满足最低要求自动报错而不是进入重装瘫痪服务器,万谢!
顺祝文祺!
闻着pingback的味就来了 谢谢大佬赏识