制作initrd(6):重做Ubuntu安装盘
接上篇 制作initrd(5):解剖Ubuntu安装盘 。上一篇主要提到了分解Ubuntu安装盘,这篇是解剖的反过程--合成安装盘iso,内容相对比较少。
如果仅仅把安装盘拆开看看然后合回去,作为学习目的还可以,但是真的有点浪费篇幅了。其实,拆开的光盘还能塞点东西进去,就是所谓的定制光盘。笔者近期就遇到要把公司的一个客户端软件加密进Ubuntu光盘filesystem.squashfs镜像中,为了兼容amd/intel显卡,需要在initrd中判断系统显卡类型,因此加了个lshwex的程序(扩展Ubuntu lshw命令)。然后由initrd/casper脚本挂载2种不同显卡驱动的filesystem.squashfs。待filesystem.squashfs挂载完毕,需要解密公司的客户端程序。这里笔者写了一个简单的脚本,解决可执行程序依赖库
- #!/bin/bash
- dep_list=`ldd $1`|awk '{print $3;}'|grep -v "("`
- for list_entry in $dep_list;
- do
- echo $list_entry
- if [ -f $list_entry ]
- then
- cp -f $list_entry $2
- fi
- done
脚本接收2个参数,arg1是可执行程序路径 arg2是依赖库拷贝的目标位置。当然是从公版ubuntu发行版拷到定制版ubuntu中。
一切做完后,当然是要烧写iso,不要以为直接压缩一下就好,那样会丢失isolinux的引导信息。下面是同时支持UEFI/CSM启动模式的打包iso命令:
- cd path_to_dir_of_customed_iso
- sudo mkisofs -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot -r -J -o ../xxx.iso .
注意xxx.iso后面还有空格和一点
踩坑之路多回顾,不要在一个坑掉两次!
THINK TWICE,CODE ONCE!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!