美文网首页
Debian+win10下freebsd12.1U盘安装及引导启

Debian+win10下freebsd12.1U盘安装及引导启

作者: 天然呆的达斯琪 | 来源:发表于2020-02-15 17:10 被阅读0次

    总结一下freebsd12.1的硬盘安装。(2020/2/15)

    我的电脑配置:


    我的电脑.png
    image.png
    image.png

    已装系统:
    1.win10
    2.debian9

    官方的handbook[1]将安装分成了sysinstallbsdinstall,具体有什么区别以后再研究。


    1.下载

    进入到freebsd官网,点击左上方的Get FreeBSD,进入下载页。

    版本页.png
    选择Installer Images下的amd64
    自己的机器是64位的话就选amd64
    32位的话就选i386

    amd64
    This is the most common desktop and laptop processor type, used in most modern systems. Intel® calls it Intel64. Other manufacturers sometimes call it x86-64.

    Examples of amd64 compatible processors include: AMD Athlon™64, AMD Opteron™, multi-core Intel® Xeon™, and Intel® Core™ 2 and later processors.

    i386
    Older desktops and laptops often use this 32-bit, x86 architecture.
    Almost all i386-compatible processors with a floating point unit are supported. All Intel® processors 486 or higher are supported.

    FreeBSD will take advantage of Physical Address Extensions (PAE) support on CPUs with this feature. A kernel with the PAE feature enabled will detect memory above 4 GB and allow it to be used by the system. However, using PAE places constraints on device drivers and other features of FreeBSD.

    powerpc
    All New World ROM Apple® Mac® systems with built-in USB are supported. SMP is supported on machines with multiple CPUs.

    A 32-bit kernel can only use the first 2 GB of RAM.

    sparc64
    Systems supported by FreeBSD/sparc64 are listed at the FreeBSD/sparc64 Project.

    SMP is supported on all systems with more than 1 processor. A dedicated disk is required as it is not possible to share a disk with another operating system at this time.

    以上解释均摘自官方的handbook,要善用官方文档!


    选择amd64后进入下载页


    下载页.png

    各个版本的区别,官方文档同样有解释,这里简单说明一下。

    bootonly.iso 最小安装文件,仅包含安装程序。安装过程需要联网。应该使用CD刻录。

    disc1.iso 包含安装所需的所有文件,source和Ports Collection。应该使用CD刻录。

    dvd1.iso 除了安装所需的所有文件,source和Ports Collection,还包含一些其他常用的软件包。应使用DVD刻录。

    memstick.img 包含安装所需的所有文件,source和Ports Collection。应该刻录到usb记忆棒中。

    mini-memstick.img 和bootonly.iso 相似,只包含必须的文件,安装时需要联网。

    后缀名为“.xz”的是压缩包,下载后需要解压。

    下载完毕.png

    2.制作U盘启动盘

    在网上查找安装教程的时候,很多教程都说要下载.img文件,使用Win32DiskImager(官网教程使用的工具,只对.img文件有效),还有的说要使用rufus制作U盘启动,不能使用软碟通。(只成功下载win32那个,还附赠了“程序大礼包”-_-||”,rufus不是不想用,网速实在太慢。)
    但实际上我下载的是dvd1.iso,使用软碟通制作U盘启动盘,同样安装成功。

    “在写入硬盘映像时,一定要把写入方式改成RAW方式,否则U盘无法启动。”[2]

    我没有实际验证写入方式不是RAW的情况,直接参考这个教程的这个说法,所以不保证正确。
    软碟通的使用相对简单,不做记录。

    或者linux中

    dd if=FreeBSD-12.0-RELEASE-amd64-dvd1.iso of=/dev/sdb bs=1M conv=sync
    
    [root@Tashigi 下载]# dd if=FreeBSD-12.0-RELEASE-amd64-dvd1.iso of=/dev/sdb bs=1M conv=sync
    记录了3704+1 的读入
    记录了3705+0 的写出
    3884974080 bytes (3.9 GB, 3.6 GiB) copied, 402.081 s, 9.7 MB/s
    记录了3704+1 的读入
    记录了3705+0 的写出
    3884974080 bytes (3.9 GB, 3.6 GiB) copied, 402.081 s, 9.7 MB/s
    

    3.格式化一块磁盘。

    windows下,进入磁盘管理,格式化一个硬盘分区。
    我是将F盘大概60g的空间分给了freebsd。
    注意:60g的空间在磁盘管理的界面是未分配状态,也就是黑色的,而不应该是如C盘,D盘之类的蓝色
    也就是说格式化后还要删除卷

    下图是我安装好freebsd,磁盘管理的界面。
    图中容量1MB(包括)至17.61GB(包括)的6个磁盘分区安装的是freebsd。


    磁盘管理.png

    Tip:说到格式化F盘,在把原来F盘的东西删除后,有一些我不知道的东西莫名地占用磁盘空间,怀疑是不是虚拟内存,实际上不是当然也可能是我不懂(60g容量,可用容量没有这么多)。
    F盘无法格式化,不能删除分区,不能锁定磁盘,有进程在运行......
    在win10下找不到相关办法,最后还是通过Debian格式化的。
    (但是最终60G的空间变成59.8G多一点,中间尝试太多,记忆有些模糊,不记得是哪一步之后变成这样的。)


    4.设置开机顺序

    开机进入操作系统启动页面之前,按enter(回车键)进入BIOS,设置开机顺序,将U盘启动上移至第一选项。(不同电脑进入BIOS的按键方式不同,多为 F2、 F10、 F11、 F12、Del 或 Alt+S等。)


    5.安装

    我的电脑安装了Debian以后,U盘优先启动就是默认的。

    5.1 进入安装界面,等待10秒或者按enter键。(来自官网图片)

    安装1.png

    5.2 选择install(来自官网图片)

    安装2.png

    5.3 选择键盘,一般默认

    5.4 设置主机名

    我设置的是Tashigi

    5.5 选择需要安装的组件(来自官网图片)

    下面的图片来自官方教程,我不记得和实际安装时相不相同。
    总之,安装的时候按space空格键把所有的都选上了。

    image.png

    5.6 分配磁盘空间

    这一步是整个安装过程中比较重要的,或者说我花费了较多时间,以及现在还有一些不明白的地方。
    可选Auto(UFS),Manual,Shell,以及Auto(ZFS)四种。
    主要使用第一种或者第二种,我两种都做了尝试。



    选择auto(ufs)就是自动分配磁盘空间。
    选择manual,就是手动分配磁盘空间。

    5.6.1 选择auto(ufs)

    一整块磁盘都安装freebsd,就选择entire disk。
    不是,就选择partition。一般都选择partition。


    image.png

    我选择的是partition。以下是自动分区的情况,ada0p14,ada0p15是freebsd自动创建的分区。


    image.png
    作为参照,下图是debian下检测到的磁盘分区情况。
    image.png

    但是200MB的ada0p13分区是我疑惑的地方,我虽然能够确定它是现在才创建的,但是我不确定它是freebsd创建的,还是我使用软碟通的后遗症。
    因为现在创建的这个目录和我在虚拟机上实验的目录,以及官方教程上的说明不同。
    以下是官方教程提供的自动分区目录,和我在虚拟机上模拟的一致,但是我现在少了freebsd-boot这一项。

    image.png
    软碟通的光盘目录后:“可启动EFI”?
    (我只能这么大胆假设了+-+)
    image.png

    后记:又重新安装了一遍,freebsd-boot分区其实没什么用,不要分配了,装好了之后不能启动freebsd,到windows里下载easyuefi就好了。
    现在都时用uefi引导的,和软碟通没什么关系。


    5.6.2 选择manual安装,即手动安装

    这也是我实际选择的方法。(后来出现的问题以及我解决的办法证明,自动和手动并没有太大区别)
    大多数机器,选择gpt分区。(来自官网图片)
    下面两张图不一定有先后顺序(我不记得了)。
    但是有一点,要在选中ada0,也就是你想要安装的那块硬盘后,选择create,而不是选择ada0下的比如ada0p11分区之类的。(我没有试验这样做能不能,但最好还是不要这么做。)
    create后,请按tab键来上下移动,这个时候上下左右键只能在下面跳,你不能将光标的位置定位到TYPE,size等后面去实际输入。

    image.png image.png

    手动分区的方式有两种。
    下面是官网的原话

    第一种
    FreeBSD 的标准 GPT 安装至少会使用三个分区:
    标准 FreeBSD GPT 分区
    freebsd-boot - FreeBSD 引导分区, 它必须处于首位。
    freebsd-ufs - FreeBSD 的 UFS 文件系统。
    freebsd-swap - FreeBSD 的交换空间。
    
    第二种
    创建传统的分割式文件系统分区
    在传统的分区布局中, 目录 /、 /var、 /tmp 及 /user 都是位于自己分区上的独立文件系统; 
    在 GPT 分区方案中也可以创建这样的分区布局。
    本例中所使用的是一块 20G 的硬盘, 如果使用更大的硬盘, 建议创建更大的交换或 /var 分区。
    标签的前缀 ex 是指 “example”, 具体操作时您可以使用任何独一无二的字符。
    
    image.png

    我的分区
    同样出现EFI分区。


    image.png

    5.7设置 root 密码

    必须设置 root 密码。输入密码时, 被输入的字符并不会在屏幕上显示。会要求再次输入密码。


    (来自官网图片).png

    5.8 配置网络接口

    我安装的时候有两个选项,下图只有一个。
    我选的是第二个,w......什么什么,是无线网的那个。
    选择以后会扫描周围的wifi,然后选择自家wifi,输入密码,就连上网了。


    来自官网图片.png

    接下来让配置 IPv4 网络,使用 DHCP 方式,都选择是。
    配置 IPv6 网络,没有就选择的否。


    5.9 接下来的设置时钟,选择地区,选择国家,选择时区,选择需要开启的服务(我都选上了)......没什么好说的。


    5.10 添加用户

    选择yes


    来自官网图片.png
    image.png
    以下内容摘自官网
    Username - 用户名, 即登入时用户所输入的名称。 通常是名的首字母加姓的组合。
    Full name - 用户的全名。
    Uid - 用户 ID。 通常留空以自动分配。
    Login group - 用户组。 通常留空以接受默认取值。
    Invite user into other groups? - 是否同时将用户加入其他权限组? 如果需要, 请输入权限组名称。
    Login class - 登录类别。 通常留空以接受默认取值。
    Shell - 用户 shell。 在本例中选择的是 csh(1)。
    Home directory - 用户主目录。 通常留空以接受默认取值。
    Home directory permissions - 用户主目录的权限。 通常留空以接受默认取值。
    Use password-based authentication? - 是否使用基于密码的认证? 通常为 “yes”。
    Use an empty password? - 是否使用空密码? 通常为 “no”。
    Use a random password? - 是否使用随机密码? 通常为 “no”。
    Enter password - 用户的实际密码。 输入的字符不会在屏幕上显示。
    Enter password again - 必须再次输入密码以进行验证。
    Lock out the account after creation? - 创建后锁定帐号? 通常为 “no”。
    

    5.11 接下来最终配置,一般没有需要修改的地方。

    完成安装,然后Reboot(重启 )。




    以上一套流程,并没有太难的地方,接下来才是我的苦难...




    6.freebsd安装后的启动问题。

    6.1 出现grub rescue

    在freebsd安装成功以后,三个系统让我的电脑成功出现了一共19个分区。
    原本启动后通过grub引导开机,默认进入Debian,同时会在开机界面停留几秒让我选择是否进入windows系统。
    但是现在开机后出现grub rescue。

    这主要是因为安装了freebsd后,电脑分区的编号顺序发生了变化。

    打个比方,原本我的电脑分区的编号是1,2,3,4,5。
    Debian安装在编号5的分区里。
    现在我把freebsd安装到了编号3的分区里,在此基础上把编号3的分区分成了三个更小的分区。
    于是现在电脑分区的编号变成了1,2,3,4,5,6,7。
    Debian的分区编号由5变成了7,但是grub引导还是引导到编号5的分区,自然出现错误。

    也有可能会有这样的情况,原本电脑分区分别是1,2,3,4,5
    windows安装在1,2,3分区,Debian安装在4号分区,但是3,4号分区之间有一小段未分配的磁盘空间,比如说1M。
    然后freebsd安装的时候分配了一个512kb的freebsd-boot分区,于是现在的编号变成了1,2,3,4,5,6,7。
    1,2,3是windows的分区。
    4,6,7是freebsd的分区。
    5是Debian的分区。
    同样发生了错误。

    (以上只是最简单的比方,实际分区编号如何分配或许不同。)



    有两种方法解决。

    方法一
    开机的时候按enter键,在弹出的倒计时页面有一个临时启动的选项,点击进入,选择从windows启动,可以临时进入windows操作系统。这种做法能够短暂地解决一下问题。
    也可以再次设置开机启动顺序,把windows启动作为第一项。
    这样以后都能够直接进入windows了,但是就没法使用Debian和freebsd了。
    或许可以进入到windows后,通过windows相关的设置更改一下开机设置,这一点我没有尝试。
    当然,最暴力的做法是进入windows后,把安装了Debian和freebsd的磁盘通通格式化,然后按照顺序重新安装,别再出现顺序颠倒的情况了。

    方法2
    1.出现grub rescue后,输入ls

    image.png
    图中(hd0)是移动硬盘,(hd1)是电脑机械硬盘。可以看到总共有19个分区。

    2.输入set查看现在的grub引导状况。

    image.png

    3.依次输入ls (hd1,gpt1) /
    ······
    ······
    ls (hd1,gpt19) /
    一个一个去试,查看每个分区目录下的文件有哪些。
    我实际的操作情况是除了(hd1,gpt10),其他都提示Filesystem is unknown.
    而(hd1,gpt10)的提示信息是Filesystem is ext2.

    image.png
    图中是hd0,而不是hd1,是因为该图拍摄在我把一切搞定,拔掉插在电脑上的移动设备之后。

    4.输入ls (hd0,gpt10)/boot/grub,查看文件内容。

    image.png
    可以看到目录下有引导文件。

    同样可以看到,原本的gpt11分区变成了gpt10分区。
    总之,磁盘分区的编号发生了变化。

    5.照着上面set后的内容修改
    set root=hd0,gpt10
    set prefix=(hd0,gpt10)/boot/grub
    再次set,发现变成修改后的引导就成功了。

    image.png

    6.输入
    insmod normal
    normal
    成功启动Debian。

    image.png

    7.进入到Debian,需要重新修改相关文件,更新grub。
    sudo update-grub
    sudo grub-install /dev/sda

    7.启动freebsd

    第6步解决了无法进入Debian和windows的问题,但也只是将我的电脑恢复至没有安装freebsd之前的状态。
    此时我的电脑仍然无法进入freebsd


    image.png

    上面这张图片是第6步中的图,我琢磨着第二行包含EFI的那一项不就是如果把windows作为默认启动项,启动Debian的操作啊。
    我也可以用同样的方法来启动freebsd啊。
    接下来的问题就变成了

    1.找到让freebsd启动的程序
    2.将启动程序拷贝到EFI分区
    3.在Debian中设置freebsd的引导

    1.找到让freebsd启动的程序

    压下载的freebsd iso文件,找到了boot文件夹下的boot1.efi文件

    image.png
    image.png
    image.png

    2.将启动程序拷贝到EFI分区

    a.进入cmd管理员界面


    image.png

    b.输入diskpart
    c.输入list disk
    d.输入select disk n
    e.输入list partition
    f.输入select partition n
    g.输入assign letter=X 为所选分区分配盘符
    h.输入exit退出diskpart
    i.输入taskkill /im explorer.exe /f
    j.输入explorer.exe

    image.png
    (在这个界面能够很清楚地看到磁盘分区的方式不是按照顺序的。)


    这个时候会发现系统文件夹下多了个x盘,但是打不开,只能通过cmd操作。
    image.png
    k.cd x:,然后ls查看文件,发现有个efi文件。
    image.png
    l.cd efi,然后ls查看文件
    image.png
    m.mkdir FreeBSD 创建文件夹,然后ls查看文件夹是否成功创建。
    步骤l中的FreeBSD是我之前安装的时候就建好了的。
    n.cd x:\efi\FreeBSD,进入到FreeBSD目录,然后ls查看文件。
    image.png
    o.copy I:\freebsd\FreeBSD-12.1-RELEASE-amd64-dvd1\BOOT\BOOT1.EFI
    将boot1.efi拷贝至当前目录下
    最后ls查看一下是否复制成功。

    (这个盘符的分配是临时的,重启后就没了,efi分区不会变成一个盘。)

    补充:windows命令行删除文件夹?
    那我们又该如何删除文件夹呢,使用rd或rmdir命令,完整命令rd /s /q [盘符:][路径]新目录名,因为rd只能删除空的文件夹,而如果其中有子文件或子文件夹的时候就会停下来,这时我们加上/s就可以直接删除,但是删除过程中会提示你是否确定删除,对于懒癌患者我们有添加了/q,即quiet,安静模式;所以使用以上命令会完整删除你选中的整个文件夹。

    3.在Debian中设置freebsd的引导

    sudo vim /etc/grub.d/40_custom
    添加以下内容

    menuentry "FreeBSD"{
    insmod part_gpt
    insmod fat
    set root="hd0,gpt15"
    chainloader (hd0,gpt13)/EFI/FreeBSD/boot1.efi
    }
    

    最后一句话是真正起作用的,其他三句话加了有没有作用我还没试。
    还是会提示说gpt15中有无法识别的linux distribution。
    最后sudo update-grub更新grub。
    cat /boot/grub/grub.cfg查看修改后的内容。

    这种解决办法存在缺点,在开机的时候如果插了移动设备,电脑的硬盘编号会从hd0变成hd1,如果插了多个移动设备,可能也会相应变化,从而不能正常启动。


    以上方法还很粗糙,但解决问题了就很开心!


    其他

    1.使用Win32DiskImager,出现error5:拒绝访问。参考这篇文章[3]

    1.按win+R,进入cmd
    2.输入diskpart
    3.list disk
    4.select disk 2
    5.list partition
    6.select partition 1
    7.delete partition 删除该分区
    8.依次选择这个磁盘的分区, 全部删除

    2.删除多余的efi分区[4]

    1.diskpart
    2.list vol
    3.sel vol n
    4.del vol override
    5.list vol

    3.删除efi分区下的文件

    PS C:\WINDOWS\system32> cmd
    Microsoft Windows [版本 10.0.18362.657]
    (c) 2019 Microsoft Corporation。保留所有权利。
    
    C:\WINDOWS\system32>x:
    
    X:\>dir
     驱动器 X 中的卷是 SYSTEM_DRV
     卷的序列号是 9EDC-6A69
    
     X:\ 的目录
    
    2019/10/23  18:12    <DIR>          EFI
    2015/06/25  05:53    <DIR>          BOOT
    2019/10/23  18:14    <DIR>          System
    2019/07/25  20:04                34 mach_kernel
                   1 个文件             34 字节
                   3 个目录    184,225,792 可用字节
    
    X:\>cd x:\BOOT
    
    x:\BOOT>dir
     驱动器 X 中的卷是 SYSTEM_DRV
     卷的序列号是 9EDC-6A69
    
     x:\BOOT 的目录
    
    2015/06/25  05:53    <DIR>          .
    2015/06/25  05:53    <DIR>          ..
    2013/06/18  07:08         3,170,304 boot.sdi
                   1 个文件      3,170,304 字节
                   2 个目录    184,225,792 可用字节
    
    x:\BOOT>cd x:\EFI
    
    x:\EFI>dir
     驱动器 X 中的卷是 SYSTEM_DRV
     卷的序列号是 9EDC-6A69
    
     x:\EFI 的目录
    
    2015/06/25  05:52    <DIR>          .
    2015/06/25  05:52    <DIR>          ..
    2015/06/25  05:52    <DIR>          Microsoft
    2019/10/23  18:14    <DIR>          Boot
    2015/06/25  07:02    <DIR>          Lenovo
    2020/02/19  10:50    <DIR>          debian
    2020/02/20  18:14    <DIR>          opensuse
    2020/02/23  16:35    <DIR>          fedora
                   0 个文件              0 字节
                   8 个目录    184,225,792 可用字节
    
    x:\EFI>rd /s x:\EFI\debian
    x:\EFI\debian, 是否确认(Y/N)? y
    
    x:\EFI>rd /s x:\EFI\opensuse
    x:\EFI\opensuse, 是否确认(Y/N)? y
    
    x:\EFI>rd /s x:\EFI\fedora
    x:\EFI\fedora, 是否确认(Y/N)? y
    






    参考文档

    [1]https://www.freebsd.org/
    [2]https://jingyan.baidu.com/article/3c343ff7a43f590d377963a8.html
    [3]https://segmentfault.com/a/1190000016593468
    [4]http://tieba.baidu.com/p/5966891680?fid=2770916&pid=123084825737#123084825737

    补充

    image.png

    相关文章

      网友评论

          本文标题:Debian+win10下freebsd12.1U盘安装及引导启

          本文链接:https://www.haomeiwen.com/subject/ddmefhtx.html