[转]制作Linux的DD包

首先我们需要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

方法一(centos7):

在/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 

方法二(centos8):

mkinitrd -f --allow-missing \
            --with=virtio_blk --preload=virtio_blk \
            --with=virtio_net --preload=virtio_net \
            --with=virtio_console --preload=virtio_console \
            /boot/initramfs-$(uname -r).img $(uname -r)
(centos7):

mkinitrd -f --allow-missing \
            --with=xen-blkfront --preload=xen-blkfront \
            --with=virtio_blk --preload=virtio_blk \
            --with=virtio_pci --preload=virtio_pci \
            --with=virtio_console --preload=virtio_console \
            /boot/initramfs-$(uname -r).img $(uname -r)

然后确认驱动是否成功添加

lsinitrd /boot/initrd-$(uname -r) | grep virtio

有输出就行。

3,清除命令执行历史记录

cd ~
ls -a

如果有 .XX_history (XX可能为bash,ash等等)的话

echo "" > .XX_history

然后就可以关机开始打包DD包了

找到虚拟机的硬盘文件(.VHD)

然后用7zip压缩成gz压缩包

压缩等级随意,如果比较闲的话可以选择极限压缩(最小但是很耗时)


DD完成后硬盘空间并不会自动扩展,需要通过lvm相关命令扩容

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《[转]制作Linux的DD包》
文章链接:https://wrlog.cn/2022/06/1236/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。