Manjaro Linux優化設置分享

在安裝完桌面版Linux後,由於個人「強迫症」多多少少要對Linux進行一番設置和優化。本文給大家分享Manjaro Deepin下我應用的一些設置,希望能為大家提供問題解決或優化的參考。當然,一些設置因發行版不同,可能並不適用。不過,Linux大同小異,通用的居多。

注意:某些設置可能會導致系統啟動或使用問題,設置前請備份好相應的數據文件,一旦有問題,可以恢復(備份工具可參考我寫的「Linux桌面系統備份工具介紹」一文)。目前包含以下內容:

  1. grub設置
  2. 磁碟參數調整
  3. sysctl.conf設置
  4. 啟用rc.local腳本
  5. 文件系統mount選項(ext4)
  6. 設置系統音量大於100%
  7. SMPlayer播放視頻卡頓問題
  8. Chrome瀏覽器flag參數設置
  9. Nautilus文件管理器設置
  10. 設置歷史命令保留格式
  11. 如何降級Package
  12. Lightdm登錄黑屏問題
  13. 桌面窗口管理器設置

首先看看grub設置

grub的配置文件主要是/etc/default/grub,這個文件初始由系統自動生成,可以手動修改其中的一些配置,而且不用擔心系統升級更新會覆蓋你的配置。

默認啟動項設置:GRUB_DEFAULT="1>2"

設置默認啟動項,通常=號後面是一個數字,從0開始,表示第一項,以此類推。我的grub有子菜單,所以不能單獨用一個數字。大家可能不清楚自己的grub菜單是什麼樣子,可以通過下面的方式找到對應項的序號。

sudo cat /boot/grub/grub.cfg|grep -i menuentry

通過下圖的輸出,可以看出我的grub菜單包含一個submenu(序號是1),對應的標題是「Advanced options for Manjaro Linux」;第一個menuentry序號是0,對應標題是「Manjaro Linux」;submenu下面的menuentry依次是2,3,4,5。所以用1>2,如果沒有submenu這一行,按圖中順序就可以直接用數字1。(更新:子菜單序號在我安裝了另外一個發行版後,序號從0開始,只能用1>0表示,所以根據系統不同可能不同)。

啟動參數設置:GRUB_CMDLINE_LINUX_DEFAULT="scsi_mod.use_blk_mq=1 intel_iommu=igfx_off i8042.nomux=1 i8042.reset=1 resume=UUID=a0d5ef47-05d2-4502-99e0-a54507e00148 resume_offset=2934783 nmi_watchdog=0 loglevel=3 nvidia-drm.modeset=1"

scsi_mod.use_blk_mq=1

這個參數是用來打開 Multi-Queue Block I/O Queuing Mechanism,這樣可以設置mq-deadline和bfq、Kyber等IO策略,有助於提高磁碟性能。但是打開這種功能後,默認的deadline、cfq兩種策略將無法設置。根據不同的使用場景,並不是某種IO策略一定好於另一種,個人建議保持系統默認。如果你覺得磁碟性能可能有問題,可以嘗試新的策略。原則是:機械硬碟一般使用cfq或bfq策略,SSD則使用noop、deadline或mq-deadline的其中一種。

查看當前磁碟的IO策略:

cat /sys/block/sdb/queue/scheduler #sdb替換為你的磁碟設備
noop [deadline] cfq #[deadline]表示當前磁碟使用的策略

修改磁碟策略:

echo cfq > /sys/block/sdb/queue/scheduler #可能會失敗,則採用下面的方法

為了讓系統啟動後自動應用相應的策略,可以在/etc/udev/rules.d目錄下新建文件60-ioschedulers.rules,內容如下:

# set scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]|mmcblk[0-9]*|nvme[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"
# set scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq"

其中ATTR{queue/scheduler}後面的值根據你當前系統支持的策略填寫,第一條為SSD設置,第二條為傳統機械硬碟設置。

intel_iommu=igfx_off

這個參數表示關閉intel的集成圖形引擎,可能影響虛擬化使用主機的GPU。如果你不使用intel的集成顯卡,這個參數有助於提高kernel啟動速度。

i8042.nomux=1 i8042.reset=1

這兩個參數用於驅動檢測i8042控制器是否支持多路復用,主要跟鍵盤、滑鼠相關。i8042.nomux=1表示關閉檢測,有助於提高Kernel啟動速度。如果發現鍵盤滑鼠有問題,建議不要添加。

resume和resume_offset

這兩個參數用於通過swap分區或swap文件進行Hibernate(相當於Hibernate to disk)。現在大多數Linux發行版都支持suspend to ram。如果你的系統suspend不正常,可以嘗試這種Hibernate方式。Hibernate和suspend主要用於筆記本節能省電。

nmi_watchdog=0

禁止NMI watchdog功能。NMI watchdog是一種能夠檢測到哪個硬體導致系統崩潰的調試功能,在某些情況下可能會產生頻繁的中斷請求,影響系統性能。

