在安装完桌面版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

最后,可以重启系统看效果。

持续更新......


推荐阅读:
相关文章