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-networkdsystemd-resolved两个服务
编辑/etc/mkinitcpio.conf,在HOOKS一行中,如果含有udev,则在blockfilesystems之间添加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还没启动。

posted @ 2022-08-31 19:51  huyufeifei  阅读(156)  评论(0编辑  收藏  举报
试着放一个广告栏(虽然没有一分钱广告费)

『Flyable Heart 応援中!』 HHG 高苗京铃 闪十PSS 双六 電動伝奇堂 章鱼罐头制作组 はきか 祝姬 星降夜