總結(jié)一下freebsd12.1的硬盤安裝。(2020/2/15)
我的電腦配置:



已裝系統(tǒng):
1.win10
2.debian9
官方的handbook[1]將安裝分成了sysinstall和bsdinstall,具體有什么區(qū)別以后再研究。
1.下載
進入到freebsd官網(wǎng),點擊左上方的Get FreeBSD,進入下載頁。

選擇
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后進入下載頁

各個版本的區(qū)別,官方文檔同樣有解釋,這里簡單說明一下。
bootonly.iso最小安裝文件,僅包含安裝程序。安裝過程需要聯(lián)網(wǎng)。應(yīng)該使用CD刻錄。
disc1.iso包含安裝所需的所有文件,source和Ports Collection。應(yīng)該使用CD刻錄。
dvd1.iso除了安裝所需的所有文件,source和Ports Collection,還包含一些其他常用的軟件包。應(yīng)使用DVD刻錄。
memstick.img包含安裝所需的所有文件,source和Ports Collection。應(yīng)該刻錄到usb記憶棒中。
mini-memstick.img和bootonly.iso 相似,只包含必須的文件,安裝時需要聯(lián)網(wǎng)。
后綴名為“.xz”的是壓縮包,下載后需要解壓。

2.制作U盤啟動盤
在網(wǎng)上查找安裝教程的時候,很多教程都說要下載.img文件,使用Win32DiskImager(官網(wǎng)教程使用的工具,只對.img文件有效),還有的說要使用rufus制作U盤啟動,不能使用軟碟通。(只成功下載win32那個,還附贈了“程序大禮包”-_-||”,rufus不是不想用,網(wǎng)速實在太慢。)
但實際上我下載的是dvd1.iso,使用軟碟通制作U盤啟動盤,同樣安裝成功。
“在寫入硬盤映像時,一定要把寫入方式改成RAW方式,否則U盤無法啟動?!?sup>[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下,進入磁盤管理,格式化一個硬盤分區(qū)。
我是將F盤大概60g的空間分給了freebsd。
注意:60g的空間在磁盤管理的界面是未分配狀態(tài),也就是黑色的,而不應(yīng)該是如C盤,D盤之類的藍色。
也就是說格式化后還要刪除卷。
下圖是我安裝好freebsd,磁盤管理的界面。
圖中容量1MB(包括)至17.61GB(包括)的6個磁盤分區(qū)安裝的是freebsd。
磁盤管理.png
Tip:說到格式化F盤,在把原來F盤的東西刪除后,有一些我不知道的東西莫名地占用磁盤空間,懷疑是不是虛擬內(nèi)存,實際上不是當然也可能是我不懂(60g容量,可用容量沒有這么多)。
F盤無法格式化,不能刪除分區(qū),不能鎖定磁盤,有進程在運行......
在win10下找不到相關(guān)辦法,最后還是通過Debian格式化的。
(但是最終60G的空間變成59.8G多一點,中間嘗試太多,記憶有些模糊,不記得是哪一步之后變成這樣的。)
4.設(shè)置開機順序
開機進入操作系統(tǒng)啟動頁面之前,按enter(回車鍵)進入BIOS,設(shè)置開機順序,將U盤啟動上移至第一選項。(不同電腦進入BIOS的按鍵方式不同,多為 F2、 F10、 F11、 F12、Del 或 Alt+S等。)
5.安裝
我的電腦安裝了Debian以后,U盤優(yōu)先啟動就是默認的。
5.1 進入安裝界面,等待10秒或者按enter鍵。(來自官網(wǎng)圖片)
安裝1.png
5.2 選擇install(來自官網(wǎng)圖片)
安裝2.png
5.3 選擇鍵盤,一般默認
5.4 設(shè)置主機名
我設(shè)置的是Tashigi
5.5 選擇需要安裝的組件(來自官網(wǎng)圖片)
下面的圖片來自官方教程,我不記得和實際安裝時相不相同。
總之,安裝的時候按space空格鍵把所有的都選上了。
image.png
5.6 分配磁盤空間
這一步是整個安裝過程中比較重要的,或者說我花費了較多時間,以及現(xiàn)在還有一些不明白的地方。
可選Auto(UFS),Manual,Shell,以及Auto(ZFS)四種。
主要使用第一種或者第二種,我兩種都做了嘗試。
選擇auto(ufs)就是自動分配磁盤空間。
選擇manual,就是手動分配磁盤空間。
5.6.1 選擇auto(ufs)
一整塊磁盤都安裝freebsd,就選擇entire disk。
不是,就選擇partition。一般都選擇partition。
image.png
我選擇的是partition。以下是自動分區(qū)的情況,ada0p14,ada0p15是freebsd自動創(chuàng)建的分區(qū)。
image.png
作為參照,下圖是debian下檢測到的磁盤分區(qū)情況。
image.png但是200MB的ada0p13分區(qū)是我疑惑的地方,我雖然能夠確定它是現(xiàn)在才創(chuàng)建的,但是我不確定它是freebsd創(chuàng)建的,還是我使用軟碟通的后遺癥。
因為現(xiàn)在創(chuàng)建的這個目錄和我在虛擬機上實驗的目錄,以及官方教程上的說明不同。
以下是官方教程提供的自動分區(qū)目錄,和我在虛擬機上模擬的一致,但是我現(xiàn)在少了freebsd-boot這一項。
image.png
軟碟通的光盤目錄后:“可啟動EFI”?
(我只能這么大膽假設(shè)了+-+)
image.png
后記:又重新安裝了一遍,freebsd-boot分區(qū)其實沒什么用,不要分配了,裝好了之后不能啟動freebsd,到windows里下載easyuefi就好了。
現(xiàn)在都時用uefi引導(dǎo)的,和軟碟通沒什么關(guān)系。
5.6.2 選擇manual安裝,即手動安裝
這也是我實際選擇的方法。(后來出現(xiàn)的問題以及我解決的辦法證明,自動和手動并沒有太大區(qū)別)
大多數(shù)機器,選擇gpt分區(qū)。(來自官網(wǎng)圖片)
下面兩張圖不一定有先后順序(我不記得了)。
但是有一點,要在選中ada0,也就是你想要安裝的那塊硬盤后,選擇create,而不是選擇ada0下的比如ada0p11分區(qū)之類的。(我沒有試驗這樣做能不能,但最好還是不要這么做。)
create后,請按tab鍵來上下移動,這個時候上下左右鍵只能在下面跳,你不能將光標的位置定位到TYPE,size等后面去實際輸入。
image.pngimage.png
手動分區(qū)的方式有兩種。
下面是官網(wǎng)的原話第一種 FreeBSD 的標準 GPT 安裝至少會使用三個分區(qū): 標準 FreeBSD GPT 分區(qū) freebsd-boot - FreeBSD 引導(dǎo)分區(qū), 它必須處于首位。 freebsd-ufs - FreeBSD 的 UFS 文件系統(tǒng)。 freebsd-swap - FreeBSD 的交換空間。第二種 創(chuàng)建傳統(tǒng)的分割式文件系統(tǒng)分區(qū) 在傳統(tǒng)的分區(qū)布局中, 目錄 /、 /var、 /tmp 及 /user 都是位于自己分區(qū)上的獨立文件系統(tǒng); 在 GPT 分區(qū)方案中也可以創(chuàng)建這樣的分區(qū)布局。 本例中所使用的是一塊 20G 的硬盤, 如果使用更大的硬盤, 建議創(chuàng)建更大的交換或 /var 分區(qū)。 標簽的前綴 ex 是指 “example”, 具體操作時您可以使用任何獨一無二的字符。image.png
我的分區(qū)
同樣出現(xiàn)EFI分區(qū)。
image.png
5.7設(shè)置 root 密碼
必須設(shè)置 root 密碼。輸入密碼時, 被輸入的字符并不會在屏幕上顯示。會要求再次輸入密碼。
(來自官網(wǎng)圖片).png
5.8 配置網(wǎng)絡(luò)接口
我安裝的時候有兩個選項,下圖只有一個。
我選的是第二個,w......什么什么,是無線網(wǎng)的那個。
選擇以后會掃描周圍的wifi,然后選擇自家wifi,輸入密碼,就連上網(wǎng)了。
來自官網(wǎng)圖片.png
接下來讓配置 IPv4 網(wǎng)絡(luò),使用 DHCP 方式,都選擇是。
配置 IPv6 網(wǎng)絡(luò),沒有就選擇的否。
5.9 接下來的設(shè)置時鐘,選擇地區(qū),選擇國家,選擇時區(qū),選擇需要開啟的服務(wù)(我都選上了)......沒什么好說的。
5.10 添加用戶
選擇yes
來自官網(wǎng)圖片.png
image.png以下內(nèi)容摘自官網(wǎng) Username - 用戶名, 即登入時用戶所輸入的名稱。 通常是名的首字母加姓的組合。 Full name - 用戶的全名。 Uid - 用戶 ID。 通常留空以自動分配。 Login group - 用戶組。 通常留空以接受默認取值。 Invite user into other groups? - 是否同時將用戶加入其他權(quán)限組? 如果需要, 請輸入權(quán)限組名稱。 Login class - 登錄類別。 通常留空以接受默認取值。 Shell - 用戶 shell。 在本例中選擇的是 csh(1)。 Home directory - 用戶主目錄。 通常留空以接受默認取值。 Home directory permissions - 用戶主目錄的權(quán)限。 通常留空以接受默認取值。 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? - 創(chuàng)建后鎖定帳號? 通常為 “no”。
5.11 接下來最終配置,一般沒有需要修改的地方。
完成安裝,然后Reboot(重啟 )。
以上一套流程,并沒有太難的地方,接下來才是我的苦難...
6.freebsd安裝后的啟動問題。
6.1 出現(xiàn)grub rescue
在freebsd安裝成功以后,三個系統(tǒng)讓我的電腦成功出現(xiàn)了一共19個分區(qū)。
原本啟動后通過grub引導(dǎo)開機,默認進入Debian,同時會在開機界面停留幾秒讓我選擇是否進入windows系統(tǒng)。
但是現(xiàn)在開機后出現(xiàn)grub rescue。
這主要是因為安裝了freebsd后,電腦分區(qū)的編號順序發(fā)生了變化。
打個比方,原本我的電腦分區(qū)的編號是1,2,3,4,5。
Debian安裝在編號5的分區(qū)里。
現(xiàn)在我把freebsd安裝到了編號3的分區(qū)里,在此基礎(chǔ)上把編號3的分區(qū)分成了三個更小的分區(qū)。
于是現(xiàn)在電腦分區(qū)的編號變成了1,2,3,4,5,6,7。
Debian的分區(qū)編號由5變成了7,但是grub引導(dǎo)還是引導(dǎo)到編號5的分區(qū),自然出現(xiàn)錯誤。
也有可能會有這樣的情況,原本電腦分區(qū)分別是1,2,3,4,5
windows安裝在1,2,3分區(qū),Debian安裝在4號分區(qū),但是3,4號分區(qū)之間有一小段未分配的磁盤空間,比如說1M。
然后freebsd安裝的時候分配了一個512kb的freebsd-boot分區(qū),于是現(xiàn)在的編號變成了1,2,3,4,5,6,7。
1,2,3是windows的分區(qū)。
4,6,7是freebsd的分區(qū)。
5是Debian的分區(qū)。
同樣發(fā)生了錯誤。
(以上只是最簡單的比方,實際分區(qū)編號如何分配或許不同。)
有兩種方法解決。
方法一
開機的時候按enter鍵,在彈出的倒計時頁面有一個臨時啟動的選項,點擊進入,選擇從windows啟動,可以臨時進入windows操作系統(tǒng)。這種做法能夠短暫地解決一下問題。
也可以再次設(shè)置開機啟動順序,把windows啟動作為第一項。
這樣以后都能夠直接進入windows了,但是就沒法使用Debian和freebsd了。
或許可以進入到windows后,通過windows相關(guān)的設(shè)置更改一下開機設(shè)置,這一點我沒有嘗試。
當然,最暴力的做法是進入windows后,把安裝了Debian和freebsd的磁盤通通格式化,然后按照順序重新安裝,別再出現(xiàn)順序顛倒的情況了。
方法2
1.出現(xiàn)grub rescue后,輸入ls
image.png
圖中(hd0)是移動硬盤,(hd1)是電腦機械硬盤。可以看到總共有19個分區(qū)。
2.輸入
set查看現(xiàn)在的grub引導(dǎo)狀況。
image.png
3.依次輸入
ls (hd1,gpt1) /
······
······
ls (hd1,gpt19) /
一個一個去試,查看每個分區(qū)目錄下的文件有哪些。
我實際的操作情況是除了(hd1,gpt10),其他都提示Filesystem is unknown.
而(hd1,gpt10)的提示信息是Filesystem is ext2.
image.png
圖中是hd0,而不是hd1,是因為該圖拍攝在我把一切搞定,拔掉插在電腦上的移動設(shè)備之后。
4.輸入
ls (hd0,gpt10)/boot/grub,查看文件內(nèi)容。
image.png
可以看到目錄下有引導(dǎo)文件。
同樣可以看到,原本的gpt11分區(qū)變成了gpt10分區(qū)。
總之,磁盤分區(qū)的編號發(fā)生了變化。
5.照著上面set后的內(nèi)容修改
set root=hd0,gpt10
set prefix=(hd0,gpt10)/boot/grub
再次set,發(fā)現(xiàn)變成修改后的引導(dǎo)就成功了。
image.png
6.輸入
insmod normal
normal
成功啟動Debian。
image.png
7.進入到Debian,需要重新修改相關(guān)文件,更新grub。
sudo update-grub
sudo grub-install /dev/sda
7.啟動freebsd
第6步解決了無法進入Debian和windows的問題,但也只是將我的電腦恢復(fù)至沒有安裝freebsd之前的狀態(tài)。
此時我的電腦仍然無法進入freebsd

上面這張圖片是第6步中的圖,我琢磨著第二行包含EFI的那一項不就是如果把windows作為默認啟動項,啟動Debian的操作啊。
我也可以用同樣的方法來啟動freebsd啊。
接下來的問題就變成了
1.找到讓freebsd啟動的程序
2.將啟動程序拷貝到EFI分區(qū)
3.在Debian中設(shè)置freebsd的引導(dǎo)
1.找到讓freebsd啟動的程序
壓下載的freebsd iso文件,找到了boot文件夾下的boot1.efi文件
image.png
image.png
image.png
2.將啟動程序拷貝到EFI分區(qū)
a.進入cmd管理員界面
image.pngb.輸入
diskpart
c.輸入list disk
d.輸入select disk n
e.輸入list partition
f.輸入select partition n
g.輸入assign letter=X為所選分區(qū)分配盤符
h.輸入exit退出diskpart
i.輸入taskkill /im explorer.exe /f
j.輸入explorer.exe
image.png
(在這個界面能夠很清楚地看到磁盤分區(qū)的方式不是按照順序的。)
這個時候會發(fā)現(xiàn)系統(tǒng)文件夾下多了個x盤,但是打不開,只能通過cmd操作。
image.png
k.cd x:,然后ls查看文件,發(fā)現(xiàn)有個efi文件。
image.png
l.cd efi,然后ls查看文件
image.png
m.mkdir FreeBSD創(chuàng)建文件夾,然后ls查看文件夾是否成功創(chuàng)建。
步驟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查看一下是否復(fù)制成功。
(這個盤符的分配是臨時的,重啟后就沒了,efi分區(qū)不會變成一個盤。)
補充:windows命令行刪除文件夾?
那我們又該如何刪除文件夾呢,使用rd或rmdir命令,完整命令rd /s /q [盤符:][路徑]新目錄名,因為rd只能刪除空的文件夾,而如果其中有子文件或子文件夾的時候就會停下來,這時我們加上/s就可以直接刪除,但是刪除過程中會提示你是否確定刪除,對于懶癌患者我們有添加了/q,即quiet,安靜模式;所以使用以上命令會完整刪除你選中的整個文件夾。
3.在Debian中設(shè)置freebsd的引導(dǎo)
sudo vim /etc/grub.d/40_custom
添加以下內(nèi)容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查看修改后的內(nèi)容。這種解決辦法存在缺點,在開機的時候如果插了移動設(shè)備,電腦的硬盤編號會從hd0變成hd1,如果插了多個移動設(shè)備,可能也會相應(yīng)變化,從而不能正常啟動。
以上方法還很粗糙,但解決問題了就很開心!
其他
1.使用Win32DiskImager,出現(xiàn)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 刪除該分區(qū)
8.依次選擇這個磁盤的分區(qū), 全部刪除
2.刪除多余的efi分區(qū)[4]
1.diskpart
2.list vol
3.sel vol n
4.del vol override
5.list vol
3.刪除efi分區(qū)下的文件
PS C:\WINDOWS\system32> cmd
Microsoft Windows [版本 10.0.18362.657]
(c) 2019 Microsoft Corporation。保留所有權(quán)利。
C:\WINDOWS\system32>x:
X:\>dir
驅(qū)動器 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 字節(jié)
3 個目錄 184,225,792 可用字節(jié)
X:\>cd x:\BOOT
x:\BOOT>dir
驅(qū)動器 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 字節(jié)
2 個目錄 184,225,792 可用字節(jié)
x:\BOOT>cd x:\EFI
x:\EFI>dir
驅(qū)動器 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 字節(jié)
8 個目錄 184,225,792 可用字節(jié)
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
補充
































