archlinux 安装
系统安装
一、下载与制作 U 盘启动盘、启动到 Live 镜像
这一步的详细操作略过不写,因为下载很简单,制作也就是一个 rufus 小工具或者一个 DD 命令的事,启动项目选择与关闭安全启动相信很多人都会。如若不然,敬请谷歌。
官方镜像地址:
https://www.archlinux.org/download/
ArchBang Linux 镜像地址(一个在官方镜像基础上加了图形界面的镜像):
https://sourceforge.net/projects/archbang/files/sudo dd if=path/to/iso of=/dev/设备名
二、给Live环境联网
如果你使用无线网卡,那么首先输入以下命令搜索 WiFi:
# wifi-menu
# wpa_supplicant连接:
# vim /etc/wpa_supplicant/wpa_supplicant.conf
network={ 换行 ssid="wifi名称" 换行 psk="密码"}
# ifconfig 查看网卡名称
# wpa_supplicant -B -i 网卡名称 -c /etc/wpa_supplicant/wpa_supplicant.conf
# iwctl
# [iwd]# device list # 查看机器网卡
# [iwd]# station device scan # 扫描可用wifi
# [iwd]# station device get-networks # 显示扫描结果
# [iwd]# station device connect SSID # 连接网络
# dhcpcd 直接连接有线网络
# pacman -S rp-pppoe
# pppoe-setup 配置
# systemctl enable adsl
# ping www.baidu.com
如果你使用有线网络上网,那么你需要接好网线。
运行以下命令通过 DHCP 服务来获取 IP 地址:
# dhcpcd
运行这个命令来查看IP地址:
# ip addr
三、安装
3.1 确认系统启动方式
首先,输入以下命令检查分区状态(l ,不是大写的 I ):
# fdisk -l
如果你的硬盘(一般是 sda 或者 nvme0n1)存在一个 EFI 分区,且磁盘标签类型(Disklable type)为 GPT,那么说明该磁盘上的操作系统使用 EFI 来进行引导;如分区类型为 DOS 且没有 EFI 分区,那么说明该磁盘上的操作系统使用 BIOS 来进行引导。如果使用 UEFI 引导,那么你需要确认你的主板是否支持 UEFI 启动。可以使用以下命令来确认当前 Live 环境是否从 UEFI 启动:
# ls /sys/firmware/efi/efivars
如果上述文件夹存在且存在信息,那么你的主板就能支持 UEFI,且当前 Live 环境是从 UEFI 启动的。
3.2 对磁盘进行分区
Linux 系统对于分区的标识可以参考这篇文章,新型的 NVME 固态硬盘则以
nvme开头进行标识。。改动分区可以使用fdisk、Parted等工具来进行,也可以在 Windows 下使用 DiskGenius 、在图形化 Live 环境里面使用 Gnome 分区工具 、KDE 分区工具 等工具来完成分区。
完成分区之后需要把分区格式化。在 Linux 下,分区的格式化由 mkfs 开头的几个程序完成,Linux 操作系统的主分区可以使用 ext4、xfs、Btrfs、F2FS(仅适用于固态硬盘) 等格式一般来说,Linux 操作系统需要一个根分区即可使用。不过为了数据安全,你也可以考虑单独划分一个 Home 分区。UEFI 下启动系统还需要一个格外的 EFI 分区(ESP)。
# lsblk #查看磁盘
# cfdisk #分区推荐使用的命令
因为我想把根分区用f2fs格式,uefi启动,所以做一些特殊处理
首先需要五个分区第一个是efi启动需要的格式是fat32
其次boot分区要单独分
最后引导地方要做特殊处理以grub为例此步骤是对格式化进行的操作
# mkfs.fat -F32 /dev/sda1 # 大小64M--128M 64M足够
# mkfs.ext4 /dev/sda2 # 大小128M--512M 128M就已经够用了,如果硬盘富余可以256M,如果硬盘很大就用512M
# mkfs.f2fs /dev/sda3 # 格式化分区,300G /根分区
# mkswap /dev/sda4 # 原则内存的2倍,16G
# mkfs.f2fs /dev/sda5 # 格式化分区,/home
- 注:以上参数仅供参考,硬盘1TB固态,上面的交换分区,如果是固态硬盘,可不分区,跑在内存。
# pacman -S f2fs-tools #安装文件系统的支持
挂载
# mount /dev/sda3 /mnt
# mkdir /mnt/boot
# mount /dev/sda2 /mnt/boot
# mkdir /mnt/boot/efi
# mount /dev/sda1 /mnt/boot/efi
# mkdir /mnt/home
# mount /dev/sda5 /mnt/home
# swapon /dev/sda4 #使用交换分区
- 注:挂载的顺序,第一个挂载/目录,其它的挂boot分区,将efi挂载到boot后,不然根目录下进etc会麻烦。
3.3 准备软件源
我们需要修改软件源以选择最快的服务器,使用 nano 或者 vim 打开软件源配置文件:
- vim /etc/pacman.d/mirrorlist
在文件开头加上至少一个中国的软件源,不过建议多添加几个:
## China
Server = https://mirrors.cloud.tencent.com/archlinux/$repo/os/$arch
Server = http://mirrors.aliyun.com/archlinux/$repo/os/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.huaweicloud.com/archlinux/$repo/os/$arch
Server = https://mirror.pseudoform.org/$repo/os/$arch
Server = https://mirror.chaoticum.net/arch/$repo/os/$arch
Server = http://mirror.chaoticum.net/arch/$repo/os/$arch
Server = http://mirror.pseudoform.org/$repo/os/$arch
Server = rsync://mirror.chaoticum.net/arch/$repo/os/$arch
加入中文源,此部分先记录在这里,可在桌面环境下加入:
- vim /etc/pacman.conf
[archlinuxcn]
Include = /etc/pacman.d/archlinuxcn-mirrorlist
[antergos]
SigLevel = TrustAll
Server = http://mirrors.tuna.tsinghua.edu.cn/antergos/$repo/$arch
[arch4edu]
SigLevel = TrustAll
Server = http://mirrors.tuna.tsinghua.edu.cn/arch4edu/$arch
编辑中国源
# vim /etc/pacman.d/archlinuxcn-mirrorlist
内容如下:
#
# Arch Linux CN community repository mirrorlist
# Generated on 2020-07-03
#
Server = https://mirrors.163.com/archlinux-cn/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
Server = https://mirrors.lzu.edu.cn/archlinuxcn/$arch
Server = https://repo.archlinuxcn.org/$arch
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
Server = https://mirrors.163.com/archlinuxcn/$arch
Server = https://mirrors.cqu.edu.cn/archlinuxcn/$arch
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
Server = https://mirrors.zju.edu.cn/archlinuxcn/$arch
Server = https://mirrors.redrock.team/archlinuxcn/$arch
Server = https://repo.archlinuxcn.org/$arch
Server = https://mirrors.zju.edu.cn/archlinuxcn/$arch
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
Server = https://mirror.xtom.com.hk/archlinuxcn/$arch
Server = https://mirror.xtom.com/archlinuxcn/$arch
Server = https://mirrors.ocf.berkeley.edu/archlinuxcn/$arch
Server = https://mirrors.cqu.edu.cn/archlinuxcn/$arch
Server = https://mirrors.sjtug.sjtu.edu.cn/archlinux-cn/$arch
Server = https://mirrors.dgut.edu.cn/archlinuxcn/$arch
Server = https://mirrors.cloud.tencent.com/archlinuxcn/$arch
Server = https://mirrors.aliyun.com/archlinuxcn/$arch
- 编辑完源后,更新本地数据并安装中文key
# pacman -Syy
# pacman -S archlinuxcn-keyring
3.4 安装系统
开始安装基本包。其安装包下载速度取决于你的网络与软件源配置,等命令结束之后即可进行下一步:
# pacstrap /mnt base base-devel linux-lts linux-lts-headers linux-firmware f2fs-tools
##如果您的硬盘不是使用的f2fs文件系统无需安。
上面的
linux-lts使用长期支持版内核 ,也可以是linux,linux是默认的内核包,它会紧随 Linux 官方的最新版本。根据需要自行选择,我安装了长久支持包。
- 生成自动挂载分区的fstab文件(必须步骤),执行以下命令:
# genfstab -U /mnt > /mnt/etc/fstab
- 校验文件是否生成:
# cat /mnt/etc/fstab
其内容一般包含你设置的 Linux 系统的所有的分区,查看是否有问题。
然后,我们使用 arch-chroot 进入刚刚配置的新系统,以便进行一些初始化设置和基本软件的安装:
# arch-chroot /mnt
- 安装文件编辑器:
# pacman -S vim
- 设置时区并保存配置:
# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# hwclock --systohc ##生效所设置的时区
- root 密码
# passwd root
- 设置 locale
# vim /etc/locale.gen
#<!--取消下面这三个选项的注释-->
#zh_CN.UTF-8 UTF-8
#zh_TW.UTF-8 UTF-8
#en_US.UTF-8 UTF-8
#<--保存好,退出,然后运行-->
# locale-gen
- 编辑locale
# vim /etc/locale.conf
#<--本地系统的语言-->
LANG=en_US.UTF-8
LANG=zh_CN.UTF-8
- 编辑hostname
# vim /etc/hostname
#<--取一个喜欢的名即可-->
- 编辑hosts
# vim /etc/hosts
#<--输入如下内容,hostname替换你想要的名字-->
127.0.0.1 localhost
::1 localhost
127.0.1.1 hostname.localdomain hostname
- 安装 Intel-ucode(这个包是 Intel 平台需要,AMD 平台有自己的 ucode)
# pacman -S intel-ucode
3.5 安装启动管理器
- 安装基本程序:
# pacman -S grub efibootmgr os-prober dosfstools ## os-prober 是方便双系统用户
- 安装 Grub 启动管理器:
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ArchLinux
##<!-- 注意 = 两边不要有空格 要不然容易安装错误-->
# grub-mkconfig -o /boot/grub/grub.cfg
如果没有报错,那么引导安装完成。
确保f2fs根分区系统正常启动必不可少的一步
# blkid /dev/sda3 #获取设备的UUID
##手动编辑下面的文件
# vim /boot/grub/grub.cfg
##使用 root=UUID=*XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX* 替换 root=/dev/*sdXx*
3.6 安装其它基础软件包
# pacman -S openssh wget curl dialog wpa_supplicant ntfs-3g networkmanager dhclient openresolv dnsutils nautilus aria2 dhcpcd iwd net-tools mtools rofi dmenu alacritty atool exfat-utils
四、配置图形化环境
4.1安装驱动及X窗口系统
4.1.1确定显卡型号
# lspci | grep -E "VGA|3D"
4.1.2安装对应驱动
# pacman -S alsa-utils pulseaudio-alsa #声卡
# pacman -S xf86-video-vesa xf86-video-intel #英特尔集显 安装这个驱动 -amdgpu(amd集显)
# pacman -S nvidia nvidia-settings nvidia-dkms nvidia-utils #英伟达独显 安装这个驱动
# pacman -Ss xf86-video
# pacman -S xf86-video-vmware
# pacman -S xf86-input-synaptics #笔记本触摸板驱动
# pacman -S bluez-utils bluez #安装蓝牙管理的相关包
4.1.3安装X窗口系统
# pacman -S xorg xorg-server xorg-apps xorg-xinit
4.2安装桌面
4.2.1测试并启用网络
此处步骤是多余的,因为我们还没有重启,只是记录方便命令行连接网络
①测试网络#ping [www.baidu.com](http://www.baidu.com)
②网络连不上,查看ip:#ip a 查看是否打开网络# ip link
打开网络开关#ip link set esp2s0 up
- 有线:
# systemctl enable dhcpcd #开机启动dhcpcd
# systemctl start dhcpcd #启动dhcpcd
# systemctl stop dhcpcd #停止dbcpcd
# systemctl restart dhcpcd #重启dhcpcd
- 无线:
# systemctl enable wpa_supplicant #开机启动dhcpcd
# systemctl start wpa_supplicant.service
# systemctl stop wpa_supplicant.service
# systemctl restart wpa_supplicant.service
- 查询wifi列表:
nmcli dev wifi list
- 链接wifi:
nmcli device wifi connect "your wifi name" password "your wifi password"
4.2.2安装桌面基本环境
(dde和Gnome不兼容,xfce4、lxqt、lxde、kde、gnome、plasma),使用了deepin桌面,选择了①
1)deepin桌面 # pacman -S deepin deepin-extra file-roller
2)gnome桌面 # pacman -S gnome gnome-tweaks alacarte
3)plasma桌面 # pacman -S plasma kde-applications dolphin konsole
4)mate桌面 # pacman -S mate mate-extra
5)lxqt桌面 # pacman -S lxqt
6)cinnamon桌面 # pacman -S gamin cinnamon accountsservice gvfs
7)i3桌面 # pacman -S i3
4.2.3安装显示管理器
(sddm、lightdm、gdm、i3wm)
# pacman -S lightdm lightdm-deepin-greeter lightdm-gtk-greeter
修改lightdm 配置文件
# nano /etc/lightdm/lightdm.conf
①去掉#minimum-vt=7 # Settiing this is to value < 7 implies security issues ,see FS#46799前面的#。
②修改#greeter-session=example-gtk-gnome为greeter-session=lightdm-deepin-greeter。
4.2.4开启服务
# systemctl enable lightdm NetworkManager bluetooth
# systemctl start bluetooth #启动蓝牙
##<!--lightdm #deepin桌面开机启动 -->
##<!--NetworkManager #图形桌面网络管理器 -->
##<!--bluetooth #开机启动蓝牙 -->
如果你使用虚拟机,难么可能还需要 haveged 这个软件包以提供系统加密所需的随机数。安装之后开启服务:
# pacman -S haveged
# systemctl enable haveged
4.2.5添加用户并分配权限
使用以下命令来创建一个名为 username 的用户(请自行替换 username 为你的用户名)
# useradd -m -G wheel username
- 给新用户设置密码:
# passwd username
- 更改 sudo 设置
# pacman -S sudo
# vim /etc/sudoers
#<!--在root ALL=(ALL) ALL行下添加:-->
username ALL=(ALL) ALL
4.2.6安装字体与输入法
# pacman -S wqy-zenhei wqy-bitmapfont wqy-microhei adobe-source-code-pro-fonts adobe-source-han-serif-cn-fonts adobe-source-han-sans-cn-fonts noto-fonts noto-fonts-extra noto-fonts-emoji noto-fonts-cjk ttf-dejavu wqy-microhei wqy-microhei-lite wqy-bitmapfont ttf-arphic-ukai ttf-arphic-uming noto-fonts-cjk ttf-font-awesome nerd-fonts-complete ttf-nerd-fonts-symbols
4.2.6.1Fcitx 输入框架:
#<!--fcitx4安装-->
# pacman -S fcitx-libpinyin fcitx-im fcitx-configtool
#<!--fcitx5安装-->
# pacman -S fcitx5-git fcitx5-chinese-addons-git fcitx5-gtk-git fcitx5-qt4-git fcitx5-qt5-git fcitx5-configtool-git
如果想修改全局设置就改动
/etc/environment,如果想更改单个用户的设置就新建或者修改~/.pam_environment文件,然后在开头添加以下内容:
# vim /etc/etc/environment
#<!--fcitx4配置-->
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
#<!--fcitx5配置-->
GTK_IM_MODULE=fcitx5
QT4_IM_MODULE=fcitx5
QT5_IM_MODULE=fcitx5
XMODIFIERS=@im=fcitx5
#注:如果上一行配置后开机不能启动fcitx5将这一行写到/etc/profile
fcitx5 &
4.2.6.2 Ibus输入框架
# pacman -S ibus ibus-googlepinyin ibus-rime ibus-table ibus-table-chinese
# vim /etc/etc/profile
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
ibus-daemon -d -x
保存后,重启
4.2.7字体及grub美化
4.2.7.1字体美化
图形界面下操作,代码量太大直接复制粘贴就可以了
$ sudo vim /etc/fonts/conf.avail/64-language-selector-prefer.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>sans-serif</family>
<prefer>
<family>Noto Sans</family>
<family>Noto Sans CJK SC</family>
<family>Noto Sans CJK HK</family>
<family>Noto Sans CJK TW</family>
<family>Noto Sans CJK JP</family>
<family>Noto Sans CJK KR</family>
<family>Noto Sans Adlam</family>
<family>Noto Sans Adlam Unjoined</family>
<family>Noto Sans Anatolian Hieroglyphs</family>
<family>Noto Sans Armenian</family>
<family>Noto Sans Avestan</family>
<family>Noto Sans Balinese</family>
<family>Noto Sans Bamum</family>
<family>Noto Sans Batak</family>
<family>Noto Sans Bengali</family>
<family>Noto Sans Brahmi</family>
<family>Noto Sans Buginese</family>
<family>Noto Sans Buhid</family>
<family>Noto Sans Canadian Aboriginal</family>
<family>Noto Sans Carian</family>
<family>Noto Sans Chakma</family>
<family>Noto Sans Cham</family>
<family>Noto Sans Cherokee</family>
<family>Noto Sans Coptic</family>
<family>Noto Sans Cuneiform</family>
<family>Noto Sans Cypriot</family>
<family>Noto Sans Deseret</family>
<family>Noto Sans Devanagari</family>
<family>Noto Sans Egyptian Hieroglyphs</family>
<family>Noto Sans Ethiopic</family>
<family>Noto Sans Georgian</family>
<family>Noto Sans Glagolitic</family>
<family>Noto Sans Gothic</family>
<family>Noto Sans Gujarati</family>
<family>Noto Sans Gurmukhi</family>
<family>Noto Sans Hanunoo</family>
<family>Noto Sans Hebrew</family>
<family>Noto Sans Imperial Aramaic</family>
<family>Noto Sans Inscriptional Pahlavi</family>
<family>Noto Sans Inscriptional Parthian</family>
<family>Noto Sans Javanese</family>
<family>Noto Sans Kaithi</family>
<family>Noto Sans Kannada</family>
<family>Noto Sans Kayah Li</family>
<family>Noto Sans Kharoshthi</family>
<family>Noto Sans Khmer</family>
<family>Noto Sans Lao</family>
<family>Noto Sans Lepcha</family>
<family>Noto Sans Limbu</family>
<family>Noto Sans Linear B</family>
<family>Noto Sans Lisu</family>
<family>Noto Sans Lycian</family>
<family>Noto Sans Lydian</family>
<family>Noto Sans Malayalam</family>
<family>Noto Sans Mandaic</family>
<family>Noto Sans Meetei Mayek</family>
<family>Noto Sans Mongolian</family>
<family>Noto Sans Myanmar</family>
<family>Noto Sans Nabataean</family>
<family>Noto Sans New Tai Lue</family>
<family>Noto Sans NKo</family>
<family>Noto Sans Ogham</family>
<family>Noto Sans Ol Chiki</family>
<family>Noto Sans Old Italic</family>
<family>Noto Sans Old North Arabian</family>
<family>Noto Sans Old Persian</family>
<family>Noto Sans Old South Arabian</family>
<family>Noto Sans Old Turkic</family>
<family>Noto Sans Oriya</family>
<family>Noto Sans Osage</family>
<family>Noto Sans Osmanya</family>
<family>Noto Sans Phags Pa</family>
<family>Noto Sans Phoenician</family>
<family>Noto Sans Rejang</family>
<family>Noto Sans Runic</family>
<family>Noto Sans Samaritan</family>
<family>Noto Sans Saurashtra</family>
<family>Noto Sans Shavian</family>
<family>Noto Sans Sinhala</family>
<family>Noto Sans Sundanese</family>
<family>Noto Sans Syloti Nagri</family>
<family>Noto Sans Symbols</family>
<family>Noto Sans Syriac Eastern</family>
<family>Noto Sans Syriac Estrangela</family>
<family>Noto Sans Syriac Western</family>
<family>Noto Sans Tagalog</family>
<family>Noto Sans Tagbanwa</family>
<family>Noto Sans Tai Le</family>
<family>Noto Sans Tai Tham</family>
<family>Noto Sans Tai Viet</family>
<family>Noto Sans Tamil</family>
<family>Noto Sans Telugu</family>
<family>Noto Sans Thaana</family>
<family>Noto Sans Thai</family>
<family>Noto Sans Tibetan</family>
<family>Noto Sans Tifinagh</family>
<family>Noto Sans Ugaritic</family>
<family>Noto Sans Vai</family>
<family>Noto Sans Yi</family>
<family>Noto Color Emoji</family>
<family>EmojiOne</family>
</prefer>
</alias>
<!--Sans fonts configuration finished-->
<alias>
<family>serif</family>
<prefer>
<family>Noto Serif</family>
<family>Noto Serif CJK SC</family>
<family>Noto Serif CJK TW</family>
<family>Noto Serif CJK JP</family>
<family>Noto Serif CJK KR</family>
<family>Noto Serif Ahom</family>
<family>Noto Serif Armenian</family>
<family>Noto Serif Bengali</family>
<family>Noto Serif Devanagari</family>
<family>Noto Serif Georgian</family>
<family>Noto Serif Gujarati</family>
<family>Noto Serif Kannada</family>
<family>Noto Serif Khmer</family>
<family>Noto Serif Lao</family>
<family>Noto Serif Malayalam</family>
<family>Noto Serif Tamil</family>
<family>Noto Serif Telugu</family>
<family>Noto Serif Thai</family>
<family>Noto Color Emoji</family>
<family>EmojiOne</family>
</prefer>
</alias>
<!--Serif fonts configuration finished-->
<alias>
<family>monospace</family>
<prefer>
<family>Noto Sans Mono</family>
<family>Noto Sans Mono CJK SC</family>
<family>Noto Sans Mono CJK HK</family>
<family>Noto Sans Mono CJK TW</family>
<family>Noto Sans Mono CJK JP</family>
<family>Noto Sans Mono CJK KR</family>
<family>Noto Color Emoji</family>
<family>EmojiOne</family>
</prefer>
</alias>
<!--MonoSpace fonts configuration finished-->
</fontconfig>
保存文件。若
/etc/fonts目录下有conf.d目录,则在该目录中创建指向/etc/fonts/conf.avail/64-language-selector-prefer.conf的同名软链接:
$ sudo ln -s /etc/fonts/conf.avail/64-language-selector-prefer.conf /etc/fonts/conf.d/64-language-selector-prefer.conf
- 刷新字体缓存:
# fc-cache --force --verbose
4.2.7.2 grub美化
$ sudo mkdir -p /boot/grub/themes
- 解压下载的主题:
$ sudo tar -xf 主题包名
- 移动主题包到themes路径下:
$ sudo cp -r 主题包名 /boot/grub/themes/
- 修改配置文件:
$ sudo gedit /etc/grub.d/00_header
- 在注释下添加:
GRUB_THEME="/boot/grub/themes/主题包名/theme.txt" ##arch-leap
GRUB_GFXMODE="1920x1080x32" ##这根据分辨率和主题提供的设置
- 也可以安装archlinux提供的主题包:
$ sudo pacman -S grub2-theme-arch-leap
$ sudo pacman -Ss grub2-theme-*
通过-Ss来查找主题包,这里还没进行终端补全来操作,如果补全就TAB
- 更新配置文件:
# update-grub
- 如果找不到命令,就用grub自带的
# grub-mkconfig -o /boot/grub/grub.cfg
重启看看是不是很爽。
小技巧:
另:/home 目录如果没有我们常见的几个文件夹,如果需要,那么打开终端,输入以下命令以生成在 home 目录的几个默认文件夹:
$ sudo pacman -S xdg-user-dirs
$ xdg-user-dirs-update --force
编辑
/etc/pacman.conf,去掉color那一项目的注释。这样,pacman 就会以彩色输出结果,以免某些时候眼花缭乱。
4.2.8 终端优化
$ sudo pacman -S zsh oh-my-zsh-git zsh-autosuggestions screenfetch alsi neofetch ranger figlet zsh-syntax-highlighting
$ sudo cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
$ sudo ln -sf /usr/share/zsh/plugins/zsh-autosuggestions /usr/share/oh-my-zsh/plugins/
- 编辑zshrc:
$ vim ~/.zshrc
screenfetch #加入前面,显示系统信息,装逼使用
alsi #同样的效果,这个是专用,上面的是通用
neofetch #第三个效果,带色彩
figlet #后面输入什么终端里显示内容,像标题
ranger #终端资源管理器
ZSH_THEME="agnoster" #设置主题,agnoster主题名
- 切换zsh
# chsh -s /bin/zsh
- 也可以通过修改/etc/passwd,修改终端
# vim /etc/passwd
root:x:0:0::/root:/usr/bin/zsh #把bash改成zsh,包括用户的
现在打开你的终端看看效果吧,惊艳
4.2.9大黄蜂方案
$ sudo pacman -S optimus-manager-qt #图形显卡管理器
大黄蜂(Bumblebee)独立显卡方案(适用于笔记本)
如果你使用只有集显的笔记本可以跳过这段。如果你使用 Intel + NVIDIA 显卡的笔记本电脑,那么你需要这个方案。因为你如果不这么做则可能会导致一系列问题,这些问题包括但是不限于注销之后无法登录、无法关机或者开关电脑缓慢等问题。
安装:
$ sudo pacman -S bumblebee xf86-video-nouveau
安装大黄蜂之后独显就会被设置成用户手动启用的状态,也能解决开关机缓慢的问题。不过,为了更好的性能,你可以使用闭源的官方驱动(安装闭源驱动前如果安装了开源驱动,那么你需要事先将其卸载)
$ sudo pacman -S bumblebee mesa nvidia nvidia-settings
必须要注意,nvidia 这个包包含的仅仅是较新版本显卡的驱动。如果你的设备比较陈旧,请参考NVIDIA驱动来安装对应版本的驱动。同时,如果你启用了32位库,你还需要安装32位的包
不管使用了哪个版本的驱动,安装完成之后都需要把当前用户添加到大黄蜂的用户组里面:
$ sudo gpasswd -a username bumblebee
- 开启大黄蜂的后台服务:
$ sudo systemctl enable bumblebeed
在大黄蜂(Bumblebee)独立显卡方案下,你可以根据需要手动让一些高显卡需求的应用(比如视频渲染,游戏等)指定使用独立显卡的 GPU 来运行,具体的可以参见官方文库。 比如,使用这个命令来打开 NVIDIA 设置(仅限于官方驱动)(仅能在桌面环境下使用):
# optirun -b none nvidia-settings -c :8
如果需要测试下手动调用独显处理内容,那么可以使用以下命令(仅能在桌面环境下使用):
$ sudo pacman -S mesa-demos
$ sudo optirun glxgears -info
五、软件安装(可选步骤)
AUR:
$ sudo pacman -S yay yaourt pikaur python-pip pamac #pamac图形前端
百度网盘
$ sudo pacman -S baidunetdisk
#<!--FTP连接软件-->
$ sudo pacman -S filezilla
邮件客户端:
$ sudo pacman -S thunderbird thunderbird-i18n-zh-cn
其他安装:
$ sudo pacman -S neovim ccls yarn python-neovim xclip xsel wl-clipboard bear npm autojump ctags cmake nccl llpp dunst lxappearance network-manager-applet copyq bat fzf exa gdb lldb llvm
压缩解压:
$ sudo pacman -S unzip zip gzip compress lha unace unrar cpio lzop file-roller xarchiver
图形文件管理器
$ sudo pacman -S nemo nemo-python nemo-fileroller nemo-preview cinnamon-translations
设置图形管理器右键终端打开
$ gsettings set org.cinnamon.desktop.default-applications.terminal exec alacritty
桌面美化:
$ sudo pacman -S arc-gtk-theme arc-solid-gtk-theme gtk-theme-arc-git numix-circle-icon-theme papirus-icon-theme materia-gtk-theme deepin-icon-theme
录屏软件:
$ sudo pacman -S simplescreenrecorder
$ sudo pacman -S asciinema
$ asciinema rec rec.json
#<!--一旦运行命令,就可以立即开始录制。 您终端上的所有打字活动都会被记录下来。 完成后,只需按Ctrl-D即可停止录制;录制的信息保存到rec.json文件-->
$ asciinema play rec.json
键盘捕捉
$ sudo pacman -S screenkey
ag搜索安装
$ sudo pacman -S the_silver_searcher fd ripgrep
终端:
$ sudo pacman -S tilix xterm alacritty
vim扩展
$ sudo pacman -S vim-airline vim-airline-themes vim-ale vim-align vim-bufexplorer vim-colorsamplerpack vim-csound vim-ctrlp vim-doxygentoolkit vim-easymotion vim-fcitx vim-fugitive vim-gitgutter vim-grammalecte vim-guicolorscheme vim-indent-object vim-jad vim-jedi vim-jellybeans vim-latexsuite vim-lily-debug vim-minibufexpl vim-molokai vim-nerdcommenter vim-nerdtree vim-omnicppcomplete vim-pastie vim-plug vim-project vim-runtime vim-rust-git vim-seti vim-supertab vim-surround vim-tabular vim-tagbar vim-taglist vim-tern vim-ultisnips vim-vcscommand vim-vital vim-workspace vim-youcompleteme-git
浏览器:
$ sudo pacman -S firefox firefox-i18n-zh-cn flashplugin google-chrome chromium
$ yay -S freedownloadmanager
办公软件:
$ sudo pacman -S wps-office-cn ttf-wps-fonts wps-office-mime-cn wps-office-mui-zh-cn libreoffice-fresh-zh-cn gcalctool
#<!--德国出的一款,最接近MS-office-->
$ yay -S softmaker-office-2018-bin
项目管理
$ yay -S ganttproject projectlibre
播放器:
$ sudo pacman -S netease-cloud-music cmus vlc mpv mpd ncmpcpp
#<!--音频编辑软件-->
$ sudo pacman -S audacity
cmus终端播放器
:add /home/your_username/Music #导入本地音乐
选中,使用 Enter 播放,z上 一首,b 下一首,c 暂停,x 播放,v 停止
Ctrl + R 切换单曲循环
Ctrl + I 切换左右菜单
H J K L 快退 上 下 快进
播放模式切换
s 随机播放
f 顺序播放
r 循环播放
音量调节
- +
图形处理:
#<!--openshot视频编辑 blender3D及后期合成制作 lightworks视频合成S-->
$ sudo pacman -S gimp gimp-help-zh_cn openshot blender lightworks krita
#<!--图片浏览、思维导图-->
$ sudo pacman -S gthumb freemind
#<!--流程图-->
$ yay --noconfirm drawio-desktop-bin
#<!--视频编辑-->
$ sudo pacman -S flowblade
笔记软件:
$ sudo pacman -S typora
$ sudo pacman -S texlive-bin texlive-core texlive-langchinese texlive-bibtexextra texlive-fontsextra texlive-formatsextra texlive-games texlive-humanities texlive-latexextra texlive-music texlive-pictures texlive-pstricks texlive-publishers texlive-science
通讯工具:
$ sudo pacman -S qq-linux #QQ
$ sudo pacman -S electronic-wechat #社区微信
$ ya --noconfirm dingtalk-linux #钉钉
chm查看:
# sudo pacman -S kchmviewer
电子书
$ sudo pacman -S calibre
连接手机:
$ sudo pacman -S libmtp mtpfs #终端连接手机
$ sudo pacman -S gvfs-mtp #gnome连接手机
$ sudo pacman -S kio-extras #kde连接手机
$ sudo pacman -S android-file-transfer #通用连接手机
#<!--手机投屏,手机打开开发模式-->
$ sudo pacman -S scrcpy
中文man
$ sudo pacman -S man-pages-zh_cn man-pages-zh_tw
CPU调频
$ sudo pacman -S cpupower
# systemctl enable cpupower.service
开发环境
java环境
$ sudo pacman -S jdk
golang环境
$ go语言开发环境
$ go get -u golang.org/x/tools/...
$ go get -v github.com/mdempsky/gocode
$ go get -v github.com/ramya-rao-a/go-outline
$ go get -v github.com/acroca/go-symbols
$ go get -v github.com/uudashr/gopkgs
$ go get -u github.com/uudashr/gopkgs/cmd/gopkgs
$ go get -v golang.org/x/tools/cmd/guru
$ go get -v golang.org/x/tools/cmd/gorename
$ go get -v github.com/sqs/goreturns
$ go get -v github.com/rogpeppe/godef
$ go get -v golang.org/x/tools/cmd/godoc
$ go get -v golang.org/x/lint/golint
$ go get -v github.com/go-delve/delve/cmd/dlv
$ go get -v github.com/fatih/gomodifytags
$ go get -u github.com/haya14busa/goplay/cmd/goplay
$ go get -v github.com/josharian/impl
$ go get -v github.com/tylerb/gotype-live
$ go get -u github.com/cweill/gotests/...
$ go get -v github.com/sourcegraph/go-langserver
$ go get -u github.com/davidrjenni/reftools/cmd/fillstruct
$ go get -v github.com/golang/tools/cmd/gopls
$ go get -u github.com/Go-zh/tour
各种语言的离线帮助文档
$ yay -noconfirm zeal-git
开发工具:
$ sudo pacman -S codeblocks visual-studio-code-bin qt5 qt5-tools qtcreator pycharm-community-edition
数据库:
$ sudo pacman -S mariadb mariadb-clients dbeaver
$ yay -S mssql-server mssql-tools
a. mysql安装后配制
- MariaDb的数据目录
$ sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
- 启动MariaDb
$ sudo systemctl start mysqld
- 为root用户设置一个新密码
$ sudo mysqladmin -u root password '12345678'
启动dbeaver创建连接,连接mysql,下载jdbc驱动,连接成功。
b. MSSQL Server配制
$ sudo /opt/mssql/bin/mssql-conf setup
按提示配制版本,sa设置密码等操作。
使用以下命令检查 SQL Server 服务的状态:
$ sudo systemctl status mssql-server
可根据需要使用以下命令停止、启动或重启 SQL Server 服务:
$ sudo systemctl stop mssql-server
$ sudo systemctl start mssql-server
$ sudo systemctl restart mssql-server
启动dbeaver创建连接,连接MSSQL Server,下载jdbc驱动,连接成功。
oracle安装失败,暂未找到解决办法,找到方法了再补充。
OCR软件
$ yay --noconfirm tesseract tesseract-data-chi_sim tesseract-data-eng
#<!--通过命令行你就可以完成简单的图片文字识别任务-->
$ tesseract test.png outfile -l chi_sim
#<!--Tesseract安装完成后可以很方便的被Python调用,你需要安装两个包-->
$ pip install pillow
$ pip install pytesseract
#<--一个简单的图片转文字的函数实现如下-->
from PIL import Image
import pytesseract
class Languages:
CHS = 'chi_sim'
CHT = 'chi_tra'
ENG = 'eng'
def img_to_str(image_path, lang=Languages.ENG):
return pytesseract.image_to_string(Image.open(image_path), lang)
print(img_to_str('image/test1.png', lang=Languages.CHS))
print(img_to_str('image/test2.png', lang=Languages.CHS))
图片操作
#<!--安装了 ImageMagick,ImageMagick 是一系列的用于修改、加工图像的命令行工具-->
#<!--图片格式转换-->
$ convert imgyd064_R1_9_t_1.jpg imgyd064_R1_9_t_1.png
$ convert -density 300 -quality 100 *.pdf *.jpg
#<!--缩放图片-->
$ convert imgyd064_R1_9_t_1.jpg -resize 200x100 imgyd064_R1_9_t_1_resize.jpg
#<!--旋转图像-->
convert imgyd064_R1_9_t_1.jpg -rotate 90 imgyd064_R1_9_t_1_rotate.jpg
#<!--限制转换的话-->
$ sudo vim /etc/ImageMagick-7/policy.xml
#<!--修改内容如下-->
<policy domain="coder" rights="read | write" pattern="gs" />
<policy domain="coder" rights="read | write" pattern="PDF" />
六、问题解决
wifi连接必须要重启
在终端输入如下命令,然后再次待机或者重启,当此后待机后启动时Wifi会自动连接,不再出现如上情况。
$ yay -S iwlwifi-7265-ucode #我的网卡是Intel Corporation Wireless 7265
$ sudo modprobe -r iwlwifi
$ sudo modprobe iwlwifi
打开、关闭、重启网络。执行命令可以开启飞行模式,关闭所有网络。
# nmcli n off
- 执行如下命令可以重新开启网络。
# nmcli n on
- pacman安装的软件默认下载路径
/var/cache/pacman/pkg
github访问失败问题解决
# vim /etc/hosts
#github
199.232.69.194 github.global.ssl.fastly.net
140.82.113.3 github.com
140.82.114.4 www.github.com
13.250.177.223 github.com
Arch 安装 deb
- 安装 debtap
yay --noconfirm debtap
也应该安装bash, binutils ,pkgfile 和 fakeroot 依赖包。
创建/更新 pkgfile 和 debtap 数据库。
$ sudo debtap -u
- 转换deb包
debtap ***.deb
- 安装
$ sudo pacman -U <package-name>
禁用触摸板
$ sudo pacman -S xf86-input-evdev
$ sudo pacman -Qs xf86-input-evdev
local/xf86-input-evdev 2.10.2-1 (xorg-drivers)
X.org evdev input driver
[xiaomo@ArchLinux ~]$ xinput list #查看TouchPad的ID号
# 触摸板,执行xinput disable XX则会禁止,xinput enable XX则启用触摸板 XX为上面查到的触摸板ID号
[xiaomo@ArchLinux ~]$ xinput disable 18
选择快的源
工具:Reflector
Reflector能从官方镜像列表获取最近更新的镜像,包括最新建立的镜像,即使这个镜像在 /etc/pacman.d/mirrorlist 里没有。也就是说,该工具是不受 mirrorlist 文件限制。此外,它还能获取刚刚与主服务器同步的镜像列表,并按照速度排序。
先备份 /etc/pacman.d/mirrorlist
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
下面命令将过滤官方镜像列表中的前 5 个镜像,按速度排列并覆盖 /etc/pacman.d/mirrorlist
reflector -l 5 --sort rate --save /etc/pacman.d/mirrorlist
下面这个命令会从官方镜像列表中获取200个最近同步过的源,并对这200个源进行大文件下载来,根据在你电脑里的下载速度进行排序,写入mirrorlist(强烈推荐)
reflector --verbose -l 200 -p http --sort rate --save /etc/pacman.d/mirrorlist
与上面的那条命令一样,不过只测美国的源
reflector --verbose --country 'United States' -l 200 -p http --sort rate --save /etc/pacman.d/mirrorlist
同样地。它没有 man 手册,需要查看详细信息,请使用 --help
#linux调试工具
sudo strace -e openat pacman -Syu --noconfirm 2>&1
> 上面这句用来调试系统被什么程序锁定
strace命令用法详解:
strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。
strace常用参数:
-p 跟踪指定的进程
-f 跟踪由fork子进程系统调用
-F 尝试跟踪vfork子进程系统调吸入,与-f同时出现时, vfork不被跟踪
-o filename 默认strace将结果输出到stdout。通过-o可以将输出写入到filename文件中
-ff 常与-o选项一起使用,不同进程(子进程)产生的系统调用输出到filename.PID文件
-r 打印每一个系统调用的相对时间
-t 在输出中的每一行前加上时间信息。 -tt 时间确定到微秒级。还可以使用-ttt打印相对时间
-v 输出所有系统调用。默认情况下,一些频繁调用的系统调用不会输出
-s 指定每一行输出字符串的长度,默认是32。文件名一直全部输出
-c 统计每种系统调用所执行的时间,调用次数,出错次数。
-e expr 输出过滤器,通过表达式,可以过滤出掉你不想要输出
命令实例:
[root@tomcat02 ~]# strace cat /dev/null
execve("/bin/cat", ["cat", "/dev/null"], [/* 26 vars */]) = 0
brk(0) = 0x24ef000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b8443faf000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=70314, ...}) = 0
mmap(NULL, 70314, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2b8443fb0000
close(3) = 0
open("/lib64/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\355A\2428\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1979000, ...}) = 0
mmap(0x38a2400000, 3803304, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x38a2400000
mprotect(0x38a2597000, 2097152, PROT_NONE) = 0
mmap(0x38a2797000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x197000) = 0x38a2797000
mmap(0x38a279c000, 18600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x38a279c000
close(3) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b8443fc2000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b8443fc3000
arch_prctl(ARCH_SET_FS, 0x2b8443fc2b20) = 0
mprotect(0x38a2797000, 16384, PROT_READ) = 0
mprotect(0x38a1e1f000, 4096, PROT_READ) = 0
munmap(0x2b8443fb0000, 70314) = 0
brk(0) = 0x24ef000
brk(0x2510000) = 0x2510000
open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=99158704, ...}) = 0
mmap(NULL, 99158704, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2b8443fc4000
close(3) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
open("/dev/null", O_RDONLY) = 3
fstat(3, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0
read(3, "", 32768) = 0
close(3) = 0
close(1) = 0
close(2) = 0
exit_group(0) = ?
每一行都是一条系统调用,等号左边是系统调用的函数名及其参数,右边是该调用的返回值。
strace 显示这些调用的参数并返回符号形式的值。strace 从内核接收信息,而且不需要以任何特殊的方式来构建内核。
通用的完整用法:
strace -o output.txt -T -tt -e trace=all -p 28979
上面的含义是 跟踪28979进程的所有系统调用(-e trace=all),并统计系统调用的花费时间,以及开始时间(并以可视化的时分秒格式显示),最后将记录结果存在output.txt文件里面。
2.在umount挂载目录时,直接卡住了,最后用 strace df -Th分析后结果挂载出问题了
strace df -Th
3.用strace跟踪 whoami的输出:
strace -o whoami-strace.txt whoami
浙公网安备 33010602011771号