loglevel=3

主要用於顯示的系統日誌級別,默認是級別4,級別3產生更少的啟動日誌。如果需要診斷系統啟動問題,最高級別是7,會列印很多debug調試日誌。

GRUB_GFXMODE=1366x768

GRUB_TIMEOUT=1

設置grub菜單解析度,默認800x600,可以設置為屏幕支持的解析度;設置grub菜單顯示的超時時間為1s。

grub文件修改完成後,需要執行sudo update-grub使其生效

磁碟參數調整

前面grub設置里已經講到一點關於磁碟的IO策略設置,另外可以調整磁碟的read ahead大小。

hdparm -I /dev/sda #查看磁碟信息
hdparm -B /dev/sda #查看磁碟電源管理模式

磁碟電源管理模式的值從1到255,其中1到127允許磁碟休眠,128到254不會休眠,255關閉電源管理功能。

hdparm -B 254 -S 0 /dev/sda #關閉磁碟休眠,-S 0表示永不休眠(磁碟進入休眠的空閑超時時間是0)

這個設置可能在系統重啟後重置,可以像IO策略設置一樣,添加一個/etc/udev/rules.d/69-hdparm.rules文件,內容如下,注意替換sda為你對應的磁碟設備名:

ACTION=="add", SUBSYSTEM=="block", KERNEL=="sda", RUN+="/usr/bin/hdparm -B 254 -S 0 /dev/sda"

修改磁碟read ahead大小:

echo 640 > /sys/block/sdb/queue/read_ahead_kb
echo 640 > /sys/block/sda/queue/read_ahead_kb
echo 32 > /sys/block/sdb/queue/iosched/fifo_batch

sda/sdb 根據情況替換為你的設備;fifo_batch參數設置適用於ssd磁碟。這些值在系統重啟後,可能被重置,可以加入開機啟動,本人使用rc.local腳本(注意:rc.local在很多發行版里已經不支持了,個人覺得有些內容放這裡挺方便的。如何打開請看後面的內容)。

sysctl.conf設置

sysctl.conf用於系統參數設置,默認沒有sysctl.conf文件,我們可以sudo vi /etc/sysctl.conf創建

vm.swappiness = 1 #減少swap的使用
net.ipv4.tcp_window_scaling = 1
#net.core.rmem_max = 16777216
#net.ipv4.tcp_rmem = 500000 500000 16777216
#net.ipv4.tcp_wmem = 500000 500000 16777216
net.ipv6.conf.all.disable_ipv6 = 1 #禁用ipv6功能
#net.ipv4.tcp_tw_recycle = 1
#net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
#net.ipv4.tcp_keepalive_intvl = 30
#net.ipv4.tcp_keepalive_probes = 5
#net.ipv4.tcp_no_metrics_save = 1
#vm.dirty_expire_centisecs = 300
net.ipv4.tcp_fastopen = 3

其中設置了一些網路參數,但很多參數我的系統並不支持或沒有意義(注釋部分),大家可參考相關參數的解釋進行設置調優。最後執行命令:sudo sysctl -p生效,將命令sysctl -p加入rc.local腳本可開機應用。

啟用rc.local腳本

有些時候使用rc.local腳本比較方便,目前很多發行版不支持或沒有默認添加rc.local,我們可以自己把它加回來。

首先創建一個service文件,比如:sudo vi /usr/lib/systemd/system/rc-local.service,內容如下:

