Arch 使用备忘
安装
普通安装在VMware上
直接用VMware打开从镜像站下载的最新版arch iso。选择其他linux 5.0以上版本
,可以调大一点内存和硬盘,在高级设置里改用UEFI启动。进去之后引导界面直接选第一个就行。
ls /sys/firmware/efi/efivars # 验证是否用UEFI启动。BIOS情况下不存在此目录
ping baidu.com # 检查是否联网,VMware一般会自己帮你弄好
# 校准时间,NTP service显示active就行(虽然感觉没啥用,我显示的时间是标准北京时间,但是时区显示的是UTC+0000)
timedatectl set-ntp true && timedatectl status
硬盘分区,使用lvm2
fdisk -l # 检查磁盘
fdisk </dev/sda> # 对磁盘进行分区,<>中的内容可替换
> g # 创建GPT分区表
> n # 创建新分区,根据指导操作,创建1G大的EFI分区
> n # 创建剩下全部大小的主要分区
> t # 1分区改成1号EFI system
> t # 2分区改成43号Linux LVM
> w # 保存退出
pvcreate /dev/sda2 && pvdisplay # 创建物理卷
vgcreate vg1 /dev/sda2 && vgdisplay # 创建卷组
lvcreate vg1 -l +100%FREE -n <root> # 创建root分区 因为内存足够,不使用交换分区
fdisk -l # 查看是否存在刚创建的逻辑分区
mkfs.fat -F 32 /dev/sda1 # 格式化efi分区为fat32文件系统
mkfs.ext4 /dev/mapper/vg1-root # 格式化root分区为ext4文件系统
mount /dev/mapper/vg1-root /mnt # 挂载root硬盘分区到/mnt载点上。这样访问/mnt的时候实际是在访问那块硬盘空间
mkdir /mnt/boot # 创建引导目录
mount /dev/sda1 /mnt/boot # 挂载efi分区至引导目录
# 我的/mnt下有个lost+found文件夹,不知道这是否合理,先不管
编辑/etc/pacman.d/mirrorlist
,最顶端加入清华源Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
pacman -Syy # 更新源软件包缓存
安装
pacstrap /mnt base linux-zen linux-firmware lvm2 vim iwd # 往/mnt里安装新系统,使用zen内核
genfstab -U /mnt >> /mnt/etc/fstab && cat /mnt/etc/fstab # 生成分区表
arch-chroot /mnt # 换根
# 先不设置时区
设置地区
编辑/etc/locale.gen
,取消其中en_US,en_GB,ja_JP,zh_CN
(全选UTF-8?存疑)的注释,执行locale-gen
创建/etc/locale.conf
,写入LANG=en_GB.UTF-8
网络配置
创建/etc/systemd/network/<dhcp>.network
(名字随便取),并写入
[Match]
Name=<ens33> # 你网络适配器的名字
[Network]
DHCP=yes
并启用systemd-networkd
和systemd-resolved
两个服务
编辑/etc/mkinitcpio.conf
,在HOOKS
一行中,如果含有udev
,则在block
与filesystems
之间添加lvm2
,保存退出
mkinitcpio -P # 让刚才加的lvm2生效 (不懂)
passwd # 设置root用户密码
pacman -S grub efibootmgr # 安装引导程序
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg # 这两行不懂
# 微码就是纯纯逆天东西,我装一次炸一次,再也不装了
exit # 退出换根
umount -R /mnt # 卸载分区
reboot # 重启
一个大差不差的archvm就装完了,之后根据需求随便搞下桌面环境,别的工具等等。
命令
pacman
-S <string>
安装/更新-y
同步仓库-yy
强制-u
更新-i
查询详细信息-s
字符串搜索
-Q <string>
查询(已安装)-i
查询详细信息-s
字符串搜索
-R <string>
移除-s
移除依赖-n
移除配置文件
tar
-z
文件格式gz-x
解压-v
列出文件名-f <string>
指定操作文件名
curl
-S
显示错误信息-L
跟随重定向-O
输出为原文件名-o <string>
指定输出文件名
其他
which <string>
在PATH中查找并返回第一个whereis <string>
查找二进制文件ps -ef | grep <string>
列出含有string的所有进程kill <pid>
杀死pid进程
使用
在/etc/profile
后添加
alias ls='ls --color'
bash
在/etc/bash.bashrc
后添加
PS1='\[\e[0;33;40m\][\t \u@\h] \w\n\$ \[\e[0m\]' # 黄字
PS1='\[\e[0;30;46m\][\t \u@\h] \w\[\e[0m\]\n\[\e[0;30;46m\]\$\[\e[0m\] ' # 蓝底黑字
zsh
pacman -S zsh
安装chsh -s /usr/bin/zsh
更改默认sh- 在
~/.zshrc
或者/etc/zsh/zprofile
后添加
#user setting
autoload -U promptinit
promptinit
prompt fire
ssh
pacman -S openssh
安装- 修改
/etc/ssh/sshd_config
中的部分设置Port 9922 ListenAddress 0.0.0.0 ListenAddress :: PermitRootLogin yes PasswordAuthentication yes
- 启动服务
systemctl start sshd
- 测试
sshd -t
无输出则成功
桌面环境
使用xfce4
pacman -S xorg xfce4
startxfce4
快速运行单个代码
/usr/local/bin/run
#!/bin/bash
#
# cannot use when not in that dir!
#
if [ -n "$1" ] ; then
# code
file_name="$1"
t=${file_name##*.}
s=${file_name%.*}
e=0
ee=0
if [ $t = "cpp" ] ; then
eval "g++ $1 -o $s -Wall"
e=$?
elif [ $t = "c" ] ; then
eval "gcc $1 -o $s -Wall"
e=$?
elif [ $t = "py" ] ; then
eval "python $1"
ee=1
fi
if [[ $e -eq 0 ]]; then
if [[ $ee -eq 0 ]] ; then
shift
eval "./$s $*"
fi
fi
fi
vim配置
/etc/vim/vimrc
/ /etc/vimrc
(arch)
set number
set shiftwidth=4
set softtabstop=4
set tabstop=4
set autoindent
set smartindent
set smarttab
set showmode
set showcmd
set showmatch
set encoding=utf-8
set textwidth=80
set wrap
set linebreak
set scrolloff=5
set laststatus=2
set ruler
set expandtab
set noeb
syntax on
filetype indent on
inoremap ( ()<Left>
inoremap [ []<Left>
inoremap ' ''<Left>
inoremap " ""<Left>
inoremap { {}<Left>
inoremap <buffer> /// /*<Space><Space>*/<Left><Left><Left>
inoremap <buffer> {<CR> {<CR>}<Esc>O
inoremap <C-a> <Esc>ggvG
nnoremap <C-a> ggvG
vnoremap <C-c> "+y
inoremap <C-v> <Esc>"+pi
nnoremap <C-v> "+p
解决问题
一段时间不更新,则pgp签名失效
先单独更新archlinux-keyring包 pacman -S archlinux-keyring
安装grub时报错
efibootmgr: option requires an argument --'d'
...(此处是efibootmgr的帮助文本)
grub-install: error: failed to register the EFI boot entry: Operation not permitted.
网上搜了下,结果发现在archlinux的官方论坛里有相同问题。原因是efi分区不能用lvm,必须用物理分区。大概是因为引导的时候lvm还没启动。