manjaro 安装及配置

在个人 Linux 主机上使用 manjaro,体验不一样的 Linux。


描述

在全球知名的 DistroWatch 网站,Manjaro 的排名一直稳步快速上升,风头非常强劲。

短短几年,从无名小辈迅速成长为最受欢迎的 Linux 发行版之一,直逼老牌发行版 OpenSuse 和 Debian。

manjaro 基于最强大的 ArchLinux,ArchLinux 有 3 个无与伦比的优势:

  • 滚动更新可以使软件保持最新;

  • AUR 软件仓库有着世界上最齐全的 Linux 软件;

  • 丰富的 wiki 和活跃的社区让所有问题都可以快速得到满意的答案.

manjaro 继承了 archlinux 滚动更新的特点,并在 arch 的基础上对不稳定软件做了测试和控制,确保过于超前的软件不至于伤害系统。

manjaro 默认情况下通过一个叫 pamac 的软件可以直接使用 AUR 上最齐全的软件。同时,manjaro 的很多问题也可以通过 archwiki 得到答案

manjaro 安装

此处介绍的是在 vitualbox 里安装 manjaro,如果是在实体机中安装请使用Rufus或者imagewrite或者etcher软件进行安装盘的烧录.

manjaro 的 ISO 文件下载请前往:

清华源下载

manjaro 官方下载

需要注意以下几点:

  • 分区引导系统是 BIOS 使用 MBR;

  • 分区引导系统是 EFI 使用 GPT;

  • 安装完后需要移除掉挂载的 ISO 盘,不然重启后一直跳转到安装界面而进不了系统.

下面以图片的方式介绍安装过程:

manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍manjaor安装过程介绍

manjaro 配置

生成可用中国镜像站列表

sudo pacman-mirrors -i -c China -m rank

勾选http://mirrors.ustc.edu.cn/manjaro/,然后按OK键两次

这里会将结果保存到/etc/pacman.d/mirrorlist

manjaro 官方源列表

升级系统

sudo pacman-optimize && sync #同步并优化(类似磁盘整理,固态硬盘无需操作)

sudo pacman -Syyu

默认 manjaro 是没有同步数据包的,也就是说,这个时候你执行pacman -S pack_name会报数据包找不到的错误(warning: database file for ‘core’ does not exist …)

设置 archlinuxcn 源

sudo vim /etc/pacman.conf

末尾添加

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

这里用的是清华的源,当然也可以用中科大的源https://mirrors.ustc.edu.cn/archlinuxcn/$arch

导入 GPG Key

sudo pacman -S archlinuxcn-keyring

如果报错,可尝试如下操作:

sudo pacman -Syu haveged
sudo systemctl start haveged
sudo systemctl enable haveged
sudo rm -rf /etc/pacman.d/gnupg
sudo pacman-key --init
sudo pacman-key --populate manjaro
#sudo pacman-key --populate archlinux
sudo pacman-key --populate archlinuxcn

然后再运行sudo pacman -S archlinuxcn-keyring即可.

archlinux-keyring 导入失败参考

安装 yaourt

为了后期使用 AUR 源里的软件,也可以额外安装 yaourt

sudo pacman -S yaourt

之后安装包就可以使用 yaourt 安装了

yaourt pack_name

安装常用软件

sudo pacman -S vim git wget chromium netease-cloud-music

开启 aria2c 多线程加速下载

sudo pacman -S aria2c

sudo vim /etc/pacman.conf

找到Xfercommand修改成如下

XferCommand = /usr/bin/aria2c -x 8 -s 8 --dir $(dirname %o) -o $(basename %o) %u

保存更新系统

yaourt -Syyua

安装输入 sogou 输入法

#安装中文字体(此处可先忽略):
# 报错Couldn't determine full name for SGPYEUDC_1.TTE Couldn't get family name for SGPYEUDC_1.TTE时需安装中文字体.

sudo pacman -S ttf-roboto noto-fonts ttf-dejavu
sudo pacman -S wqy-bitmapfont wqy-microhei wqy-microhei-lite wqy-zenhei  # 文泉驿(二选一,更新manjaro后选此字体使用搜狗还是不能输入中文,应该和我系统选择的字体是思源字体有关)
sudo pacman -S noto-fonts-cjk adobe-source-han-sans-cn-fonts adobe-source-han-serif-cn-fonts # 思源字体(二选一)

# 安装搜狗输入法:
sudo pacman -S fcitx
sudo pacman -S fcitx-configtool   # 图形化工具
sudo pacman -S fcitx-gtk2 fcitx-gtk3
sudo pacman -S fcitx-qt4 fcitx-qt5
sudo pacman -S fcitx-sogoupinyin

