案例背景:

为了平时给开发测试部门方便快速的部署新的linux系统,于是搭建了一套网络安装服务器,使用Kickstart进行新环境的部署(当然,使用openstack这样的开源云平台进行测试环境的搭建,删除会更加便捷)

          今天,公司买回来一台1U的组装机器,更平时一样,开箱,上架,接电源,接网线,点亮机器,按F12进入网络安装,接下来是耐心的等待...,然而这次有麻烦了.


问题描述:

所谓有图有真相,上图说理

PXE安装报错:Cant' write to /dev/sda ,because it is opened read-only

遇到这个问题就坑人了,第一个选项,File  Bug,第二个Exit installer, 也就是要么你牛,自己去DEBUG吧,要么退出安装,这不玩人吗?

再看具体的报错:Cant' write to /dev/sda ,because it is opened read-only

既然这样,那我们就切换个终端看看这个/dev/sda是个啥,真的无法操作?

PXE安装报错:Cant' write to /dev/sda ,because it is opened read-only

大概看一下,明明在BIOS里面看到只有一块硬盘,也就是此处显示的/dev/sdb,500GB,竟然多送了2G的一块盘?

想想就知道不可能,只能说毕竟是个服务器,这2GB的磁盘估计是用来存储一些服务器驱动玩意的。

那么看看到底能不能删除分区。

PXE安装报错:Cant' write to /dev/sda ,because it is opened read-only果然没骗我们,删除不了,商家说:我的东西你也敢碰?

那就不删了呗,就算删除了,也不是只读操作了,又能怎样,,2GB你打算玩什么?


所以解决问题的根本不是在这里,而是需要解决如何分区创建在/dev/sdb上面,将bootloader安装在/dev/sdb上。

那么有人会说,那你出现这类错误的原始配置文件ks.cfg是怎样写的?

OK,此处列出主要的信息,也就是分区信息,分区位置

# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part / --asprimary --fstype="ext4" --size=50000
part /boot --fstype="ext4" --size=200
part /var --fstype="ext4" --size=300000
part swap --fstype="swap" --size=16000

大家主要去观察的不是分区大小,而是分区所在硬盘,可以看到,一般来说,我们不会去指定第一块硬盘,而是默认分区,也就意味着系统在进行硬盘分区的时候,首选/dev/sda,那么遇到我们现在的情况,那就歇菜了。

问题解决

问题找到了,就去解决问题了,明显只需要修改配置文件中分区相关的配置:

# Partition clearing information
ignoredisk --drives=sda
clearpart --all --drives=sdb
# Disk partitioning information
part /boot --fstype="ext4"  --size=100
part swap --fstype="swap" --size=12000
part / --fstype="ext4"  --size=50000
part /var --asprimary --fstype="ext4"  --size=300000


主要修改:

ignoredisk --drives=sda
clearpart --all --drives=sdb

主要目的,实现了对/dev/sda的无视,默认分区在/dev/sdb上面,默认grub启动器也安装在/dev/sdb上面。

问题就这么愉快的解决了!