menu Chancel's Blog
rss_feed lightbulb_outline

Manjaro - 拿来主义的一次欢乐之旅

warning 这篇文章距离上次更新于868天前,文中部分信息可能已失效,请自行甄别无效内容。

介绍

  • 来自Wiki的简单介绍

    Manjaro /mənˈdʒɑːroʊ/ is an open-source Linux distribution based on the Arch Linux operating system. Manjaro has a focus on user friendliness and accessibility, and the system itself is designed to work fully "straight out of the box" with its variety of pre-installed software. It features a rolling release update model and uses pacman as its package manager. Manjaro是一个基于ArchLinux操作系统的开源Linux发行版,Manjaro专注于用户友好性和高效,并且系统本身设计做到了“开箱即用”而无需预装各类软件,它采用滚动升级版本的方式以及pacman作为包管理器

从大学毕业前就开始折腾Linux,出于水平问题,前前后后使用过Ubuntu、Fedora、Cent OS、Deepin等发行版,其中Ubuntu的预装界面真的“惊艳”到我了,真正可以使用的一个Linux桌面系统应该是Fedora,用了一段时间之后因为GNOME桌面的各种小毛病问题放弃了(如果你只有一台电脑,且装了Linux,放弃概率增加99%)

直到后来大学毕业以后接触到Deepin,国内算是很清新的Linux发行版,对国产化支持也非常好,他的出现直接推动了许多国产软件的Linux版本诞生,如今你安装任何Linux发行版,如果需要国内的办公软件,都绕不过要安装Deepin的软件版本

对于新入手Linux的同学,Linux发行版据个人经验,难度上Red Linux=Deepin Linux<Arch Linux,其中Deepin/Ubuntu算是入手最佳,前者极致的适应了Windows的操作逻辑与Mac OS的界面,后者则是有着国内最大装机量(未经考察)的系统,中文资料极其多,只要你需要,多多少少靠百度就能解决大部分Ubuntu上的问题,相较之下,ArchLinux中文资料较少,大部分靠官方Wiki解决(但这其实并不是劣势反而是优势)

优点

  • 滚动更新
  • 轻量、简洁
  • 丰富的驱动支持
  • 中文的官方文档Wiki
  • pacman高效包管理器
  • AUR仓库包含大量软件包

安装

下载

  • 官网下载地址:https://manjaro.org/download/

    • 官方支持桌面:XFCE、KDE、ARCHITECT、GNOME
    • 社区支持桌面:MATE、CHINNAMON、OPENBOPX、AWESOME、BSPWM、BUDGIE、I3、DEEPIN
  • 推荐桌面:XFCE/DEEPIN桌面

刻录

此时你需要一个u盘(虚拟机略过)

  • 如果你是Linux系统,使用如下指令可以写入系统到U盘里,其中 /dev/sdb是你的U盘卷标,如果不清楚你的u盘卷标是什么,使用 fdisk -l进行查看

      dd if=manjaro-xfce-18.0.4-stable-x86_64.iso of=/dev/sdb
  • 如果你是Windows系统,各种写入方式都很方便,这里介绍三种

    1. 可以参考 官方文档 - How create a boot USB-Stick
      • 步骤:下载刻录工具ImageWriter,安装后打开,选择iso与u盘,点击写入即可
    2. 使用UltraISO
      • 步骤:下载UltraISO(需要激活),然后选择iso打开,点击菜单项找到写入硬盘,在弹出的对话框中选择U盘,写入方式RAW,点击写入即可
    3. 使用 Windows10 WSL功能,详细自行搜索,启用WSL之后在子系统中使用dd指令写入

安装

将u盘插入电脑,更改启动顺序为U盘,进入安装界面后选择 Boot Manjaro,在启动后的系统桌面上选择 install ...按钮,进入安装步骤,大部分情况下都是一直下一步,语言在此处也可以切换为中文的,这里只有硬盘分区的挂载方式值得商讨一下