输入环境添加

vim ~/.xprofile

在文件中添加如下配置

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

保存成功后,在终端输入fcitx启动服务后,会增加一个键盘的托盘图标,右击这个图标,打开配置工具,在输入法栏目中增加 sogoupinyin 输入法。

重启后就能正常使用了。

安装 ZSH

ZSH 可以说是 shell 中的极品,它的优点太多了,我就不一一写出来,有兴趣的同学可以看这篇文章知乎-为什么说 zsh 是 shell 中的极品

我们首先将 git 安装好,因为我们等会配置的时候需要用到 git

sudo pacman -S git

接着安装 zsh

sudo pacman -S zsh

然后配置 oh-my-zsh

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

更换默认的 shell

chsh -s /bin/zsh

重启之后就就可以愉快的使用 zsh 了~

设置 aur 源

修改 /etc/yaourtrc,去掉# AURURL的注释,修改为

AURURL=”https://aur.tuna.tsinghua.edu.cn”

桌面美化

sudo pacman -S adapta-kde

sudo pacman -S papirus-icon-theme

sudo pacman -S docky

修改 grub 背景图

sudo vim /usr/share/grub/themes/manjaro/theme.txt

修改desktop-image: "background.png"的值即可。

更新后不显示中文字体

sudo pacman -S wqy-microhei

pycharm 显示中文

Run the IDE前输入:

# support chinese input

#export GTK_IM_MODULE=ibus
#export QT_IM_MODULE=ibus
#export XMODIFIERS=@im=ibus

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

manjaro 修改 DNS

想修改本机的 DNS 地址,但在/etc/resolv.conf 中修改了 DNS 后重启就失效了.

查看manjaro 配置 DNS 手册后发现需要做如下设置

手动添加 DNS

sudo vim /etc/resolv.conf

添加内容如下:

# Generated by resolvconf

# AliDNS
nameserver 223.5.5.5

# CMCC_DNS
nameserver="211.136.150.66 211.136.112.50"

为了使修改立即生效,请执行sudo resolvconf -u

重启网络

sudo systemctl restart --now NetworkManager.service

在 resolv.conf 中保留改动

NetworkManager 试图将 DHCP 中获取的 DNS 信息写入/etc/resolv.conf,导致原文件被覆盖,你可以在文件属性中设置 i 参数避免文件被修改

sudo chattr +i /etc/resolv.conf

如果你要修改此文件,移除 i 参数:

sudo chattr -i /etc/resolv.conf

误删 boot 分区导致启动不了系统

电脑有两块硬盘,其中一块已经安装了 manjaro 系统,想在另一块硬盘上安装 win10,但在分区时误删了 manjaro 的 boot 分区,导致进不了系统.

问题描述:

1: 开机直接进入 recuse grub 模式.

2: 没有 grub 菜单,在 recuse 模式下无法找到/boot/grub 文件.

3: 加载不了内核信息.

4: 需要重新划分/boot 分区.

解决办法:

此方法是针对 BIOS 启动的:

下载 manjaro 的官方镜像重新刻录 U 盘启动,进入 liveCD,然后在里面打开终端,执行如下命令:

重新创建/boot 分区

如果没有误删除/boot 分区不用执行此步骤

在用 liveCD 进入系统后,在菜单中找到KDE Partition Manager工具.

然后按下图进行操作:

wwwechoxuwwwechoxuwwwechoxu

这样我们就重建好了/boot 分区.

另外我们还需要修改/etc/fstab 中的/boot 分区配置,通过 lsblk -f 查看到刚划分的/boot 分区的 UUID,然后修改/etc/fstab 中/boot 的 UUID 为刚查到的新 UUID.

查看分区情况

lsblk -f 可以列出分区信息,但不是图形化的,需要更直观的查看分区信息可使用 GPartEd ,需通过 pacman -S GPartEd 安装.

下面是我的分区情况:

sda
├─sda1 ntfs                      系统保留         C078B1B478B1AA14                      471.2M     6% /run/media/manjaro/系统保留
├─sda2 ntfs                                       60AAD071AAD04566                       21.4G    56% /run/media/manjaro/60AAD071AAD04566
├─sda3 ntfs                                       94A27E7CA27E6322
└─sda4 ntfs                                       4486D53C86D52EE4                       59.1G    66% /run/media/manjaro/4486D53C86D52EE4
sdb
├─sdb1 swap     1                                 b3a00f0d-51a7-4523-9f8a-d58adcaf7f55
├─sdb2 xfs                                        56cef414-9257-46fb-915c-d8ec1fee35a1     29G    75% /mnt/mnt
└─sdb3 xfs                                        66294380-121c-4d24-894d-9941514441a6  444.3M    12% /run/media/manjaro

