最近因为需要用到Freebsd,所以研究了打包的一些方法,这个没什么太大问题,通过网上的一些资料可以解决,但是由于确实不太熟悉这套系统,还是碰上了一些比较麻烦的地方,目前也没看到有人写如何处理,那就自己总结一下,以免以后再用忘记如何处理

问题来源

在linux下的iso自动安装的时候,在无法确定盘符的情况下,可以不写盘符,从而在遇到任何奇怪的磁盘的时候也是能安装的,比如 sda,xvda,vda,这些都可以通过不精确盘符的方式解决

而在freebsd当中处理就不一样了

cat ./etc/installerconfig
PARTITIONS="da0 { 512K freebsd-boot, auto freebsd-ufs / }"
DISTRIBUTIONS="custom_kernel.txz base.txz lib32.txz custom_files.txz"
#!/bin/sh
···

这个地方写配置文件的第一句就要告诉安装环境需要安装到哪里,这个地方是写死的一个数据,而碰上ada为系统盘就没法解决了,得不断的适配这个盘符

解决问题

最开始的时候写 etc/installerconfig这个配置文件我也不知道为什么要写这里就可以,根据网上的资料是写这个就可以了,在查阅更多的资料后,可以发现是在光盘的etc/rc.local里面会去调用这个脚本,然后去安装

最开始的思路是直接修改这个脚本,后来发现在安装过程中,这个文件实际是只读的,无法去修改的,所以这个地方需要做一个折中的修改

先准备好etc/installerconfig,写死几个值

PARTITIONS="da0 { 512K freebsd-boot, auto freebsd-ufs / }"
···
#changge fstab to gpt id
systemuuid=`gpart list | grep -A 11 'da0p2' | grep 'rawuuid' | awk '{print $2}'`
sed -i -e "s/da0p2/gptid\/$systemuuid/g" /etc/fstab

下面的那个部分是解决盘符变动,在安装过程中就处理好盘符的uuid挂载,这个在linux下面,是操作系统默认就处理好了,这个地方写定一个da0,等下后面处理的时候可以去匹配这个da0

处理默认的./etc/rc.local

export TERM

cp /etc/installerconfig /tmp/installerconfig
sh -c '. /usr/share/bsdconfig/device.subr;f_device_menu "" "" "" DISK'
echo -n "Which disk your what install :"
read mydisk
echo "$mydisk"
sed -i -e "s/da0/$mydisk/g" /tmp/installerconfig if [ -f /tmp/installerconfig ]; then
if bsdinstall script /tmp/installerconfig; then
dialog --backtitle "FreeBSD Installer" --title "Complete" --no-cancel --ok-label "Reboot" --pause "Inst
allation of FreeBSD complete! Rebooting in 10 seconds" 10 30 10
reboot

处理思路就是先拷贝到一个临时的环境下面,然后去修改它,利用系统接口去获取可以安装的磁盘,这个地方只是起一个告诉有哪些盘可以安装的作用,然后根据提示输入想安装的磁盘的盘符名称,这个地方是什么名称就输入什么名称就可以安装了,然后系统就会根据改好的脚本去安装操作系统了

总结

这是一个遗留问题,之前一直没解决,造成了越来越多的问题,在花了一个晚上的时间后,终于能够解决了,对系统越熟悉越能够知道怎么去处理问题,未知的东西太多,只能一点点花时间解决

变更记录

Why Who When
创建 武汉-运维-磨渣 2016-07-19