分区 现在安装Windows10,大部分情况下已经没有分磁盘的必要,基本是一个硬盘对应一个磁盘即可,软件也都尽数安装在c盘,Winodws几乎已经完成所有你需要的考虑的地方

  • /

    • 根分区,所有的文件和目录都挂靠在根分区下,即使他们实际上存储在其他的物理设备上/ 分区或叫根分区是最重要而且必需的,需要最先挂载,其他其他分区可以被它取代,与系统启动相关的特定目录(除了/boot外) 必须与/在同一个分区,或者在系统刚进入用户态的时候通过initramfs,这些特定的目录包括:/etc 和 /usr
  • /boot

    • 内核分区,主要存放内核、ramdisk镜像、bootloader配置文件和bootloader stage,如果使用UEFI启动器,支持读取ESP的系统,建议将ESP挂在到/boot,非UEFI建议200MB大小,UEFI建议512MB以上大小
  • /home
    • 用户分区,基本会存储用户定义的配置文件、缓存、应用程序数据和媒体文件,请避免多个发行版共同使用一个独立的/home分区,这会导致许多不稳定问题,分区大小视情况而定
  • /var
    • 存储变量数据分区,例如日志、登录数据、包管理器的缓存,通常用作缓存或者日志记录,因此读写频繁,独立出来好处可以避免由于大量日志写入造成的磁盘空间耗尽等问题(该分区包含大量小文件,如果将其作为独立分区,在文件系统上要考虑到这一点)
  • /swap
    • 虚拟内存分区,如果机器内存不足512MB的机器,swap通常会分配2倍内存大小,如果有更大的内存(大于1024MB),可以分配较少甚至不需要分配swap分区
  • /data
    • 可以为多用户需要分享文件而创建一个用于分享的区域(较少见)

语言 建议选择英文,中文目录在cd的时候不方便,而且中文会引入编码问题

配置

使用准备

首先更换国内源(如果你的网络连接国外足够快,则无需更换),然后滚动升级系统

sudo nano /etc/pacman.conf

在pacman.conf文件末尾添加以下配置

[archlinuxcn]
SigLevel = Optional TrustedOnly
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch

紧接着更新系统以及修复PGP签名

sudo pacman -Syuu && sudo pacman -S archlinuxcn-keyring

到这一步官方仓库安装软件的配置修改完成,接下来让我们安装一些常用软件

基础软件

Chrome

sudo pacman -S google-chrome

搜狗输入法

sudo pacman -S fcitx-im
sudo pacman -S fcitx-configtool
sudo pacman -S fcitx-sogoupinyin

编辑用户目录下的输入法配置文件

sudo nano ~/.xprofile

添加中文输入法的支持

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"

接着重启电脑,按Super/Win键,输入fcitx,选择 fcitx configuration,点击添加,直接搜索 pinyin,找到搜狗拼音并确定添加,到这里系统就可以输入中文了

Note:如果搜狗输入法启用成功但输入拼音后没有候选词,那是因为缺少中文语言包,在系统设置里找 Manjaro Settings Manager 里面可以添加中文语言包

AUR仓库安装支持

PACMAN的软件很多,但AUR软件更多!官方的AUR仓库以前使用 yaourt作为管理安装工具,后来逐渐被弃用,截止2019年06月,yaourt仍然可以使用,但这里推荐更好用的 yay,我们首先安装yay

sudo pacman -S yay

yay用法介绍(以vim软件为例子)

  • yay -Qs vim 查找官方仓库包含软件详情

      $ yay -Qs vim
      local/vim 8.1.1467-1
      Vi Improved, a highly configurable, improved version of the vi text editor
      local/vim-runtime 8.1.1467-1
      Vi Improved, a highly configurable, improved version of the vi text editor (shared runtime)
  • yay -S vim 安装软件

  • yay -R vim 删除软件

  • yay -V 查看yay版本

  • yay -h 获取帮助

软件介绍

以下所有软件均能使用pacman或yay安装,推荐yay安装,yay本身就包含了pacman的仓库,名字都是准确的包名(截止201906) 如果显示package not found,请使用 yay -Qs 查找相关安装包

系统软件

软件 介绍
vim 终端文本编辑
git 代码管理
wget 终端下载文件必备
unzip 解压zip文件

日常软件

软件 介绍
deepin.com.qq.im Deepin版TIM
deepin.com.qq.office Deepin版WPS
kchmviewer CHM阅读软件
teamviewer 远程工具
netease-cloud-music 网易云音乐
baidunetdisk 百度网盘
deepin.com.thunderspeed Deepin版迅雷
deepin-movie Deepin版视频播放器
evince 支持阅读DF, Postscript, djvu, tiff, dvi, XPS, SyncTex support with gedit, comics books等资料

开发软件

软件 介绍
postman-bin API测试工具
proxychains 终端代理工具
deepin-picker Deepin版取色器
visual-studio-code-bin 宇宙第一IDE

超神套装

软件 介绍
screenfetch 显示机器配置与Logo
neofetch 显示机器配置与Logo
lolcat 彩虹输出字符

技巧

虚拟机 - KVM