使用 manjaro-chroot 选择已经安装的系统

sudo manjaro-chroot -a 选择 manjaro 系统,如果安装了双系统可看到 win10 和 manjaro.

3: 切换到 root

sudo su

4: 再次检查分区

lsblk -f 或者 sudo blkid -o list -c /dev/nul

5: 挂载磁盘

mount /dev/sdb2 /mnt 这里的 sdb2 是我的 manjaro 的根分区

mount /dev/sdb3 /mnt/boot 这里是挂载刚创建的/boot 分区.

6: 切换到 manjaro 根目录

cd /mnt

并执行如下命令:

mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
mount -t devpts pts /mnt/dev/pts/
chroot /mnt

7: 重新生成 grub

sudo pacman -S mtools os-prober

grub-install /dev/sdb 不要用 manjaro 的根目录 sbd2 作为 grub 的存放目录,直接选择/dev/sdb 这个总盘符,此项操作会自动将 grub 等信息写入到/boot 分区.

注意

此项操作会在/boot 中找 initramfs-5.5-x86_64.img,vmlinuz-5.5-x86_64,linux55-x86_64.kver 这样的文件,如果没有这样文件在生成的 grub 菜单中就没有 manjaro 相关的启动菜单,想生成这些文件就用 pacman -S linux 安装默认内核.

grub-install --recheck /dev/sdb

update-grub

会有如下输出:

Generating grub configuration file ...
Found theme: /usr/share/grub/themes/manjaro/theme.txt
Found linux image: /boot/vmlinuz-5.5-x86_64
Found initrd image: /boot/intel-ucode.img /boot/initramfs-5.5-x86_64.img
Found linux image: /boot/vmlinuz-5.4-x86_64
Found initrd image: /boot/intel-ucode.img /boot/initramfs-5.4-x86_64.img
Found Windows 10 on /dev/sda1
done

最后重启系统即可.

但我刚开始使用此方法出现了 grub 菜单,但是只能在里面看到 win10 的信息,这是因为我的 linux 内核相关信息在 boot 分区里,而 boot 分区被我删了,执行上面的命令根本发现不了 manjaro.

所以我还要重新安装 manjaro 内核.

pacman -S linux以及pacman -Syu 这里安装的是默认内核,如需安装其他内核请在系统启动后通过图像界面安装新的内核.

执行上面的命令后就会自动生成 grub 菜单,其实就是把上面的所有操作都自动操作了一遍,这时再重启后就可以看到 grub 菜单中出现了 win10 和 manjaro 双系统.

到此问题解决.

Restore Grub

参考

manjaro 常见问题参考

manjaro 禁止生成 fallback.img

每次內核更新后都会在/boot/下生成类似initramfs-5.5-x86_64-fallback.img这样的文件会占用非常大的 boot 空间,有时候会导致双系统每次开机出现 unknow filesystem utfs 错误.

即使你将/boot/initramfs-5.5-x86_64-fallback.img这样的文件删除,但在你更新内核时它还是会自动生成.

为了永久的删除 fallback.img 文件,可以去/etc/mkinitcpio.d下面找到以当前内核为名称的文件,如linux55.preset

我现在的内核是 linux5.5,所以我需要编辑它并删除生成 fallback 文件的代码, 记得备份相关文件.

sudo vim /etc/mkinitcpio.d/linux55.preset

并注释掉如下两行代码:

fallback_image="/boot/initramfs-5.5-x86_64-fallback.img"
fallback_options="-S autodetect"

这里不用执行update-grub,这样就可以了.

参考链接

修改 grub 启动顺序

sudo vim /etc/default/grub

修改完成后执行sudo update-grub

Firmware Bug TSC_DEADLINE disabled due to Errata

更新内核后有时开机就会出现[Firmware Bug]: TSC_DEADLINE disabled due to Errata; please update microcode to version: 0x17 (or later),然后就进入了 rootfs.

通过sudo dmesg | grep microcode查看详细的报错信息如下:

[    0.000000] [Firmware Bug]: TSC_DEADLINE disabled due to Errata; please update microcode to version: 0x17 (or later)
[    0.000317] MDS: Vulnerable: Clear CPU buffers attempted, no microcode
[    0.888242] microcode: sig=0x40671, pf=0x20, revision=0x13
[    0.888375] microcode: Microcode Update Driver: v2.2.

解决办法:

sudo pacman -S intel-ucode

sudo grub-mkconfig -o /boot/grub/grub.cfg

