站点图标 谷姐靓号网

浅谈linux一键重装的设计理念,Ubuntu,系统适配-天权璇玑

Rate this post

坛友bin456789最近搞出了小内存安装红帽8以上系统,ubuntu 22.04,alpine等系统的支持,是件可喜可贺的事,我读了他的代码,大概搞清楚了他实现的思路和原理:
在原系统写入一个centOS 7.6的引导,重启进入这个系统;
在centOS 7.6这个临时系统里,再去读取他github项目的配置,单硬盘环境,把硬盘格式化后,分为两个区,一个放系统iso镜像区,另一个用来写新系统,临时系统负责把iso镜像里的系统安装文件释放到另一个区,然后安装完毕,系统重启,新系统里再自动把镜像区格式化,再把容量和系统分区合并,形成一个完整的单盘,总体上来说是个非常巧妙的思路,令人敬佩。而且因为系统安装镜像不用在内存里加载,而是被放在硬盘上,所以也可以在低内存情况下实现红帽9以后系统的安装。
ubuntu 22.04以来的难点:
ubuntu虽然源自debian,但其母公司canonical野心已久,早就想脱离debian自立门户,从ubuntu 18.04开始,canonical为ubuntu添加了一种新的部署方式,就是cloud init,这个平台主要是给大的主机商用来自动给虚拟机自动化部署各类linux系统用的,配置文件格式和传统的debian preseed也完全不同,ubuntu对preseed文件的兼容与提供最小化网络安装微型系统的支持只持续到20版本,这还是在许多用户不满的情况下硬给的,到了22,canonical大砍一刀,把这种安装方式全部移除,所有人,要么自己准备第二个硬盘,下一个几个g的iso镜像安装ubuntu,要么指望主机商给的自动化部署,canonical还“贴心”地给散户一个自己部署cloud init自动安装的选项,但要求cpu必须支持虚拟化,这就把一大堆vps拒之门外,这种**傲慢,爱用用不爱用滚的态度,说实话挺侮辱人的,人家都赶我们这种低价值客户走了,还热脸贴冷**干啥。况且我们不还有debian kali 红帽系坚持传统,给用户自由的系统可以选不是。
当然,多亏了bin456789的巧妙思路,把硬盘第二个分区当做第二存储设备,写入系统文件的方法,让ubuntu22的网络安装成为可能,但我觉得这种方式还是不够优雅,因为在这种情况下,执行网络安装的程序从原系统变成了临时系统,导致只能读取一种自动文件安装,这也就意味着,如果原机器网络是静态的,临时的centOS 7.6是无法获取到网络信息并修改新的cloud init配置文件的,用户自定义端口,密码等功能也无法实现,适用的范围大幅缩窄。
从萌咖创立这个工具,到我改进这个工具,我们的理念是相同的,就是在保证泛用性的基础上,还要兼顾足够的自定义功能。采用先下一个临时中转系统,再安装目标系统的方法,会让调试,读取网络配置,传递用户自定义端口密码等工作变得异常繁杂,最省事的方法就是不传递这些参数,但是有这些需求的人怎么办?网络是静态配置的用户怎么办?不是所有人的机器都是dhcp,我无法接受引入一个新系统,却拒另一大部分人于门外,canonical有野心,脱离debian自立门户这个想法没问题,大不了我提供专门用来写cloud init的方法就是,但简单粗暴地砍掉加载精简安装系统启动环境文件,逼所有人下载一个巨大的iso文件来安装,要么就是得初始化一个虚拟机,拒绝所有cpu不支持虚拟化的机器安装,说难听点就是范建,人家那么高冷,咱还没羞没臊地去舔干啥,是吧

热议
2楼 爱吹海绵的泡泡 1小时前

这才是合格的mjj

3楼 鸡不择食 1小时前

支持大佬.

4楼 wangtaoceo 1小时前

顶赞

5楼 madebi 1小时前

似乎回到了技术帖频出的时候

6楼 bin456789 半小时前

又不是不能将配置文件放到分区/initrd里,我没搞而已

7楼 paw 27分钟前

顶赞

8楼 fyfy010 26分钟前

技术贴,顶了

9楼 飞来花开 19分钟前

绑定

10楼 lenend 17分钟前

搬个小板凳来学习,顶赞!

12楼 天权璇玑 2分钟前

bin456789 发表于 2023-5-13 10:12
又不是不能将配置文件放到分区/initrd里,我没搞而已

用原生支持加载一个精简系统,在内存里完成后续文件下载的linux,何必要分区,下载iso,装完了再合区,反正我觉得有点自讨苦吃

申明:本文内容由网友收集分享,仅供学习参考使用。如文中内容侵犯到您的利益,请在文章下方留言,本站会第一时间进行处理。

退出移动版