挑选上面列表中适合自己的软件进行安装,有这些软件的辅助相信易用性上会有所提升,但有时候仍然需要用到一些仅仅只有Windows客户端的软件,然而wine...一言难尽

那么我们就来看看在Manjaro下如何虚拟Windows,这里要介绍一个Linux下的虚拟框架KVM,相比其他虚拟软件,KVM提供内核级别的虚拟,最大性能的共享物理机器的性能,实测虚拟的Winodws10在固态硬盘下体验较为流畅

不过个人建议虚拟Windows这种事,机器配置好的上,我的配置是512G SATA固态 + 32G内存 + E3CPU,不做太复杂的事情还算吃得消,不过即使这样虚拟的Windows10的速度也只能算勉为其难

以下过程参考 KVM(简体中文) - ArchWiki)

检查支持情况

# 检查BIOS虚拟化是否开启,Intel处理器输出VT-x,AMD处理器输出AMD-V
LC_ALL=C lscpu | grep Virtualization
# 如果模块设置不为 y或m,则该模块不可用
zgrep CONFIG_KVM /proc/config.gz
# 检查VIRTIO模块是否可用
zgrep VIRTIO /proc/config.gz

这是我机器上的输出,可以对照一下

# chancel @ chancel-cp in ~ [11:31:22] 
$ LC_ALL=C lscpu | grep Virtualization
Virtualization:      VT-x

# chancel @ chancel-cp in ~ [11:31:24] 
$ zgrep CONFIG_KVM /proc/config.gz
CONFIG_KVM_GUEST=y
# CONFIG_KVM_DEBUG_FS is not set
CONFIG_KVM_MMIO=y
CONFIG_KVM_ASYNC_PF=y
CONFIG_KVM_VFIO=y
CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
CONFIG_KVM_COMPAT=y
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
CONFIG_KVM_AMD=m
CONFIG_KVM_AMD_SEV=y
CONFIG_KVM_MMU_AUDIT=y

# chancel @ chancel-cp in ~ [11:31:33] 
$ lsmod | grep kvm
kvm_intel             249856  0
kvmgt                  28672  0
mdev                   20480  2 kvmgt,vfio_mdev
vfio                   32768  3 kvmgt,vfio_mdev,vfio_iommu_type1
kvm                   733184  2 kvmgt,kvm_intel
irqbypass              16384  1 kvm

# chancel @ chancel-cp in ~ [11:32:28] 
$ zgrep VIRTIO /proc/config.gz
CONFIG_BLK_MQ_VIRTIO=y
CONFIG_VIRTIO_VSOCKETS=m
CONFIG_VIRTIO_VSOCKETS_COMMON=m
CONFIG_NET_9P_VIRTIO=m
CONFIG_VIRTIO_BLK=m
# CONFIG_VIRTIO_BLK_SCSI is not set
CONFIG_SCSI_VIRTIO=m
CONFIG_VIRTIO_NET=m
CONFIG_CAIF_VIRTIO=m
CONFIG_VIRTIO_CONSOLE=m
CONFIG_HW_RANDOM_VIRTIO=m
CONFIG_DRM_VIRTIO_GPU=m
CONFIG_VIRTIO=m
CONFIG_VIRTIO_MENU=y
CONFIG_VIRTIO_PCI=m
CONFIG_VIRTIO_PCI_LEGACY=y
CONFIG_VIRTIO_BALLOON=m
CONFIG_VIRTIO_INPUT=m
CONFIG_VIRTIO_MMIO=m
CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
CONFIG_RPMSG_VIRTIO=m
CONFIG_CRYPTO_DEV_VIRTIO=m

安装KVM以及相关依赖项

# 连接网络依赖ebtables dnsmasq bridge-utils openbsd-netcat等包
sudo pacman -S qemu virt-manager virt-viewer dnsmasq vde2 bridge-utils openbsd-netcat ebtables iptables

启动KVM后台服务并启动GUI管理界面

sudo systemctl enable libvirtd.service
sudo systemctl start libvirtd.service
virt-manager

到这一步就结束了,从创建开始都是图形化傻瓜操作了,创建完Windows之后肯定有一个问题,如何远程?这里推荐 remmina 软件,支持多种协议包括微软的远程桌面协议 安装 remmina,请千万要安装remmina-git,其他版本需要自行安装rdp组件还有一些小bug,有兴趣可以试试

yay -S remmina-git

Shell - ZSH

Manjaro的Shell已经很好看了,但对于使用过ZSH的人来说,ZSH的主题是很酷的(没错就冲着主题效果换ZSH!),关于ZSH的主题,可以参考Oh-My-Zsh主题集汇总,而且重点是可以设置Root用户跟普通用户不一样的主题,以防止自己提权之后导致的误操作

