Linux 純字符界面的玩法


Linux 純字符界面的用途##

  1. 裝逼必備
  2. 省資源,服務器一般不安裝圖形界面
  3. 圖形界面崩潰后緊急救援

進入字符界面的正確方式##

目前新的 Linux 發行版基本上都使用 Systemd 作為 init 程序,不再使用 SysV init 和 Upstart init。所以如果想讓系統啟動后直接進入字符界面,應該使用如下命令:

sudo systemctl set-default multi-user.target

反過來,要讓系統啟動后直接進入圖形界面,應該使用如下命令:

sudo systemctl set-default graphical.target

另外,Linux 本身提供有虛擬控制台的功能,使用 Ctrl + Alt + F1Ctrl + 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 非常簡單,玩兒似的,結果一進入純字符界面就抓瞎。不聯網,就不能下載和安裝軟件包,后面就玩不下去了。所以進入純字符界面后,要解決的第一件事就是怎么聯網。說到管理網絡的工具,大家可以列舉一大堆,什么 ipconfigiwconfigip 等等。但是,在最新的 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##

通過上面的截圖,發現兩個問題:

  1. 在我的 1920x1080 的筆記本電腦屏幕上,默認的字實在是太小;
  2. 不能顯示中文,上圖中 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 啦。效果如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM