centos7无盘启动_200M Linux 可以通过网络启动,批量自动部署或直接无盘运行了 (附配置 iPXE 无盘启动说明)...
之前介绍的 /t/330321 这个系统现在可以无盘启动了
简单来说就是通过网络加载镜像文件到内存后启动,现在实验的这几十台机器是通过 http 和 https 进行加载的,
由于主要是加载一个一百多兆镜像文件,感觉用 tcp 协议比 udp 协议效果好很多。尤其是很多台机器同时启动的时候,
使用 udp 的 tftp 时总会有一些失败的,换过不同的 tftp 服务器都是这样,而且单台启动的时候不能跑满带宽。
换成 nginx 当 http 服务器的时候就没碰到过这种问题,单台启动能跑满带宽,很多台同时启动也都能慢慢加载完。
可能用组播方式会更好吧,但没细研究组播,感觉现在的 http(s)的方案对我来说够用了。
在就是得益于系统镜像体积还算小,可以就这么直接无盘运行, 150MB 内存开销完全可以接受,这样还有个好处是
更新的时候只动服务器上的镜像就可以了,要更新的机器直接重启就行了。
加载到本机内存相比通过网络挂载根文件系统的方式在延迟的和稳定性上好太多了,尤其是机器很多的时候。毕竟不受断网影响。
无盘方式有个问题就是数据怎么回写,方案非常多,为了简单起见用了个非常粗暴的方式解决了我的问题。
对于我这的情况,就是怎么让不同机器加载不同配置,根本不需要什么回写,那解决起来就简单多了:
每台机器除了加载共用的镜像再根据各自的标识加载一个 tar 包解压叠加到根文件系统上就行了。
同时为了能自动初始化或者自动安装,如果文件服务器上没有那个标识符的文件,还会尝试加载一个默认的 tar 包,满足不同环境的制定。
前面废话一大堆,现在说下怎么用吧。
在已经运行支持 https 的 iPXE 情况下,在 iPXE 命令行输入下面两条命令之一就能启动这个系统了。
chain https://sourceforge.net/projects/lfsp200/files/netboot/boot.ipxe
chain https://l-lfsp200.rhcloud.com/netboot/boot.ipxe
注意你的网络环境要良好,这可是从大陆以外加载 150MB 左右的文件,自己计算下时间吧。
有的地区可能会遇到 iPXE 网络加载证书时被打断的情况,这时就不能加载 https 文件了。这个问题研究了很久,分明那个 boot.ipxe 能下载嘛。
下载过程有个百分比进度,不出意外加载完很快就能启动了。同事说很神奇,有透明计算的感觉。其实这都是 iPXE 的功劳。
通过公网加载确实是比较慢的,实际用的话还是要自己部署的。下面说下具体怎么操作。
由于是网络启动,至少要两台机器或者用虚拟机。(在 openwrt/lede 这样的路由器上配置也是可以的)
首先在一台机器上安装 iPXE 启动环境,这里不需要对主路由器或者提供 dhcp 的机器做任何改动即可完成。
安装 dnsmasq-2.77test4, 其他版本应该也行,但是我用这个做的实验。
下载 http://www.thekelleys.org.uk/dnsmasq/test-releases/dnsmasq-2.77test4.tar.xz 并解包
make BINDIR=/usr/bin PREFIX=/usr
make BINDIR=/usr/bin PREFIX=/usr install
建立文件 dnsmasq.proxydhcp 内容如下
########begin########
no-daemon
port=0
log-dhcp
log-queries
dhcp-range=192.168.1.0,proxy #改成你的网段
leasefile-ro
dhcp-match=ipxe,175
dhcp-boot=net:ipxe,http:///netboot/boot.ipxe
pxe-service=x86PC,"iPXE for 200M linux",undionly_menu.kpxe
enable-tftp
tftp-root=/srv/tftp
########end##########
运行
sudo dnsmasq -C dnsmasq.proxydhcp
这样安装 dnsmasq 是有些粗糙,下个版本的 200M linux 会内置 dnsmasq ,能通过服务启动。
还有替代 dnsmasq 的 tftp 功能的性能好一些的 tftp-hpa 也会内置。
这时用网络启动同一子网的其他机器能看到一个 iPXE for 200M linux 的菜单,但实际不能真实启动,这一步就算成功了。
然后下载 https://l-lfsp200.rhcloud.com/netboot/undionly_menu.kpxe 保存到 /srv/tftp 下面。
这时再网络启动其他机器,正常的话能看到一个菜单,其中有两个菜单是用前面的网址启动系统的。
最后一步下载镜像文件
在 web 服务器文件目录下面建立文件夹 netboot
再把 https://l-lfsp200.rhcloud.com/netboot/ 下面的所有文件下载到 netboot 目录里面。
这一步有个脚本能方便操作
wget https://l-lfsp200.rhcloud.com/netboot/netboot_dl.sh
sh netboot_dl.sh #这个脚本是从 sourceforge 下载文件,可编辑改成从 rhcloud 下载,看那个快吧。
再次网络启动其他机器,正常的话会直接启动系统,看不到刚才那个菜单了。
然后就是怎么让加载额外的配置文件了。
无盘系统启动后,进行所需的设置(参考一下之前的帖子介绍),然后进入 /mnt/tmpfs
有一个一串字符的目录, 忽略.work 后缀的那个。这个目录就是配置文件了,
把它 tar 成一个 .tar.xz 的文件,放到文件服务器 netboot/ovl 目录下面。
这台机器再次启动的时候就能加载这个文件了。
为了减少体积,可把这个 .tar.xz 解压到别处删除一些临时文件日志文件重新打包的。
如果要把这个文件当作共用的模板,解压后重命名成 default 再打包成 default.tar.xz 放到 netboot/ovl 下面即可。
罗哩罗嗦算是写完了,可能说的不太明白,等下次发布的时候弄个脚本自动设置吧。感觉看脚本更清晰。
centos7无盘启动_200M Linux 可以通过网络启动,批量自动部署或直接无盘运行了 (附配置 iPXE 无盘启动说明)...相关推荐
- xml配置linux启动脚本,linux中利用Shell脚本实现自动安装部署weblogic服务
身在物流行业,临近618和双十一,都需要进行系统压力测试,今年也不例外.这个时候需要随时切换自己开发和压测的身份,一面要完成新需求的开发任务,另一面要完成压测任务:虽然4月刚开始,但是压测任务已经排上 ...
- Exagear运行Linux,【原创首发】折腾教程:在树莓派上尝试运行X86并配置wine桌面 *不用ExaGear*...
树莓派可能很难给你带来实质性的用途,但树莓派最大的乐趣就是挖坑和填坑. --题记 近日我又挖了一个新坑,我想在树莓派上运行X86,而我仅仅是一时兴起. arm平台运行X86并不容易,一开始搜索到的全是 ...
- linux kickstart乱码,PXE+kickstart 批量安装部署centos6系统
安装的条件: 服务器端: 支持TFTP:提供引导文件与系统安装所必须的文件 支持DHCP服务器:分配IP地址.定位TFTP服务器位置. 客户端: 网卡支持PXE协议 主板支持网络引导 环境准备: 1. ...
- linux 远程挂载摄像头_基于Linux的嵌入式网络摄像机设计
本嵌入式网络摄像机采用高性能ARM9芯片微处理器,内置嵌入式Web服务器. 通过嵌入式多任务操作系统采集摄像机视频数据:采集的视频信号数字化后经MJPEG算法压缩,再通过内部总线送到内置的Web服务器 ...
- linux环境下和网络服务相关的配置文件含义及如何配置
要建立一个安全Linux服务器就首先要了解Linux环境下和网络服务相关的配置文件的含义及如何进行安全的配置.那天查看服务器的eth0地址,后来想了一些问题,到家里就翻了翻以前的文档,无意中看到了这个 ...
- uboot网络加载linux,DM8148 uboot 网络正常,Linux 起来后网络不通
DM8148 uboot 网络正常,Linux 起来后网络不通 在 DM814X_TI_EVM 基础上做了些裁剪,在 RGMII0 上接 AR8031 PHY,PHYADDRESS=0,PHYMODE ...
- centos7无盘启动_从无盘启动看Linux启动原理
作者:bobyzhang,腾讯 IEG 运营开发工程师 0. 故事的开始 0.1 为什么和做什么 最近家里买了对音响,我需要一个数字播放器.一凡研究后我看上了volumio( 我打算让volumio运 ...
- 从无盘启动看 Linux 启动原理
作者:bobyzhang,腾讯 IEG 运营开发工程师 0. 故事的开始 0.1 为什么和做什么 最近家里买了对音响,我需要一个数字播放器.一凡研究后我看上了 volumio(https://volu ...
- 一盘多用,Linux安装盘+window PE启动盘
ventoy实现一个U盘,既能作为linux系统安装盘,又能作为windows PE启动盘 1.工具准备 2.ventoy工具下载 3.window PE盘制作 4.U盘启动效果演示 1.工具准备 & ...
最新文章
- Boost TCP serverclient 有回调无发送
- 微信公众平台开发—利用OAuth2.0获取微信用户基本信息
- 基础html交代选择器,html 选择器之基础选择器
- php 删除%3ca%3e标签,a和table标签的应用
- 帆软报表插件开发系列之plugin.xml
- java中replaceall用法_Java中String的ReplaceAll使用小结
- 从有到优:百度前端接入技术的升级之路
- LPDDR4 与 DDR4 与 LPDDR4x 内存:有何不同?
- U盘装系统中bios怎么设置USB启动(图文教程)
- Python3爬虫 爬句子迷
- 记录一次腾讯面试经历
- 今天脚被蜈蚣“啃”了
- 数据库原理基本SQL语句练习题及答案1
- win10蓝牙android上网,Win10开启蓝牙移动热点共享上网教程
- mfc与win32区别
- 十一、BDB ManyToMany
- 我欢喜,为着时光所有的馈赠
- 10以内转大写汉字java_1.输入一个0-10之间的阿拉伯数字,将其转换成中文大写数...
- 在线创建LaTeX表格的方法
- 微信小程序的复制功能怎么实现的?
热门文章
- 电商平台选择积分抵扣的两个原因
- 百度地图数据自定义采集方法
- 如何制作一个类似Tiny Wings的游戏(2) Cocos2d-x 2.1.4
- Miscellaneos-Database: 常用数据库资源。包含(Northwind+cn,pubs)
- Android小项目---BIM体质指数计算器
- 基于Madagascar的二维地震声波波动方程正演模拟
- 家族企业如何做股权激励?
- 学完java学历不高工作能找吗_低学历学Java能找到工作吗?
- java新人培训_Java新人学习必要的步骤以及全套学习路线!
- 【入门教程】tmux精简教程