Linux配置pxe服务安装Ubuntu避坑指南

概述

接上文《 Linux配置PXE服务避坑指南 》,上文已经配置好了基础的pxe服务,可以看见pxe引导起来的 boot menu,这里我们接着上文的环境进行ubuntu系统的安装,这里以18.04为例,由于20.04可能变化比较大,后续有必要再出相关说明,这里主要是为了理解pxe这套东西的依赖和启动系统的流程,欢迎各位举一反三,推广到其他系统的引导和安装。

环境及依赖

既然前一篇文章已经介绍了基础信息,pxe的依赖项就不再赘述,主要再加入18.04的ISO镜像,可以去UBUNTU官方网站下载,desktop Live版的镜像。没有其他更多的依赖项。

配置

这里只提供思路,因为大家目录结构可能会很不一样,

1、配置NFS

NFS的安装不赘述,很多地方都有,想办法装好就行,例如我的是archlinux,直接装相关服务后,配置NFS,下面的配置作为参考,选择其中一条来用即可,替换IP为自己共享的的IP段。

/srv/nfs        *(rw,sync)
# /srv/nfs        172.16.28.0/24(rw,sync)

完成配置后,直接exportfs和重启nfs服务

exportfs -arv
systemctl restart nfs-server

2、解压光盘镜像文件

a) tftp服务相关

如果根据前文配置,可以看到tftp服务做的动作是加载菜单和内核等,因此,需要配置菜单和把新的内核放进来即可

查看tftp目录下的 pxelinux.cfg/default 相关配置追查到,实际pxe的菜单是在 ubuntu-installer/amd64/boot-screens/txt.cfg 目录里面配置,当然在其他地方也可以。

default install
label install
        menu label ^Install
        menu default
        kernel ubuntu-installer/amd64/linux
        append vga=788 initrd=ubuntu-installer/amd64/initrd.gz --- quiet 
label cli
        menu label ^Command-line install
        kernel ubuntu-installer/amd64/linux
        append tasks=standard pkgsel/language-pack-patterns= pkgsel/install-language-support=false vga=788 initrd=ubuntu-installer/amd64/initrd.gz --- quiet

通过查看文件内容,可ui看到我们需要两个文件,A, linux内核, 通过 `kernel ubuntu-installer/amd64/linux` 指定,路径可以更改,从tftp的目录开始算;B, initrd内存文件系统
,通过append告知系统 `initrd=ubuntu-installer/amd64/initrd.gz`

其中append的内容哦就是kernel的boot arg,启动后可以通过 cat /proc/cmdline 查看。

因此,基于以上,我们需要吧光盘解压后的 casper/vmlinuz 和 casper/initrd 复制到 tftp 目录,我直接复制到了根目录,其他系统就找到他们的vmlinuz和initrd也可以。

可以看到我后文的kernel直接就  kernel vmlinuz , append下的initrd 也是 initrd=initrd,是因为我放在tftp根目录。因为这两个文件是以tftp的方式加载的。

b) NFS服务相关

NFS服务主要为系统提供根目录,也就是整个光盘镜像(虽然实际没用全)。

挂载好镜像,并把镜像的文件都复制出来,放到 NFS 服务的文件夹,我的NFS服务的文件夹是 /srv/nfs/

解压整个镜像文件到  /srv/nfs/iso_root 即可,完成。

3、菜单的具体配置

菜单抄前面的就可以了,不过有几点需要注意,我们可以看一下解压出来的光盘根目录下 /srv/nfs/iso_root/boot/grub/grub.cfg ,参考这个文件,合并到我们的pxe配置上。

注意的是以下的一点,

很多网上的append内容是 `append initrd=initrd boot=casper splash ip=dhcp netboot=nfs nfsroot=172.16.28.1:/srv/nfs/iso_root/ ---`,我试过这个append能启动到initramfs,NFS也挂载上,但是无法启动,实际这个只是挂载了nfs,并没指定新的根目录,如果不指定根目录,默认根目录是initrd里的根。因此加上 root=/root/cdrom/casper/filesystem.squashfs ,这个文件是整个ubuntu的根文件目录了。

diff --git a/ubuntu-installer/amd64/boot-screens/txt.cfg b/ubuntu-installer/amd64/boot-screens/txt.cfg
index b049dcf..e8f96e0 100644
--- a/ubuntu-installer/amd64/boot-screens/txt.cfg
+++ b/ubuntu-installer/amd64/boot-screens/txt.cfg
@@ -1,10 +1,16 @@
 default install
 label install
        menu label ^Install
-       menu default
        kernel ubuntu-installer/amd64/linux
        append vga=788 initrd=ubuntu-installer/amd64/initrd.gz --- quiet 
 label cli
        menu label ^Command-line install
        kernel ubuntu-installer/amd64/linux
        append tasks=standard pkgsel/language-pack-patterns= pkgsel/install-language-support=false vga=788 initrd=ubuntu-installer/amd64/initrd.gz --- quiet 
+
+label try_iso
+       menu label ^Try Ubuntu without installing
+       menu default
+       kernel vmlinuz
+       append initrd=initrd root=/root/cdrom/casper/filesystem.squashfs boot=casper splash ip=dhcp netboot=nfs nfsroot=172.16.28.1:/srv/nfs/iso_root/ ---
+

结语

到这里我这边已经能正常启动到live桌面里面去了,如果不行的小伙伴,欢迎留言讨论。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值