Linux 純字符界面的用途##
- 裝逼必備
- 省資源,服務器一般不安裝圖形界面
- 圖形界面崩潰后緊急救援
進入字符界面的正確方式##
目前新的 Linux 發行版基本上都使用 Systemd 作為 init 程序,不再使用 SysV init 和 Upstart init。所以如果想讓系統啟動后直接進入字符界面,應該使用如下命令:
sudo systemctl set-default multi-user.target
反過來,要讓系統啟動后直接進入圖形界面,應該使用如下命令:
sudo systemctl set-default graphical.target
另外,Linux 本身提供有虛擬控制台的功能,使用 Ctrl + Alt + F1
到 Ctrl + Alt + F7
進行切換,其中有一個是圖形界面,剩下的是字符界面。圖形界面玩崩潰了,就不得不使用 Ctrl + Alt + F3
切換到字符界面進行救援。
關於 Framebuffer##
字符界面分兩種,一種是不開啟 Framebuffer 的,另一種是開啟 Framebuffer 的。Framebuffer 是一種圖形驅動,不開啟 Framebuffer 就是真的全字符,不能改變分辨率,不能顯示圖像,不能截圖。目前最新的 Linux 發行版默認開啟 Framebuffer。控制 Framebuffer 開啟和關閉,以及分辨率的方法,是設置 Grub2 的參數。修改 /etc/default/grub
文件,添加如下參數可以設置分辨率:
GRUB_GFXPAYLOAD_LINUX=1024x768x32
然后使用如下命令更新 GRUB2 配置:
sudo update-grub
其中的分辨率必須是我們的硬件支持的。可以通過 GRUB2 命令行中的 videoinfo
命令查看我們的硬件支持的分辨率。
如果要關閉 Framebuffer,則這樣更改 GRUB2 的配置:
GRUB_GFXPAYLOAD_LINUX=text
同樣,需要:
sudo update-grub
然后重啟。
字符界面下聯網##
以前在圖形界面的時候,設置個網絡、連接個 wifi 非常簡單,玩兒似的,結果一進入純字符界面就抓瞎。不聯網,就不能下載和安裝軟件包,后面就玩不下去了。所以進入純字符界面后,要解決的第一件事就是怎么聯網。說到管理網絡的工具,大家可以列舉一大堆,什么 ipconfig
、iwconfig
、ip
等等。但是,在最新的 Linux 發行版中,已經是使用 NetManager 管理網絡了。通過閱讀 NetManager 的文檔,可以知道它提供一個功能很強大的命令行工具,那就是 nmcli。通過 man nmcli
可以查看該工具的用法。如下圖:
使用如下命令可以查看可用的 wifi 熱點以及連接 wifi:
nmcli device status #查看網絡連接的狀態,可以看到各網卡的名稱
nmcli device wifi list iface 網卡名稱 #查看可用的 wifi 熱點
nmcli device wifi connect **** password **** #連接 wifi,需要提供 wifi 的名稱和密碼
如下圖:
連上了網,Ubuntu 就可以在純字符界面下起飛了。
使用 fbterm##
通過上面的截圖,發現兩個問題:
- 在我的 1920x1080 的筆記本電腦屏幕上,默認的字實在是太小;
- 不能顯示中文,上圖中 wifi 熱點名稱含有中文的,都顯示不出來。
解決辦法是使用 fbterm。一舉解決字體大小問題和中文顯示問題。先安裝 fbterm,使用如下命令:
sudo apt-get install fbterm
先使用sudo fbterm
啟動 fbterm 一次,再用exit
命令退出,這樣,fbterm 會自動生成一個默認的配置文件~/.fbtermrc
,然后修改 ~/.fbtermrc
配置文件中的兩行,設置使用的字體和字體大小,如下:
font-names=DejaVu\ Sans\ Mono
font-size=16
然后使用 sudo fbterm
命令啟動 fbterm,就可以了。下面是看對比圖,使用 fbterm 之前,Vim 的啟動界面是不能顯示中文的:
使用 fbterm 之后,中文可以正常顯示:
使用 fbterm 之前,閱讀代碼是這樣的:
字非常的小,NERDTree 和 Tagbar 里面的符號顯示也有問題。使用 fbterm 之后,就很漂亮了,如下圖:
這才是全高清屏該有的顯示效果嘛。關於在 fbterm 下輸入中文,我嘗試過 fbterm-ucimf,也嘗試過 fcitx-frontend-fbterm,都沒有成功。后來我就不試了,反正我也沒有在全字符界面下輸入中文的需求。
顯示 Framebuffer 的信息##
使用 fbset 可以查看 Framebuffer 的信息,包括 Framebuffer 是否開啟,分辨率是多少,由哪個內核模塊提供支持等。使用如下命令安裝 fbset:
sudo apt-get install fbset
使用sudo fbset -i
命令查看 Framebuffer 的信息,如下圖:
在 Framebuffer 下截圖##
使用 fbgrab 可以在 Framebuffer 下進行截圖。使用如下命令安裝 fbgrab:
sudo apt-get install fbgrab
使用 fbgrab 命令的方式如下:
sudo fbgrab -c N filename.png #對 /dev/ttyN 對應的終端進行截圖
sudo fbgrab -C N filename.png #先跳轉到 /dev/ttyN 對應的終端,再進行截圖
sudo fbgrab -s N filename.png #先等待 N 秒,再進行截圖
我前面的圖片都是使用 fbgrab 截的,這里就不貼圖了。
在 Framebuffer 下查看圖片##
使用 fbi 可以在 Framebuffer 下查看圖片,同樣使用sudo apt-get install fbi
安裝這個軟件。在看圖界面下按 H 鍵,還會顯示幫助信息。如下圖:
在純字符界面下上網##
使用老牌的上網工具 w3m,安裝方式sudo apt-get install w3m
,然后使用w3m https://www.cnblogs.com/
就可以訪問博客園了,只有文字哦,圖片就不要想了。效果如下圖:
當然,必須在 fbterm 下執行才能顯示中文。
視頻播放##
使用 mplayer 播放器可以播放視頻,通過mplayer -vo help
命令可以看到,mplayer 支持很多種視頻驅動,而 Framebuffer 正是其中一種。使用sudo mplayer -vo fbdev2 badapple.mp4
播放 Bad Apple 的 PV 視頻,效果如下:
因為這里要錄制 gif 動畫,所以我使用了虛擬機運行 Linux,Framebuffer 的分辨率設置為 1024x768。同樣,通過上面的mplayer -vo help
命令,還可以看到 mplayer 支持使用 libaa 庫,將視頻播放為字符畫。據我觀察,只有在圖形界面下效果才可以,純字符界面不行。使用mplayer -vo aa -moniterpixelaspect 0.5 badapple.mp4
播放,效果如下:
屏保和裝逼##
當然是 cmatrix 啦。效果如下: