FreeBSD 使用与常见问题
作者:互联网
欢迎访问我的个人 Blog。
文章目录
FreeBSD 計劃的目標在於提供可作任意用途的軟體而不附帶任何限制條文。 我們之中許多人對程式碼 (以及計畫本身) 都有非常大的投入, 因此,當然不介意偶爾有一些資金上的補償,但我們並沒打算堅決地要求得到這類資助。 我們認為我們的首要“使命”是為任何人提供程式碼, 不管他們打算用這些程式碼做什麼, 因為這樣程式碼將能夠被更廣泛地使用,從而發揮其價值。 我認為這是自由軟體最基本的,同時也是我們所倡導的一個目標。
我們程式碼樹中,有若干是以 GNU 通用公共授權條款 (GPL) 或者 GNU 較寬鬆通用公共授權條款 (LGPL) 發佈的那些程式碼帶有少許的附加限制,還好只是強制性的要求開放程式碼而不是別的。 由於使用 GPL 的軟體在商業用途上會增加若干複雜性,因此,如果可以選擇的話, 我們會比較喜歡使用限制相對更寬鬆的 BSD 版權來發佈軟體。
-Jordan Hubbard
Install Desktop Enviroment
GhostBSD 是最好的 FreeBSD 桌面发行版,注意使用 Official 版本,不能直接使用 FreeBSD 源升级,没有中国源。
X 最初設計是以網路為中心,採用 “client-server” 架構。在此架構下 “X 伺服器” 在有鍵盤、螢幕、滑鼠的電腦上運作。該伺服器負責的工作包含管理顯示、處理來自鍵盤、滑鼠的輸入及來自其他設備)的輸入或輸出。
每個 X 應用程式,如 XTerm、Firefox 都是 “客戶端”。
視窗管理程式規定螢幕上的視窗該長什麼樣、要如何移動滑鼠指標、 要用什麼鍵來在視窗切換、每個視窗的標題列長相,及是否該有關閉按鈕,等等。視窗管理程式負責滑鼠指標的聚焦政策。 聚焦政策指的是如何決定使用中及接收鍵盤輸入的視窗。通常較為人熟悉的聚焦政策叫做 “click-to-focus”,這個模式中,滑鼠點選到的視窗便會處於作用中 (Active) 的狀態。
KDE 與 GNOME 會被稱作桌面環境是因為包含了完整常用桌面作業的應用程式。
-
Install X Window System
$ sudo pkg install xorg
顯示卡、顯示器以及輸入裝置會自動偵測,無須任何手動設置。除非自動設置失敗,否則請勿建立 xorg.conf 或執行 -configure 步驟。
-
加入要執行 Xorg 的使用者到 video 或 wheel 群組,以便在可用時能開啟 3D 加速。
$ sudo pw groupmod video -m jru || pw groupmod wheel -m jru
-
較舊版的 FreeBSD 使用的 sc(4) 並不知到 KMS 系統的存在,這會導致關閉 X 之後即始仍在運作但系統 Console 卻呈現空白。較新版的 vt(4) Console 可避免這個問題。加入此行到 /boot/loader.conf 來開啟 vt(4)
kern.vty=vt
在 FreeBSD 較建議使用 /usr/local/etc/X11/ 來存放設定檔,每个项目都需要设定。多档完整路徑通常為 /usr/local/etc/X11/xorg.conf.d/。单档路径为/usr/local/etc/X11/xorg.conf
-
Install Desktop Environment
$ sudo pkg install gnome3 $ sudo pkg install gnome3-lite $ sudo pkg install x11/kde5 $ sudo pkg install xfce $ sudo pkg install mate
-
Install/Enable Display Manager
$ sudo pkg install slim # xfce,mate $ sudo pkg install x11/sddm # kde
-
Setting
$ sudo vi /etc/fstab gnome, kde proc /proc procfs rw 0 0 $ sudo vi /etc/rc.conf moused_enalbe="YES" dbus_enable="YES" # gnome, kde, xfce hald_enable="YES" # gnome, kde, mate gdm_enalbe="YES" # gnome启动 sddm_enable="YES" # kde启动 slim_enable="YES" # xfce,mate gnome_enable="YES" # gnome服务
-
slim Usage:failed to execute login command
$ sudo vi ~/.xinitrc exec mate-session # mate exec xfce4-session # xfce
Binary 套件
USTC Mirrors:注意使用 Latest 源,有很多流行软件。
因編譯選項不同,有些 Port 會有多個版本可使用。
-
使用 USTC MIRROR
$ sudo vi /usr/local/etc/pkg/repos/FreeBSD.conf FreeBSD: { url: "pkg+http://mirrors.ustc.edu.cn/freebsd-pkg/${ABI}/latest", } $ sudo pkg update -f # 更新索引
-
要啟動 (Bootstrap) 系統,請執行
$ sudo /usr/sbin/pkg
-
當升級原使用舊版 pkg_* 工具的既有系統時,必須將資料庫轉換成新的格式
$ sudo pkg2ng
-
Update the available remote repositories as listed in pkg.conf
$ sudo pkg update
-
Search for a package
$ sudo pkg search perl
-
在指定要安裝的套件時,最好使用 Port 來源來指定該應用程式,Port 來源是指應用程式在 Port 樹中的路徑
$ sudo pkg search -o perl
-
Install a package: Installing must specify a unique origin or version otherwise it will try installing all matches
$ sudo pkg install perl-5.14
-
列出已經安裝的 Port 中有那些已過時
$ sudo pkg version -l "<"
-
Upgrade from remote repository
$ sudo pkg upgrade
-
Delete an installed package
$ sudo pkg delete perl-5.14
-
Remove unneeded dependencies
$ sudo pkg autoremove
-
List installed packages
$ sudo pkg info
-
Display information about installed packages
$ sudo pkg info perl-5.14
-
Show the pkg-message of a package
$ sudo pkg info -D perl-5.14
-
要查詢已安在系統上的軟體是否有任何已知的漏洞
$ sudo pkg audit -F
-
因為相依所安裝的套件稱作自動 (Automatic) 套件,而非自動套件即套件被安裝的原因不是因為其他套件所相依
$ sudo pkg prime-list # deprecated
-
Clean the local cache of fetched remote packages
$ sudo pkg clean
Port 套件
優點:
- 可更改編譯選項
- 部份軟體的授權條款中禁止以 Binary 格式發佈。 這種軟體必須以原始碼發佈並由終端使用者編譯。
- 原始碼可套用自訂的修補。
Port 中並不含實際的原始碼,在編譯 Port 解壓縮時會自動下載的原始碼到 /usr/ports/distfiles
。
-
安裝 Port 套件集:下載壓縮後的 Port 套件集快照 (Snapshot) 到 /var/db/portsnap
$ sudo portsnap fetch
-
第一次執行 Portsnap 時,要先解壓縮快照到 /usr/ports
$ sudo portsnap extract
-
執行以下指令來更新 /usr/ports
$ sudo portsnap fetch $ sudo portsnap update
-
要找到 Port 所在的分類
$ sudo whereis lsof
-
使用 Port 套件集內建的搜尋機制來找軟體
$ sudo cd /usr/ports $ sudo make search name=lsof $ sudo make quicksearch name=lsof # 不接受多資訊
-
若要進行更有深度的搜尋
$ sudo make search key=string $ sudo make quicksearch key=string
-
一次設定所有Port 編譯選項
$ sudo make config-recursive
-
重新進入 Port 的編譯選項清單
$ sudo make config # or $ sudo make showconfig # or $ sudo make rmconfig
-
編譯並安裝 Port
$ sudo cd /usr/ports/sysutils/lsof $ sudo make install
-
編譯在 /usr/ports Port 並安裝到 /usr/home/example/local
$ sudo make WRKDIRPREFIX=../ports PREFIX=../local install
-
安裝過程中會建立工作用的子目錄用來儲存編譯時暫存的檔案。可移除此目錄來節省磁碟空間並漸少往後升級新版 Port 時造成問題
$ sudo make clean
-
移除已安裝的 Port
$ sudo cd /usr/ports/sysutils/lsof $ sudo make deinstall
安裝後的注意事項:
- 大部份應用程式安裝會在
/usr/local/etc
安裝至少一個預設的設定檔。 - 應用程式提供的文件會安裝到
/usr/local/share/doc
。 - 部份應用程式會以服務的方式執行,在啟動應用程式前前需要加入設定到
/etc/rc.conf
。這些應用程式通常會安裝啟動 Script 到/usr/local/etc/rc.d
。
Linux® Binary 相容性
FreeBSD 提供 Linux® Binary 的相容性,允許使用者在 FreeBSD 系統上不需要修改就可以安裝和執行大部份的 Linux® Binary。
最好不要直接安装 Linux 的软件,而使用 FreeBSD 源中的 Linux 软件,一般以 linux-package
命名。
-
載入 Linux® 核心模組
$ sudo kldload linux
-
對 64-位元的相容性
$ sudo kldload linux64
-
確認模組已載入
$ sudo kldstat
-
安裝基本的 Linux® 程式庫和 Binary
$ sudo pkg install emulators/linux_base-c7
-
Add the following line
$ sudo vi /etc/fstab linprocfs /compat/linux/proc linprocfs rw 0 0 linsysfs /compat/linux/sys linsysfs rw 0 0 tmpfs /compat/linux/dev/shm tmpfs rw,mode=1777 0 0
-
開機時開啟 Linux® 相容性
$ sudo vi /etc/rc.conf linux_enable="YES"
-
安裝 Linux® ELF Binary
$ sudo brandelf -t Linux my-linux-elf-binary
-
安裝以 Linux® RPM 為基礎的應用程式,需先安裝 archivers/rpm4 套件或 Port
$ sudo pkg install rpm4 $ sudo cd /compat/linux $ sudo rpm2cpio < /path/to/linux.archive.rpm | cpio -id
手動安裝其他程式庫
-
在 Linux® 系統,可使用 ldd 來找出應用程式需要哪個共用程式庫
% ldd linuxdoom libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0
-
複製 Linux® 系統輸出結果中最後一欄需要的的檔案到 FreeBSD 系統的 /compat/linux。 複製完後,建立符號連結 (Symbolic link) 至輸出結果第一欄的名稱
/compat/linux/usr/X11/lib/libXt.so.3.1.0 /compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0
自訂核心
為何要編譯自訂的核心?
自訂核心有許多項優點,如:
- 加速開機,因為自訂的核心只需要偵測您系統上存在的硬體,所以讓啟動所花的過程更流暢快速。
- 減少記憶體使用,自訂的核心通常會比
GENERIC
核心使用更少的記憶體,這很重要,因為核心必須一直存放在實體記憶體內。 - 支援額外的硬體,自訂的核心可以增加一些
GENERIC
核心沒有提供的硬體支援。
偵測系統硬體
-
dmesg
or/var/run/dmesg.boot
-
pciconf -lv
-
在 man指令加上 -k 旗標可列出有包含指定裝置品牌或名稱的手冊頁面清單:
man -k Intel
設定檔
/usr/src/sys
下子目錄代表著支援的硬體架構 (Architecture),每個支援的硬體架構中會有 conf
子目錄,裡面含有供該架構使用的 GENERIC
核心設定檔。
說明在GENERIC
同目錄的 NOTES
檔案中。所有架構通用選項,參考 /usr/src/sys/conf/NOTES
。
Others
Screen resolution on FreeBSD on VirtualBox
问题描述:在virtualbox虚拟机下,无法改变桌面分辨率为1366x768
$ VBoxManage setextradata "FreeBSD" VBoxInternal2/EfiGraphicsResolution 1366x768
Disable the Forward/Back buttons on my mouse
问题描述:浏览网页时,鼠标滑轮滚动浏览器就会前进后退。
-
执行下面命令后,上下滑动鼠标滑轮,看看映射到那些button,一般是buttons 8 and 9
$ sudo xev | grep -A2 ButtonPress
-
then disable button 8 and 9(前提是有上面的问题,否则就不要禁)
$ sudo vi ~/.Xmodmap pointer = 1 2 3 4 5 6 7 0 0 0 0 0
-
test it with the command,command automatically when you log in; if yours doesn’t, arrange for it to run when X starts.
$ sudo xmodmap ~/.Xmodmap
Install chinese font
$ sudo pkg search cjk # CJK(中日韩统一表意文字)
设单使用模式为不安全
$ sudo vi /etc/ttys
console none unknown off insecure
No space left on device
问题描述:使用 pkg update 时提示这个问题。原因是 /tmp is too small。
$ sudo vi /etc/fstab
tmpfs /tmp tmpfs rw,size=256000000 0 0 # size 以Byte为单位
VirtualBox™ guest additions
$ sudo cd /usr/ports/emulators/virtualbox-ose-additions && make install clean
$ sudo vi /etc/rc.conf
vboxguest_enable="YES"
vboxservice_enable="YES"
vboxservice_flags="--disable-timesync" # 若有使用 ntpd或 ntpdate,便可關閉主機時間同步功能
Fish
Fish 是"the friendly interactive shell"的简称,最大特点就是方便易用。
Fish 会自动在光标后面给出建议,表示可能的选项,颜色为灰色。如果采纳建议,可以按下→
或Control + F
。如果只采纳一部分,可以按下Alt + →
。
输入命令时,Fish 会自动显示匹配的上一条历史记录。如果没有匹配的历史记录,Fish 会猜测可能的结果,自动补全各种输入。
Run command on startup on FreeBSD
one of the final stages of the automatic boot process is to read a script file called /etc/rc.local
(if it exists). This file requires no special formatting or keywords, or the execute bit set.
标签:常见问题,sudo,程式,usr,FreeBSD,使用,Port,pkg 来源: https://blog.csdn.net/weixin_44609361/article/details/110008669