解决自动安装Freebsd系统盘符无法确定问题的更多相关文章

  1. 硬盘安装Windows Server 2008(解决系统盘符变成D盘)

    硬盘安装Windows 2008系统方法 操作系统最好用的无疑是server 2003,但是现在Server 2003支持的软件越来越少,很多是故意不支持Server 2003了, 像php5.5以上 ...

  2. SCCM2012 R2实战系列之十一:解决OSD分发Windows7 系统盘盘符为’D’问题

    在SCCM 2012 R2操作系统分发(OSD)中,大家最早做的实验可能就是分发干净的Windows7和Windows 8(或Windows8.1)了吧.但是不可面对的问题就是相同配置的任务序列(只是 ...

  3. Python Error: “ImportError: No module named six”,用自动安装解决依赖问题

    在初次运行带有matplotlib包的程序时,被告知了缺少模块(如标题所示).搜索调查后发现在自己安装的python中确实缺少此安装包,接下来,进行了下载.安装.运行,又少了一个模块,再下载.再运行, ...

  4. C# 将DLL制作CAB包并在浏览器下载,自动安装。(Activex)(包括ie打开cab包一直弹出用户账户控制,确定之后无反应的解决办法。)

    制作Activex程序网上有很多方法我就不说了,我的业务主要做的就是将DLL打包成CAB供浏览器下载. 下面制作证书,以及制作cab包需要用到一些工具.我将工具包上传到自己的博客园里了,以供大家下载. ...

  5. 2019春下载的sublime text都无法自动安装package control:解决办法

    之前电脑的原因卸载了,于是重新安装sublime text3. 发现问题了.Package Control无法自动安装. 于是一通常用操作. 1.copy 安装码(你知道的)到control安装,失败 ...

  6. android 版本更新适配8.0,解决8.0手机无法更新自动安装apk

    随着android 7.0的普及android 8.0的也逐渐流行起来,那么google对权限方面又有了新的修改.而且我发现在android8.0中除了一些bug,比如说:在小米6(Android 8 ...

  7. Windows平台下如何使用node.js显示系统盘符

    本文地址: http://www.cnblogs.com/blackmanba/articles/windows-nodejs-show-system-letter.html或者http://fork ...

  8. 用Inno Setup来解决.NetFramework安装问题

    用Inno Setup来解决.NetFramework安装问题 2010-03-01 09:59:26 标签:.Net Framework Setup 休闲 Inno 原创作品,允许转载,转载时请务必 ...

  9. kickstart一键自动安装Linux系统

    kickstart,无人值守,自动安装系统.本文介绍kickstart的用法. #安装系统的信息——可以参考 [root@larrywen pdf]# vim ~/anaconda-ks.cfg 第一 ...

随机推荐

  1. 安装JDK及环境变量配置

    1.下载JDK: 下载地址:https://www.oracle.com/technetwork/java/javase/overview/index.html 2.解压,运行安装包,下一步,选择安装 ...

  2. PHP SPL标准库-数据结构

    SPL是用于解决典型问题的一组接口与类的集合. 双向链表 SplDoublyLinkedList SplStack SplQueue 双链表是一种重要的线性存储结构,对于双链表中的每个节点,不仅仅存储 ...

  3. Android adb实现原理

    adb定义: adb(Android Debug Bridge) 安卓调试桥,包含adb client.adb server和adbd三部分. adb client:运行在PC上,即DDMS或者在Wi ...

  4. jquery $.ajax 获取josn数据

    <script type="text/javascript" src="jquery-1.9.1.js"></script> <s ...

  5. 分布式协调服务之Zookeeper集群部署

    一.分布式系统概念 在聊Zookeeper之前,我们先来聊聊什么是分布式系统:所谓分布式系统就是一个系统的软件或硬件组件分布在网络中的不同计算机之上,彼此间通过消息传递进行通信和协作的系统:简单讲就是 ...

  6. Linux文件的查找之find命令处理动作

    查找到文件之后的处理动作 例如:找出来系统中比较大超过10G的并且存放时间超过一年的log文件并删除 find / -name ".log" -size +10G -mtime + ...

  7. 存储系列1-openfiler开源存储管理平台实践

    (一)openfiler介绍 Openfiler能把标准x86/64架构的系统变为一个更强大的NAS.SAN存储和IP存储网关,为管理员提供一个强大的管理平台,并能应付未来的存储需求.openfile ...

  8. git学习(七) git的标签

    git的标签操作 git标签操作 git tag 不加任何参数 表示显示标签(按字母序) 非按时间 git tag 标签名 默认是给最近一次提交打上标签 git tag 标签名 commitId 给响 ...

  9. airtest操作夜神模拟器adb冲突解决办法

    首先看错误日志明显是adb之间版本不对应互相干掉对方 第一步 去aritestIde所在目录\AirtestIDE\airtest\core\android\static\adb\windows 第二 ...

  10. DiskLruCache和Lrucache缓存bitmap

    三级缓存,先在内存Lrucache中查找缓存,没有就去外存DiskLrucache中查找,再没有就下载,Lru不会自动删除,所以要设置最大缓存内存,后台运行Lrucache不会消失,关闭程序Diskl ...