Ubuntu 镜像打包

Ubuntu 镜像打包

下载对应版本的iso镜像(本文为lubuntu-18.04.1-desktop-amd64.iso),并且确认是否安装根文件系统解压缩及打包工具,没有则通过命令安装:

(sudo) apt-get install squashfs-tools genisoimage

1、  解压iso镜像文件

(sudo) mkdir oldiso

(sudo) mount -o loop lubuntu-18.04.1-desktop-amd64.iso oldiso

(sudo) cp -rp oldiso newiso

(sudo) umount oldiso

2、  解压filesystem.squashfs文件

(sudo) unsquashfs newiso/casper/filesystem.squashfs

解压出来会生成squashfs-root目录,目录之下就是一个完整的系统文件结构

(sudo) mv squashfs-root iso

更改文件名,可有可无,只是为了后面敲的时候少敲一点

3、  连接网络(如果在chroot中需要网络的话)

(sudo) cp /etc/resolv.conf iso/etc/

(sudo) mount -o bind /run/ iso/run /

(sudo) cp /etc/hosts iso/etc/

4、  设备的挂载exp

(sudo) mount --bind /dev/ iso/dev

(sudo) chroot iso

mount -t proc none /proc

mount -t sysfs none /sys

mount -t devpts none /dev/pts

此处需要注意一点,在iso镜像文件制作完成之后。如果需要删除iso文件,在删除之前需要解除这些挂载。不然的话会影响主机系统的正常使用,直到重启主机。

5、  参数设置

export HOME=/root

export LC_ALL=C

6、  更新软件源(可选)

Ubuntu系统的软件源文件为/etc/apt/source.list

mv /etc/apt/source.list /etc/apt/source.list_bak

vi /etc/apt/source.list

apt-get update

7、  安装需要软件

apt-get install xxx

本次软件安装如下:

apt-get install python-pyqt5

apt-get install net-toolsapt apt-

apt-get install openssh-server

apt-get install virt-manager

apt-get install qemu-kvm libvirt-bin bridge-utils

手动安装方法:

1.在主机系统之中,复制软件包:

(sudo) cp xxx iso/var

  1. 进入iso系统

(sudo) chroot iso

  1. 进入var,安装软件

cd /var

Xxxxxxxxx

8、  根据需要修改系统配置(根据需要修改,以下修改只针对于虚拟机透传)

在此次的iso制作之中的修改如下:

vi /etc/modules

在文件之后添加以下三行:

vfio-pci

vfio

vfio_iommu_type1

vi /etc/modprobe.d/kvm.conf

添加:

options kvm ignore_msrs=1

options kvm allow_unsafe_assigned_interrupts=1

options kvm_intel emulate_invalid_guest_state=0

options vfio_iommu_type1 allow_unsafe_interrupts=1

注意,在iso安装时动态生成的文本,这样的修改是不生效的。在系统安装的时候,文本将会直接被覆盖(如/boot/grub/grub.cfg)。

10、卸载无用软件

可以使用dpkg命令查看,搜索已安装软件,使用autoremove命令卸载无用软件。

dpkg -l

dpkg-query -W --showformat=‘${Installed-Size} ${Package}\n‘ | sort -nr | less

apt-get autoremove xxx

为了系统的精简,可以将系统中无用软件一一删除。

apt-get autoremove galculator abiword gnumeric xpad fcitx leafpad firefox sylpheed mtpaint simple-scan audacious guvcview xfburn system-config-printer

11、清除安装包以及临时文件

apt-get clean

apt-get autoremove