[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
After=NetworkManager.service

[Service]
Type=forking
ExecStart=/etc/rc.local &
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=no
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

注意ExecStart部分,表示後台執行/etc/rc.local腳本,當然rc.local腳本位置你可以自行設置。

sudo systemctl enable rc-local.service #設置rc-local開機自啟動

最後在/etc/下面創建一個rc.local腳本即可,並賦值執行許可權:sudo chmod +x /etc/rc.local

rc.local內容一般為:

#!/bin/bash
do something #中間為你添加的內容,比如命令、腳本等。
exit 0

文件系統mount選項(ext4)

tmpfs 這一行,表示把/tmp目錄掛載到虛擬內存里,性能比放置在磁碟上要高。

noatime 表示不記錄文件訪問時間。

data=writeback 表示僅記錄metadata到journaled日誌,不記錄數據到journaled日誌里,一旦磁碟因某種原因掛了,修改的記錄或數據就可能丟失了。

barrier=0 barrier功能是用來保證數據的一致性,關閉後可以提升性能,但是異常情況下容易丟失數據,無法恢復。

nobh 這個參數貌似已經不推薦使用了,大家可以忽略。

設置音量大於100%

如果感覺Manjaro Deepin系統的音量較小,可以嘗試調整系統音量可以大於100%。

首先需要安裝dconf-editor工具,打開dconf-editor後搜索volume,如下圖:

可以看到allow-volume-above-100-percent,點擊進去,修改值為True

SMPlayer播放視頻偶爾卡頓

可以嘗試調整選項中的Video和Audio參數,如圖

設置Video驅動為vdpau、設置Audio驅動為pulse

chrome瀏覽器flag參數設置

在chrome瀏覽器地址欄里輸入chrome://flags可打開flag參數設置,按關鍵字可搜索相應的flag參數,以下為一些提高chrome反應速度的參數設置,根據個人喜好設置。

Nautilus文件夾瀏覽設置

因為本人的文檔、圖片、視頻等目錄都不在默認位置,因此使用Nautilus文件瀏覽器的時候會比較彆扭。如下圖,左邊的導航欄默認路徑可修改,否則都默認指向/home/用戶名下面的文件夾:

可以通過下方方法設置路徑:

  • 首先修改配置文件/etc/xdg/user-dirs.conf

sudo vi /etc/xdg/user-dirs.conf 修改 enabled=True為enabled=False

表示禁止系統自動更新用戶目錄配置。

  • 接下來修改/home/username/.config/user-dirs.dirs文件,如下圖該文件內容所示:

可依次修改上述目錄路徑為你想要的文件路徑,最後建議重啟電腦,然後再打開Nautilus文件瀏覽器查看效果。另外,如果想要快捷訪問某些目錄,可以添加書籤。右鍵目錄名,點擊「Add to Bookmarks」

書籤顯示在左邊,如上圖所示。

設置歷史命令顯示格式

某些時候想查看歷史命令或復用(可以通過在Terminal下摁CTRL+R進行搜索),發現已經找不到曾經的命令(默認history有大小限制),而且查看歷史命令也沒有時間日期,感覺很空洞(其實對個人而言,這可能沒什麼卵用)。

設置顯示歷史命令日期後的效果:

設置方法:

在home目錄下有個.bashrc文件,在文件最後添加:

export HISTTIMEFORMAT="%Y/%m/%d %T "
export HISTSIZE=10000
export HISTFILESIZE=10000

最後兩個是希望保留更多的歷史命令,用戶下次登錄後生效。

如何降級Package

經常升級系統的朋友,難免會碰到升級某些Package後,系統異常。這時如果確定是某個更新的包引起的,可以嘗試降級。

sudo pacman -S downgrade #先安裝downgrade工具
vi ~/.bashrc 添加:export DOWNGRADE_FROM_ALA=1 #這個是為了防止在降級過程中類似「Downgrading from A.L.A. is disabled on the stable branch.」的報錯。
source ~/.bashrc #使上述參數生效

比如我想降級deepin-dock這個包,則執行:downgrade deepin-dock,如下圖會顯示提示及一個deepin-dock列表,讓你選擇你要降級到哪個版本。

輸入相應的序號後回車,則開始降級對應的Package。

LightDM登錄界面黑屏問題

如果你使用的是LightDM,又碰到登錄界面黑屏,但是盲打密碼能進入桌面,桌面顯示正常。這種情況下,一般是在LightDM啟動前,屏幕設置可能存在問題(原因一般是系統本身bug或更新導致的)。解決方法:

sudo vi /etc/lightdm/lightdm.conf #編輯lightdm配置文件

在[Seat:*]下面找到:display-setup-script= #默認是被注釋的

通過display-setup-script設置屏幕:

display-setup-script=xrandr --output eDP-1-1 --mode 1366x768

xrandr #該命令用於設置屏幕輸出

--output #選項指定輸出屏幕,eDP-1-1是我的主屏幕名稱

--mode #設置屏幕解析度大小

如何獲得你的主屏幕名稱呢?在Terminal下執行命令:

xrandr|grep -iw connected #如下圖所示:

修改lightdm.conf並保存文件後,重啟電腦查看效果。

桌面窗口管理器設置

Manjaro Deepin默認是開啟window effect的,包含透明、窗口動畫等效果。開啟窗口效果,雖然美觀,由於消耗一定資源,導致性能不是很理想,比如運行某個程序時會很緩慢。

如果我們不想要效果,可以關閉window effect。可是你發現關閉效果後,雖然反應速度大大提升,但是窗口邊界很難看,甚至出現黑色背景。

這裡有一個折中的辦法,Deepin默認使用的是Metacity Compositor管理器,當你disable window effect的時候,你可以看到一個deepin-metacity --replace的進程。

deepin-metacity -h #顯示幫助信息

如上圖,可以看到有一個選項 -c或--composite表示是否開啟窗口混合模式,這種模式下的桌面效果略好,同時性能也不錯。因此需要在合適的時機執行:deepin-metacity -c --replace,這裡目前個人採用的是在~/.config/autostart目錄下新建一個.desktop文件,讓其在登錄桌面後執行,比如deepin-metacity.desktop,內容如下:

[Desktop Entry]
Name=Deepin Compositor
GenericName=Compositor
Comment=Compositor
Exec=deepin-metacity -c --replace
Icon=
Terminal=false
Type=Application
Hidden=false

最後,可以重啟系統看效果。

持續更新......


推薦閱讀:

TAG:Manjaro | Linux | 設置 |