官方仓库已经收录ZSH了,稍微新一些的Manjaro版本都已经收录ZSH的了,先查看一下当前已经安装的虚拟终端

cat /etc/shells
# 如果没有zsh,使用下面的指令进行安装
sudo pacman -S zsh

ZSH的配置比较繁琐,这里有现成的模板oh-my-zsh,使用下面任一命令进行一键安装

# curl方式安装
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
# wget方式安装
sh -c "$(wget -O- https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

切换ZSH

  • 在当前用户下,输入 chsh -s /bin/zsh可切换虚拟终端,注意的是,如果zsh不是安装在/bin/下,请自行更换相应的路
  • 修改 vim ~/.zshrc,将ZSH_THEME的内容修改为任意主题名字,重启终端既可切换主题

此时可以切换到Root用户,重复上面切换ZSH的两个步骤,即可使Root用户跟普通用户的主题不一致(建议Root用户使用较为明显的主题颜色,普通用户使用浅色系主题以达到区分的效果)

任务管理 - Supervisord

Supervisor is a client/server system that allows its users to monitor and control a number of processes on UNIX-like operating systems.

Supervisor是用于管理后台进程的神器,运行一些常见的软件非常有效果(如Aria2、MongoDB、syncthing、frp等不带进程管理的软件)

我们以Aria2为例子来看看Supervisor如何管理后台,首先安装supervisor

sudo pacman -S supervisor

修改supervisor配置文件,开启web界面管理

vim /etc/supervisord.conf
# 取消如下注释(去掉前面的;号),修改username与password

[supervisorctl]
serverurl=unix:///var/run/supervisor/supervisor.sock ; use a unix:// URL  for a unix socket
;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
;username=chris              ; should be same as http_username if set
;password=123                ; should be same as http_password if set
;prompt=mysupervisor         ; cmd line prompt (default "supervisor")
;history_file=~/.sc_history  ; use readline history if available

启动supervisor

sudo systemctl enable supervisord
sudo systemctl start supervisord

创建管理Aria2的配置文件,配置文件很简单,几乎不需要任何注释都可以看得懂

[program:Aria2]
command=/opt/aria2/aria2c --conf-path=/opt/aria2/aria2.conf
# 有部分需要配置环境变量的程序可使用environment进行配置
# environment=ASPNETCORE__ENVIRONMENT=Production 
user=root
stopsignal=INT
autostart=true
autorestart=true
startsecs=3
stderr_logfile=/var/log/supervisor/aria2.error.log
stdout_logfile=/var/log/supervisor/aria2.output.log

更新supervisor,使其读取新的配置文件

supervisorctl update
# 与 supervisorctl reload不同,update不会重启任何未修改的应用,reload会重新读取所有配置文件重启所有应用,请注意!

此时打开 http://127.0.0.1:9001 ,既可看到Aria2正在运行,可以从界面上重启/停止/启动Aria2

性能监控 - Glances

Glances is a cross-platform system monitoring tool written in Python.

其实这个不用单独拎出来说的,只是linux下查看cpu/ram/进程的方式过于累赘分别是

# CPU占用
top
# 内存占用
free
# 进程列表
ps

Glances效果参考Glances - An Eye on your system 安装Glances

sudo pacman -S glances

查看Glances界面

glances

好了,到这里基本就算是配置完成一台可以正常使用的Manjaro系统了,在我的使用过程中还遇到以下这些问题

  • 显示器没有声音
  • 闭源显卡驱动导致系统卡顿
  • 无线网卡Intel 8260驱动不稳定导致Wifi时有时无

都通过搜索一些资料后解决,使用Linux做桌面系统本身比较折腾,在不破坏效率和工作环境的情况下,更换成Manjaro的体验还是很赞的!

有任何使用Linux的疑问欢迎留言讨论

博文目录

[[replyMessage== null?"发表评论":"@" + replyMessage.m_author]]

account_circle
email
web_asset
textsms

评论列表([[messageList.data.items.length]])

[[messageItem.m_author]] [[messageItem.m_author]]
[[messageItem.create_time]]
[[messageItem.m_environ.browser]] [[messageItem.m_environ.os]] [[messageItem.m_environ.device]]
[[subMessage.m_author]] [[subMessage.m_author]] @ [[subMessage.parent_message.m_author]] [[subMessage.parent_message.m_author]]
[[subMessage.create_time]]
[[subMessage.m_environ.browser]] [[subMessage.m_environ.os]] [[subMessage.m_environ.device]]