rm -rf /tmp/* ~/.bash_history

rm /etc/resolv.conf

rm /etc/hosts

cd /var

rm xxx

12、删除挂载

umount /proc

umount /sys

umount /dev/pts

exit

(sudo) umount iso/dev

(sudo) umount iso/run

在umount /proc命令失败的情况之下,使用umount -lf /proc

13、iso打包

1)重新生成manifest及manifest-desktop文件:

(sudo) chmod +w newiso/casper/filesystem.manifest

(sudo) chroot iso dpkg-query -W --showformat=‘${Package} ${Version}\n‘ > newiso/casper/filesystem.manifest

(sudo) cp newiso/casper/filesystem.manifest newiso/casper/filesystem.manifest-desktop

(sudo) sed -i ‘/ubiquity/d‘ newiso/casper/filesystem.manifest-desktop

(sudo) sed -i ‘/casper/d‘ newiso/casper/filesystem.manifest-desktop

2)压缩文件系统:

(sudo) rm newiso/casper/filesystem.squashfs

(sudo) mksquashfs iso newiso/casper/filesystem.squashfs

(sudo) printf $(du -sx --block-size=1 iso | cut -f1) >newiso/casper/filesystem.size

3)删除旧的md5sum.txt文件并计算新的md5码

(sudo) cd newiso

(sudo) rm md5sum.txt

find -type f -print0 | (sudo) xargs -0 md5sum | grep -v isolinux/boot.cat | (sudo) tee md5sum.txt

4)创建ISO

(sudo) mkisofs -D -r -V "IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../my_lubuntu18.04.1-desktop-amd64.iso .

原文地址:https://www.cnblogs.com/52why/p/12363045.html

时间: 2024-12-19 00:23:01

Ubuntu 镜像打包的相关文章

docker run常用命令及 解决 ubuntu镜像无法识别 ifconfig ping 命令

docker run -it     docker 前端启动 container容器           -d             后端启动 container容器           -p             固定端口映射            -P             不固定端口映射           --name         给生成的容器起名字docker ps:默认显示正在运行的container       ps -a 显示所有的container容器docker r

搭建本地Ubuntu 镜像服务器

一.需求分析能不能在局域网搭建一个Ubuntu 镜像服务器,这样作的好处是可以节省Ubuntu某些常用工具的安装时间. 二.部署过程 2.1 测试环境目前在公司内有一台能连接到外网的Ubuntu机器, IP : 192.168.8.173 ,Ubuntu版本为Ubuntu 9.04 i686. 2.2 搭建步骤为了创建Ubuntu mirror 服务器,最少需要60G硬盘空间,Ubuntu每个版本都有32 bit和64 bit两个版本,有两组deb包.当然可以创建Ubuntu一个版本的32 bi

Docker的ubuntu镜像安装的容器无ifconfig和ping命令的解决

Docker的Ubuntu镜像安装的容器无ifconfig命令和ping命令 解决: apt-get update apt install net-tools       # ifconfig apt install iputils-ping     # ping

ubuntu下打包制作deb安装包

最近写了一个小程序,打算做成deb发布,折腾了两天,终于找到了一个简单的deb制作方法 1.首先要编译好程序,获得程序的可执行文件 2.新建一个文件夹,例如在用户目录下新建mydeb文件夹 3.在mydeb文件夹建立如下结构的文件夹和文件 |--mydeb |----usr |----lib |--可执行文件(安装后,就在你的/usr/lib生成相应的可执行文件) |----share |----icons |--deb.png(图标文件生成到/usr/share/icons/) |----ap

docker高级应用之镜像打包与节点推送

目前我这里使用docker做caas平台,主要是解决: 1.运维沙箱环境测试: 2.研发半自动化代码部署与回滚: 3.集群化应用与auto scale. 目前这3点都实现,但在第2点与第3点联系的时候有个问题.在第2里,研发测试成功的代码会被打包为一个images,放入私有库,然后第3部集群更新的时候,会选择这个成功版本的镜像,但在更新中,由于每个节点都需要从私有库里获取镜像,这样节点越多更新越慢,所以为了解决这个问题,我这里在第二步研发打包image之后,会进行一下所有节点推送,这样在进行集群

Centos和Ubuntu下打包项目

楼主新手一枚,在打包过程中踩了无数坑才打包成功,还不乏自己给自己挖的坑,其中艰辛不必多说,虽然网上教程众多,但可以将过程清楚描述给我这样新手的并不多,而且其中好多坑也都没有指出,今我把我所做的过程记录下来,一来分享给大家,二来以背日后还用. 过程参考https://www.cnblogs.com/lvdongjie/p/4187189.html. Centos下打包 一.源代码包 主要就是将项目打成压缩包,但有以下注意事项: 1.删除版本管理目录,比如.svn,.git等目录.避免源代码包过大,

docker镜像打包

以 .NET CORE 3.0重新打包加入gdiplus为例 镜像打包 1 查找镜像 1 从dockerhub拉取指定镜像 docker pull [images]:[version] 此处,我用dockerfile拉取的,我的命令 FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim 2 查看镜像信息列表 docker images 镜像是静态的,得到镜像id,880d85db3775 2 修改容器 1 将镜像运行起来 后台启动do

在Docker中使用ubuntu镜像搭建gitLib

使用环境: Docker version 1.6.1, build 97cd073 1.下载基础镜像 docker pull ubuntu:14.04 2.运行镜像 docker run -t -i ubuntu:14.04 /bin/bash 3,安装ssh apt-get update -y apt-get install -y openssh-client openssh-server #允许root用户登录 sed -i 's/PermitRootLogin without-passwo

docker教程——docker镜像打包上传

在开始使用URLOS进行docker应用开发之前,我们先来了解一下docker镜像的打包方法.首先,安装URLOS,安装完成之后,docker也随之安装到了主机里.执行以下命令安装URLOS: curl -SO https://www.urlos.com/install && chmod 544 install && ./install 简单制作一个属于自己的nginx镜像 基本流程:1.从docker云端拉取一个ubuntu-16.04的镜像:2.更新这个镜像,并安装ng