ArchLinux安装
虚拟机安装ArchLinux的过程,使用ssh方便复制粘贴。
启动sshd
# 启动sshd服务
systemctl start sshd.service
# 设置ssh登录的root密码
passwd
# 查看ip
ip add
安装过程
root@archiso ~ # ls
install.txt
root@archiso ~ # ls /sys/firmware/efi/efivars
root@archiso ~ # timedatectl set-ntp true
root@archiso ~ # fdisk -l
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop0: 529.67 MiB, 555380736 bytes, 1084728 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
root@archiso ~ # fdisk /dev/sda
Welcome to fdisk (util-linux 2.35.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xb921b361.
Command (m for help): m
Help:
DOS (MBR)
a toggle a bootable flag
b edit nested BSD disklabel
c toggle the dos compatibility flag
Generic
d delete a partition
F list free unpartitioned space
l list known partition types
n add a new partition
p print the partition table
t change a partition type
v verify the partition table
i print information about a partition
Misc
m print this menu
u change display/entry units
x extra functionality (experts only)
Script
I load disk layout from sfdisk script file
O dump disk layout to sfdisk script file
Save & Exit
w write table to disk and exit
q quit without saving changes
Create a new label
g create a new empty GPT partition table
G create a new empty SGI (IRIX) partition table
o create a new empty DOS partition table
s create a new empty Sun partition table
Command (m for help): g
Created a new GPT disklabel (GUID: B4CE73D7-CB8E-E84F-B3BD-5721A8CECAE0).
Command (m for help): n
Partition number (1-128, default 1):
First sector (2048-41943006, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943006, default 41943006): +256M
Created a new partition 1 of type 'Linux filesystem' and of size 256 MiB.
Command (m for help): n
Partition number (2-128, default 2):
First sector (526336-41943006, default 526336):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (526336-41943006, default 41943006):
Created a new partition 2 of type 'Linux filesystem' and of size 19.8 GiB.
Command (m for help): m
Help:
GPT
M enter protective/hybrid MBR
Generic
d delete a partition
F list free unpartitioned space
l list known partition types
n add a new partition
p print the partition table
t change a partition type
v verify the partition table
i print information about a partition
Misc
m print this menu
x extra functionality (experts only)
Script
I load disk layout from sfdisk script file
O dump disk layout to sfdisk script file
Save & Exit
w write table to disk and exit
q quit without saving changes
Create a new label
g create a new empty GPT partition table
G create a new empty SGI (IRIX) partition table
o create a new empty DOS partition table
s create a new empty Sun partition table
Command (m for help): t
Partition number (1,2, default 2): 1
Partition type (type L to list all types): 1
Changed type of partition 'Linux filesystem' to 'EFI System'.
Command (m for help): t
Partition number (1,2, default 2):
Partition type (type L to list all types): 24
Changed type of partition 'Linux filesystem' to 'Linux root (x86-64)'.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
root@archiso ~ # mkfs.ext4 /dev/sda2
mke2fs 1.45.6 (20-Mar-202:0)
Creating filesystem with 5177083 4k blocks and 1294336 inodes
Filesystem UUID: 0a6eccbf-2065-4d0e-aa66-d8851133f007
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
root@archiso ~ # mkfs.fat /dev/sda1
mkfs.fat 4.1 (2017-01-24)
root@archiso ~ # mount /dev/sda1 /mnt/boot
mount: /mnt/boot: mount point does not exist.
32 root@archiso ~ # mount /dev/sda2 /mnt
root@archiso ~ # mkdir /mnt/boot
root@archiso ~ # mount /dev/sda1 /mnt/boot
root@archiso ~ # vim /etc/pacman.d/mirrorlist
Server = http://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
root@archiso ~ # pacstrap /mnt base linux linux-firmware dhcpcd vim
root@archiso ~ # genfstab -U /mnt >> /mnt/etc/fstab
root@archiso ~ # cat /mnt/etc/fstab
# Static information about the filesystems.
# See fstab(5) for details.
# <file system> <dir> <type> <options> <dump> <pass>
# /dev/sda2
UUID=0a6eccbf-2065-4d0e-aa66-d8851133f007 / ext4 rw,relatime 0 1
# /dev/sda1
UUID=0AD1-7225 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 2
root@archiso ~ # arch-chroot /mnt
[root@archiso /]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@archiso /]# hwclock --systohc
[root@archiso /]# vim /etc/locale.gen
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_TW.UTF-8 UTF-8
[root@archiso /]# locale-gen
Generating locales...
en_US.UTF-8... done
zh_CN.UTF-8... done
zh_TW.UTF-8... done
Generation complete.
[root@archiso /]# echo LANG=en_US.UTF-8 > /etc/locale.conf
[root@archiso /]# echo modao > /etc/hostname
[root@archiso /]# vim /etc/hosts
# /etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.1.1 modao.localdomain modao
[root@archiso /]# passwd
[root@archiso /]# pacman -S grub
[root@archiso /]# pacman -S efibootmgr
[root@archiso /]# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCHLINUX
Installing for x86_64-efi platform.
Installation finished. No error reported.
[root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img
done
[root@archiso /]# exit
exit
arch-chroot /mnt 8.17s user 2.01s system 1% cpu 11:43.60 total
root@archiso ~ # umount -R /mnt
root@archiso ~ # reboot
命令汇总
ls /sys/firmware/efi/efivars
timedatectl set-ntp true
fdisk -l
fdisk /dev/sda
mkfs.ext4 /dev/sda2
mkfs.fat /dev/sda1
mount /dev/sda2 /mnt
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
echo -e "Server = http://mirrors.ustc.edu.cn/archlinux/\$repo/os/\$arch" > /etc/pacman.d/mirrorlist
pacstrap /mnt base linux linux-firmware dhcpcd vim
genfstab -U /mnt >> /mnt/etc/fstab
cat /mnt/etc/fstab
arch-chroot /mnt
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc
echo -e "en_US.UTF-8 UTF-8\nzh_CN.UTF-8 UTF-8\nzh_TW.UTF-8 UTF-8" > /etc/locale.gen
locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf
echo modao > /etc/hostname
echo -e "127.0.0.1\tlocalhost\n::1\t\tlocalhost\n127.0.1.1\tmodao.localdomain\tmodao" > /etc/hosts
passwd
pacman -S grub efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCHLINUX
grub-mkconfig -o /boot/grub/grub.cfg
exit
umount -R /mnt
reboot
配置软件源
更新软件数据库
pacman -Syy
安装 archlinuxcn-keyring
包以导入 GPG key
pacman -S archlinuxcn-keyring
更新系统
pacman -Syu
配置桌面
安装xorg
pacman -S xorg
pacman -S xorg-xinit
cp /etc/X11/xinit/xinitrc ~/.xinitrc
pacman -S awesome
pacman -S xterm
配置awesome-wm主题
下载主题时:git clone --recursive 用于循环克隆git子项目
- 启动不成功,将配置文件(rc.lua和theme.lua)里的
“/home”
改成了“/”
- 修改默认终端为xterm(全小写)
- 修改主题配置文件里的字体大小
- 修改rc.lua的快捷键绑定
配置zsh
pacman -S zsh
chsh -s /bin/zsh
pacman -S oh-my-zsh-git
cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
## 修改主题后,重新加载
source ~/.zshrc
## 安装字体
pacman -S ttf-monaco
pacman -S wqy-microhei
配置Xterm
修改完配置,执行xrdb .Xresources
生效
! .Xresources
! Xterm settings
! XTerm*vt100*reverseVideo: true
XTerm*vt100.background: black
XTerm*vt100.foreground: white
! copy & paste
XTerm*VT100.translations: #override <Btn1Up>: select-end(PRIMARY, CLIPBOARD, CUT_BUFFER0)
! English font
xterm*faceName: Monaco:antialias=True:pixelsize=15
! Chinese font
xterm*faceNameDoublesize:WenQuanYi Micro Hei:antialias=True:pixelsize=15
!input method
XTerm*inputMethod:fcitx
! scrollbar
XTerm*scrollBar: true
XTerm*rightScrollBar: true
XTerm*SaveLines: 4096
! Xterm*faceSize: 20
Xterm*VT100*geometry: 100x30
调整屏幕分辨率(可选)
会话中生效
xrandr 作出的改变只在本次会话中有效
分辨率后面带有一个***号和一个+**号
从已有分辨率中选择
xrandr --output HDMI-1 --mode 1920x1080
xrandr --output HDMI-1 --mode 1920x1080 --rate 60
--ouput
:可用的显示输出设备--mode
:已有的分辨率--rate
:刷新速率
添加未被检测到的有效分辨率
# 首先,运行gtf或者cvt,查询某分辨率的有效扫描频率。
cvt 1280 1024
1280x1024 59.89 Hz (CVT 1.31M4) hsync: 63.67 kHz; pclk: 109.00 MHz
Modeline "1280x1024_60.00" 109.00 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync
# 然后通过--newmode参数新建一种xrandr模式,输入上面所得到的查询结果,其中Modeline关键词自然需要被省略。
xrandr --newmode "1280x1024_60.00" 109.00 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync
# 新建模式后,我们需要把这模式添加到当前的输出设备(假定为VGA1)上。由于一些参数已经事先设置,只需输入模式名称即可,即1280x1024_60.00。
xrandr --addmode VGA1 1280x1024_60.00
# 最后,再把VGA1的分辨率指定为刚刚添加的新模式。
xrandr --output VGA1 --mode 1280x1024_60.00
永久生效
使xrandr定制永久生效的方案有:(详见Arch wiki)
xorg.conf
(推荐).xprofile
- kdm/gdm
在xorg.conf
设置分辨率:
可以通过 /etc/X11/xorg.conf
配置 Xorg,用下面命令可以生成 xorg.conf
模板:
Xorg :0 -configure
执行后会在 /root/
生成 xorg.conf.new
文件,然后你可以将它复制到 /etc/X11/xorg.conf
。
如果已经运行了 X 服务器,请使用不同的 display,例如
Xorg :2 -configure
。
利用gtf
计算参数:
gtf 1920 1080 60
得到结果:
# 1920x1080 @ 60.00 Hz (GTF) hsync: 67.08 kHz; pclk: 172.80 MHz
Modeline "1920x1080_60.00" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync
修改xorg.conf
文件:
在Section "Monitor"中,加入:
Modeline "1920x1080_60.00" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync
在Section "Screen"中的 SubSection "Display"中,加入一行:
Modes "1920x1080_60.00"
最终xorg.conf文件看上去是这样的(无关的Section可以删掉)
......(省略) Section "Monitor" Identifier "Monitor0" Modeline "1920x1080_60.00" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync Modeline "1888x1020_60.00" 160.17 1888 2008 2208 2528 1020 1021 1024 1056 -HSync +Vsync Modeline "1600x860_60.00" 112.78 1600 1688 1856 2112 860 861 864 890 -HSync +Vsync VendorName "Monitor Vendor" ModelName "Monitor Model" EndSection ......(省略) Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" SubSection "Display" Viewport 0 0 Modes "1920x1080_60.00" Depth 24 EndSubSection SubSection "Display" Viewport 0 0 Modes "1888x1020_60.00" Depth 24 EndSubSection SubSection "Display" Viewport 0 0 Modes "1600x860_60.00" Depth 24 EndSubSection EndSection ......(省略)
参考资料:
通过feh设置壁纸
pacman -S feh
feh --bg-fill master.jpg
通过picom设置窗口透明
pacman -S picom
cp /etc/xdg/picom.conf ~/.config/
vim ~/.config/picom.conf
picom&
# 修改配置,添加规则
# picom.conf
# 非活跃窗口透明度(非当前窗口)
inactive-opacity = 0.5;
# 框体透明度,窗口的标题栏等
frame-opacity = 0.6;
# 默认
inactive-opacity-override = false;
# 活跃窗口透明度(当前窗口)
active-opacity = 0.7
opacity-rule = [
"100:class_g = 'Xterm'",
"100:class_g = 'feh'"
];
禁止beep声音(可选)
/etc/modprobe.d
中加入no-beep.conf
文件,内容为:
blacklist pcspkr
禁掉该模块就不会发出 beep 的声音了。
网络工具net-tools
pacman -S net-tools
校园网Linux客户端依赖ifconfig
(没装显示无效网卡),尽管在arch中已经有ip addr
代替
网络工具
net-tools属于base组,装base时自动就装上了,现在哪个组都不属于了,这些工具需要单独安装。 其中: + ifconfig、route在net-tools包中 + nslookup、dig在dnsutils包中 + ftp、telnet等在inetutils包中 + ip命令在iproute2包中
pacman -S net-tools dnsutils inetutils iproute2
多线程下载工具 axel
more
代理
proxychains privxy
系统监控工具 conky(可选)
more
终端文件管理器ranger
搜索文件名数据库mlocate
archlinux不自带locate,提供mlocate
//安装并初始化数据库,需要root
pacman -S mlocate
updatedb
vscode
arch可以有多个版本的vscode供选择:
pacman -S code
arch打包的oss版的vscode默认不使用官方市场
可以手动修改product.json让oss版使用官方市场,修改这个字段:
"extensionsGallery": {
"serviceUrl": "https://marketplace.visualstudio.com/_apis/public/gallery",
"cacheUrl": "https://vscode.blob.core.windows.net/gallery/index",
"itemUrl": "https://marketplace.visualstudio.com/items"
}
安装fcitx5,配置中文输入法
//安装输入法框架和配置工具
pacman -S fcitx5-im
//配置启动fcitx5必要的环境变量,并重新登陆
//~/.pam_environment
GTK_IM_MODULE DEFAULT=fcitx
QT_IM_MODULE DEFAULT=fcitx
XMODIFIERS DEFAULT=\@im=fcitx
SDL_IM_MODULE DEFAULT=fcitx
//pambase 升级后不再读取.pam_environment配置文件,可以放到.xprofile文件或.bash_profile,.bash_profile试了可行
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export SDL_IM_MODULE=fcitx
//安装中文输入法引擎
pacman -S fcitx5-rime
pacman -S fcitx5-pinyin-zhwiki fcitx5-pinyin-moegirl
//安装词库:四叶草拼音输入方案
//https://github.com/fkxxyz/rime-cloverpinyin
//切换普通用户
yay -S rime-cloverpinyin
//fcitx5-rime的用户资料文件夹:~/.local/share/fcitx5/rime
//在用户资料夹下创建 default.custom.yaml ,内容为
patch:
"menu/page_size": 8
schema_list:
- schema: clover
//其中 8 表示打字的时候输入面板的每一页的候选词数目,可以设置成 1~9 任意数字。
//写好该文件之后,点击右下角托盘图标右键菜单,点“重新部署”
//配置startx启动时自动启动fcitx5
vim ~/.config/awesome/rc.lua
添加一条autorun为fcitx5即可
arch打包的oss版的vscode默认不使用官方市场
可以手动修改product.json让oss版使用官方市场,修改这个字段:
"extensionsGallery": {
"serviceUrl": "https://marketplace.visualstudio.com/_apis/public/gallery",
"cacheUrl": "https://vscode.blob.core.windows.net/gallery/index",
"itemUrl": "https://marketplace.visualstudio.com/items"
}
杂碎记录
挂载相关
Linux和手机传输文件: mtpfs手动挂载 jmtpfs df -iT查看能否识别
boot分区和EFI分区单独挂载问题
主板的引导启动方式有2种: + BIOS + UEFI 硬盘的分区模式也有2种: + MBR(硬盘开头必须给MBR分区) + GPT 以前的机器使用BIOS+MBR,现在基本都是UEFI和GPT硬盘的模式。
在BIOS系统中,引导加载程序(或大型引导加载程序的“stage1”)存储在MBR内的磁盘的第零个扇区中。(512字节的MBR为引导程序代码保留446个字节,其余部分用于分区信息。)如果引导加载程序太大,则其MBR“ stage1”代码通常会尝试在/boot分区中查找“stage2”文件。
在EFI或UEFI系统中,MBR中的引导程序代码区域通常为空(大多数UEFI系统甚至不使用MBR进行分区,而是使用GPT)。而是将所有引导加载程序作为普通.efi程序存储在“ EFI系统分区”中,该分区是分区表中具有特殊“分区类型”的常规FAT32分区。如果您有多个操作系统,则它们共享相同的EFI系统分区。
EFI是GPT硬盘分区模式中的系统启动分区,EFI分区全称是EFI system partition,一般简写成EFI分区或者ESP分区。 EFI 分区:专门放各种操作系统的引导文件,无论 Windows/Linux/MacOS,需要 FAT32 文件系统,这个分区由主板的 UEFI 引导器读取。
在 Linux 下“EFI 分区”的默认挂载路径为 /boot/efi 而已,和 “/boot 分区”没有关系,就一个路径而已。
早期建一个小的“/boot 分区”主要是某些 grub 引导器不识别 ext4/btrfs 这种新文件系统,所以内核文件专门放在“/boot 分区”(一般格式化为 ext2/ext3 )。不过现在的引导器都很完善了,识别多个文件系统,没必要单独 /boot 了。
所以现在安装 Linux 只需要两个分区:
- EFI 分区,如果其它操作系统已经建立,直接使用即可,同一个硬盘上只需要一个。
- root 分区,Linux 的 /
相关文章: + https://www.happyassassin.net/posts/2014/01/25/uefi-boot-how-does-that-actually-work-then/ + https://superuser.com/questions/520068/efi-partition-vs-boot-partition/520088#520088 + https://0pointer.net/blog/linux-boot-partitions.html
分区相关
从性能角度考虑,/var/home 比较科学 把配置文件放在 /var 分区,速度更快 /home 单独分区,读写配置文件会比较慢 /var 如果没单独分区,那就在根分区,也不必如此操作
所以一般情况建议 /var /home 都还是留在根分区。 如果根分区在固态硬盘,则 /var 分到机械硬盘,/home 挪进 /var 分区。 我是根分区和 /boot 分区在固态,平时是只读挂载,提高安全性。/var 在机械硬盘,/home 挪入 /var。 第一,离根分区较远,磁头摆动大。 第二,单独的分区,不能和根分区集中进行布局优化。 第三,单独的主分区,必然会放一些七七八八的数据,磁盘碎片化严重。
软连接部分文件,配置文件和home都该放到根分区 较大的文件可以移走 然后软连接回来
依赖相关
先安装该包还是先安装其依赖? 直接apt install ./deb,可以自动装依赖
dpkg -i xxx.deb aptitude install dpkg 安装时缺少依赖就是返回非 0 值的 apt 只在 dpkg 失败时才补充
dpkg最差,pkg其次(arch属于pkg),rpm最舒服 dpkg主要问题是推荐和依赖分不清
Archlinux编译内核
https://wiki.archlinux.org/index.php/Kernel_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)/Traditional_compilation_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
archlinux可以使用 zcat命令获取当前运行内核的config文件。其它发行版的config文件可能直接放在/boot目录中。
$ zcat /proc/config.gz > .config