执行完上面的操作后就会在/boot/下生成intel-ucode.img这个文件并且修改 grub.cfg 文件,我之前的/boot/里没有这个文件.

参考地址

Microcode wiki

延时挂载大容量分区

为了加快启动速度,可将一些大容量的分区在系统登录后进行挂载.

sudo vim /etc/fstab

添加:

UUID=<id.number> /home noauto,x-systemd.automount,ext4 defaults 0 1

修改 UUID 及分区文件类型.

延时挂载 wiki

Operation timed out after 10001 milliseconds...

执行sudo pacman -Syyu时报错错误:无法从 mirrors.ustc.edu.cn : Operation timed out after 10001 milliseconds with 0 out of 0 bytes received 获取文件 'extra.db'

解决办法:

1: 先执行sudo pacman-mirrors -g

2: 再执行sudo pacman -Syyu.

我这样执行后就没报错了.

但如果还报这样的错误,请尝试在/etc/pacman添加如下代码:

XferCommand = /usr/bin/wget --quiet --show-progress --passive-ftp -c -O %o %u
SigLevel    = Required DatabaseNever

参考连接

mount: /new_root: unknown filesystem type 'ntfs'

我安装了 manjaro 和 win10 双系统,每次从 win10 切换回来或者切换内核后启动系统都会报错如下图:

wwwechoxu

我的是 grub 菜单有问题,我重新通过 liveCD 生成 grub 菜单就好了.

当然你也可尝试如下方法:

1: 在/etc/fstab 中挂载 win10 分区

sudo pacman -S ntfs-3g

通过sudo fdisk -l查看 win10 分区的卷标,再挂载,我的 win10 分区卷标分别是/dev/sda1,/dev/sda3,/dev/sda4.

sudo mkdir -p /media/windows/{win10C,win10D,win10Save}

先通过mount -t ntfs-3g -o rw /dev/sda3 /media/windows/win10D测试下能否挂载:

如果可以就可以通过/etc/fstab挂载

sudo vim /etc/fstab

添加

UUID=win10的UUID /media/windows/win10D ntsf-3g defaults,noatime,discard 0 3

获取 UUID 可通过lsblk -f或者ls -l /dev/disk/by-uuid/.

其实最好是将 win 分区延时挂载:

sudo vim /etc/fstab

添加

UUID=win10的UUID /media/windows/win10D noauto,x-systemd.automount,ntsf-3g defaults 0 1

我刚开始使用的时候是有效果的可读写的,但是一段时间后发现变成只读了。发现原因是我装的是双系统,一个 Win10 一个是 Manjaro,需要进去 Win10,关闭快速启动,然后重启进入 Manjaro 发现挂载的 NTFS 又可以写了.

2: 将 win10 分区信息写入到 grub 菜单中

就是通过 liveCD 制作 grub 菜单时将 win10 的分区也挂载.

mount /dev/sdb2 /mnt
mount /dev/sdb3 /mnt/boot
mount -t ntfs-3g -o rw /dev/sda3 /media/windows/win10D
mount -t ntfs-3g -o ro /dev/sda1 /media/windows/win10C

cd /mnt
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
mount -t devpts pts /mnt/dev/pts/
chroot /mnt
sudo pacman -S mtools os-prober
grub-install /dev/sdb
update-grub

挂载win10分区时提示unclean file system

使用命令sudo mount -t ntfs-3g -o rw /dev/sda4 /media/windows/win10D 对ntfs分区进行挂载,

报错信息如下:

The disk contains an unclean file system (0, 0) Metadata kept in Windows cache, refused to mount. Falling back to read-only mount because the NTFS partition is in an unsafe state. Please resume and shutdown Windows fully (no hibernation or fast restarting.)

解决办法:

sudo ntfsfix /dev/sda4

sudo mount -t ntfs-3g -o rw /dev/sda4 /media/windows/win10D

wget 批量下载目录文件

wget http://downloads.openwrt.org/snapshots/packages/aarch64_cortex-a53/luci  -r -np -nd   -nc  -b  -P /opt/nginx/html/opkgPackages/luci -o luci.log

-P 表示下载到哪个目录
-r 表示递归下载
-np 不要追溯到父目录
-nd 递归下载时不创建一层一层的目录,把所有的文件下载到当前目录
-o 将log日志指定保存到文件(新建一个文件)
-A zip 只下载指定文件类型(zip)
-O test.zip 下载并以不同的文件名保存
-nc 不要覆盖存在的文件或使用.#前缀
-m, –mirror 等价于 -r -N -l inf -nr
上次更新:
贡献者: iEchoxu