使用 FreeBSD 作为桌面

欢迎访问我的个人 Blog

如果从没有了解过 FreeBSD,请看如下:

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

问题描述:浏览网页时,鼠标滑轮滚动浏览器就会前进后退。

Salved

  • 执行下面命令后,上下滑动鼠标滑轮,看看映射到那些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。

Salved:

$ 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

Salved

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.

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值