U盘安装可移动Arch Linux,为完成这一操作,需要
U盘安装可移动Arch Linux,为完成这一操作,需要
参考这两篇文章:
https://zhuanlan.zhihu.com/p/112541071
https://blog.csdn.net/scarecrow_sun/article/details/125110808
正文开始:
安装前的准备
用rufus windows工具制作一个启动U盘(不是最终安装的那个u盘),然后用这个U盘来安装Arch Linux。为完成这一操作,需要准备如下工具:
- 下载Arch Linux镜像文件——>清华大学开源软件镜像站;
- 下载一个制作启动U盘的工具,这里我选择——>rufus;[这里注意,rufus写u盘镜像的时候,用u盘先转换为GPT格式[guid],可以用diskgenius来整盘转;然后rufus写镜像时分区类型选GPT)
- 一个容量2G以上的大U盘。(安装u盘)
- 一个用于安装移动操作系统的256G以上的移动u盘(系统u盘)
使用rufus制作启动U盘的步骤非常简单,选一下系统镜像文件,选一下自己的U盘(一般会软件自动选好的),点开始,安心等着就完事了[注意,分区类型改成GPT]。
来自rufus官方网站的截图
准备安装
把制作好的启动U盘插上电脑,开机,疯狂地按那个能够启动电脑BIOS的键。在BIOS中将U盘设为第一启动项,保存退出,就可以等着进入U盘里面的系统了。如果显示出如下界面,说明启动U盘制作成功了[我的界面没有这么炫,只有文字]。选择第一个选项就可以开始安装系统了,如果进不去系统,说明启动U盘没有做好,可能需要重新制作一份。
等待进入启动U盘当中的Linux操作系统
等着系统自己启动一小会儿,当进入到如下界面以后,就可以开始安装系统了。
成功进入启动U盘当中的Linux系统
首先,我们需要确定自己的启动模式(UEFI/BIOS):[我用的是UEFI模式,一般u盘安装盘和u盘系统盘都转为了GPT,且BIOS里配置了UEFI,那这里一般就是UEFI(CSM可开可不开【建议不开的情况下安装,安装后可开可不开】,不开似乎只能支持UEFI,开了可以同时支持UEFI和BIOS,只有UEFI需要安全启动)]
ls /sys/firmware/efi/efivars
如果提示不存在这个文件,那就说明我们的启动模式是BIOS,否则就是UEFI。下图是一个BIOS启动模式的示意图。
BIOS启动模式示意图
【UEFI启动模式】如果屏幕上出现一大把东西,那就说明电脑支持UEFI启动模式。UEFI启动模式需要在BIOS当中开启,如果老铁的硬件比较新,但又不是UEFI启动模式,可能需要去自己的BIOS当中去看看了。
UEFI启动模式示意图
然后,我们需要给电脑连上互联网。使用ip link
查看电脑的所有网卡,然后用rfkill
确保网卡能用。我的笔记本电脑使用无线网卡连接网络,对应网卡的名字是wlan0
,这个名字在后面还会用到。
确定所有网卡的名字
使用命令行程序iwctl
连接互联网。首先,键入iwctl
进入该程序,可以发现终端窗口发生了一些微妙的变化。
进入iwctl程序后的界面示意图
输入help
可以查看该程序的帮助文档,在这里我们主要使用几个以station
开头的命令。
iwctl帮助文档当中值得注意的几个以station开头的命令
可以通过几个命令的素质四连可以很快乐地完成互联网的连接。分别是station list
列出所有可用无线网卡的名字,然后用station <wlan> scan
扫描当前可用的无线网(<wlan>
需要换成自己的无线网卡名字,我的是wlan0),再然后使用station <wlan> get-networks
展示扫描结果(在敲命令的过程中随时都可以使用TAB
键进行命令补全),最后使用station <wlan> connect <name>
去连接相应的无线网,需要输入无线网络的密码(显示为星号)。效果如下所示:
iwctl素质四连完成互联网连接
值得注意的是,中文名无线网络会被显示成方块块(就比如上面图片当中就有一个wifi的名字全是方块),所以把无线网名称设置为纯英文还是有必要的哈。完成无线网设置后,使用quit
退出iwctl
,回到熟悉的终端当中。
【有线连接】如果电脑插上了网线,那就应该能直接连上互联网了,无需任何设置[这里注意,全部安装完毕,用u盘系统盘启动后,这个wifi又失去了连接配置,可以用NetworkManager里的nmtui命令在root账号情况下重新配置wifi,具体命令后面会讲]。
使用ping -c 4 baidu.com
测试一下是否成功地连上了互联网,如果输出和下图非常类似的话,那就是成功了。有时候可能不会立马就连上网,可以过十几秒再试试ping
。
测试是否成功地连接上了网络
正式开始安装系统了,首先更新一下系统时钟:
timedatectl set-ntp true
什么输出都没有的话,就说明设置成功了。在Linux宇宙,啥输出都没有是最好的结果。可以用timedatectl status
查看一下系统时钟状态,这里的时间应该是UTC时间。
[注意,这里可以不用用timedatectl设置时区那么快,后面会有设置]
接下来开始做硬盘分区了(分四个区,BIOS boot分区,EFI System分区,Linux Swap分区(可以考虑去掉,因为它会加速u盘坏掉),Linux root(x86-64)分区)[可以考虑在Swap分区后再分一个20G的exFAT分区,用于多个系统之间共享文件]
【如果要做类似ghost,可以用dd命令,但是dd只能区分到某个分区,因此这里Linux root不能用全部大小,用10G来安装一个最小化可用的系统即可,后续再用扩容把Linux root扩容回去;
ghost是通过:dd bs=512 count=[fdisk命令里Linux root的end值+1] if=/dev/sdb of=/mnt/archlinux.img status=progress;注意这里的512是根据fdisk -l显式出/dev/sdb的Units,而/mnt其实就是安装U盘启动后挂在最后一个Linux filesystem是ext4为/mnt(在Linux boot分区后面),用于保存dd出来的镜像;如要通过img还原最小化安装系统到某个磁盘,则也是可以根据进入安装U盘后执行:dd if=/xxx/archlinux.img of=/dev/sdX status=progress】
【经过测试dd命令还原的系统是有问题的,除非源和目标两块硬盘完全一致,所以还是重装吧。。】
【多硬盘情形】直接输入cfdisk
默认处理的是/dev/sda
,但是系统U盘一般不是sda,所以要用fdisk -l看下系统U盘是哪个,这里比如是/dev/sdb,,然后用cfdisk /dev/sdb
处理相应硬盘。
【UEFI启动模式】如果是UEFI启动模式,cfdisk到某个物理设备后,可以通过底部的[Delete]命令 删掉所有现有分区,然后新建4个分区,一个1M的BIOS boot分区,一个300M的boot EFI分区,一个最好至少1G的swap分区(我选了2G),最后一个分区用掉所有剩余空间(这四个分区创建顺序不要错了)。用底部[New]命令创建分区和设定分区大小,用[Type]
设定各个分区的格式,BIOS boot分区类型就是BIOS boot,boot EFI
分区设为EFI System
,swap
分区设为Linux swap
,剩下的分区设为Linux root x86-64
;然后再用[Write]分别对这四个分区真正按照分区类型和大小创建分区;
[这里解释一下,一开始Free Space里只有一个未分区的硬盘,Free Space选择它,最下面有[New],按下New后,下面会提示new的分区大小是多少,第一次对Free Space我是用来分出BIOS boot分区的,因此删除默认给出的大小,输入1M]
选择write
写入分区表(看上面一点解释,是三个分区分别都write),在出现的对话框中用yes
确认写入。分区完成以后就要格式化一下硬盘,那个大于1G的分区格式化为swap,命令如下:
[我这里的swap由于是第3次分的,所以它在我这里是/dev/sdb3]
mkswap /dev/sdb3
# 类似mount
swapon /dev/sdb3
这里面的sdXY
要按照自己的实际情况来填,在我的例子当中我只有一个硬盘,同时swap分区是放在sdb3
分区的,这里我的参数就是/dev/sdb3
。
接着再格式化我的/dev/sdb4
,相应的命令是
mkfs.ext4 /dev/sdb4 # 带日志功能
mkfs.ext4 -O "^has_journal" /dev/sdb4 # 不带日志功能,由于带日志功能会加速消耗U盘的寿命,所以可以用不带日志功能的,同样的原因,Swap分区其实也应该去掉
(这个是root分区,roo分区因为最大所以格式化会比较久)。如果分了更多的区,那就要依次进行格式化。这个格式化操作会比较慢一些,略微等一下就好。如果不记得自己的分区表了,可以用cfdisk
或fdisk -l
检查一下自己的分区表,可以从容量和类型等属性来判断具体某个分区是干什么用的。
BIOS boot分区不需要手动格式化;
等cfdisk里面delete/new/type/write都搞定后[Quit]退出cfdisk
【UEFI启动模式】如果是UEFI启动模式,boot EFI
分区要格式化为FAT32
分区(就是那个EFI System的)。
mkfs.vfat -F32 /dev/sdb2
格式化硬盘
格式化完成以后就要挂载硬盘,因为这个时候的系统是运行在U盘里的,而你要对电脑的硬盘进行操作,显然需要挂载一下,相当于把硬盘当成大号U盘(系统u盘)插到小u盘(安装u盘)上面。命令当中的/dev/sdXY
需要根据实际情况设置为自己的根目录,也就是那个比较大,占掉所有剩余空间的硬盘分区(root目录,ext4文件系统的那个,我的是/dev/sdc3)。
mount /dev/sdb4 /mnt
【UEFI启动模式】创建EFI挂载分区:mkdir -p /mnt/boot/EFI
mount /dev/sdb2 /mnt/boot/EFI
【UEFI启动模式】EFI启动安装:
# 注意grub-install命令不需要安装grub
grub-install --target=x86_64-efi --recheck --removable --efi-directory=/mnt/boot/EFI --boot-directory=/mnt/boot
正式安装
选择合适的镜像源,使用vim打开/etc/pacman.d/mirrorlist
,找一个感觉速度比较快的镜像源用dd
切掉,gg
到首行按p
粘贴一下(最上面的最优先),然后:wq
存储并退出。这样在安装软件的时候,网速就会比较快了。当然也可以直接使用清华镜像源(即第一个Server上面加一行:
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
),请参考如下帮助文档。
archlinux | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror调整完镜像源以后,可以刷新一下软件包缓存:
pacman -Syy
现在可以正式开始安装系统了,安装系统使用pacstrap
,输入如下命令安装一些基础包:
pacstrap /mnt base linux-lts linux-lts-headers linux-firmware base-devel networkmanager dhcpcd vim grub
# 注意,这里用linux-lts,之前用linux是用的最新版本内核
# 如果要安装waydroid似乎要用linux-zen和linux-zen-headers
networkmanager
提供nmcli
(命令行工具)和nmtui
(文本界面工具)用来联网,dhcpcd
用来动态获取ip地址,vim
用来编辑配置文件。只要能连上网,别的软件都可以晚点装,目前装这么多东西就足够开机了。需要等待安装过程完成以后,再执行后续的操作,现在可以出去上个厕所先。
生成分区表:
genfstab -U /mnt > /mnt/etc/fstab
如果挂载了其他的硬盘,那么这一步会把他们的相关信息写入配置文件,开机启动后会自动完成硬盘挂载(即自动将当前mount了的分区和其挂载目录信息放到fstab里,linux启动后会自动按这个关系进行挂载这些分区)。如果在前面的操作当中没有挂载其他硬盘,系统便不会把相关信息写入配置文件,系统启动后如果想要使用其他硬盘,还需要手动挂载。
进入新系统:
arch-chroot /mnt
设置时区(当然了,如果不在国内肯定就不设置上海的时区了哈):
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
设置硬件时间
hwclock --systohc
本地化设置,使用vim
打开/etc/locale.gen
,把en_US.UTF-8 UTF-8
和zh_CN.UTF-8 UTF-8
取消注释,保存退出。运行下面两条命令:
locale-gen
echo LANG=en_US.UTF-8 >> /etc/locale.conf
注意到这里设置的是en_US.UTF-8
,这是因为中文在终端中可能会被显示为方块块(后面安装了中文字体后也不要用zh_CN.UTF-8
,试过了也是乱码,所以老实用en_US.UTF-8)。
设置电脑主机名(这里的<myhostname>
取一个自己喜欢的名字)(类似windows下的主机名,我的是xxx-PC):
echo <myhostname> >> /etc/hostname
使用vim
打开/etc/hosts
,在里面输入下面三行内容(<myhostname>
换成上面自己取的名字,<localdomain>
随便取一个自己喜欢的组织名):
127.0.0.1 localhost
::1 localhost
127.0.1.1 <myhostname>.<localdomain>
<myhostname>
设置root用户的密码(连输两遍,输入时无显示):
passwd
[可以两个都装] intel
的CPU安装intel-ucode
,amd
的CPU安装amd-ucode
。如果不太确定自己的cpu型号,可以安装一个neofetch
,然后使用neofetch
查看。
# 可选项
pacman -S neofetch
neofetch # 查看cpu和显卡信息
# 必选项
# 问了,如果是U盘安装,应该也可以两个一起安装
pacman -S intel-ucode
pacman -S amd-ucode
初始化GRUB:
grub-mkconfig -o /boot/grub/grub.cfg
退出系统,准备关机了:
exit
exit后建议等几秒再umount
卸载刚刚挂载上来的硬盘(卸载失败也无所谓,不强求):
umount -R /mnt
重启电脑(黑屏的时候记得拔掉U盘,或者是在启动前重新进BIOS设置启动顺序):
这里建议umount后等几秒再reboot
reboot
进入系统
开机后显示这样的画面,就说明我们已经成功地安装好Arch Linux系统了。
等待登录
登录的时候输入root
作为用户名,密码自然是自己在安装系统的时候设置好的密码。
登录成功
安装完成后
在使用NetworkManager
联网之前,先启动必要的后台服务,然后用nmcli
或nmtui
(推荐)联网就可以了。
systemctl start NetworkManager
systemctl enable NetworkManager
systemctl start dhcpcd
systamctl enable dhcpcd
连接上互联网以后(注意,这里需要用root账号再通过nmtui
来连wifi,选择Activate a connection,然后选择对应的Wi-Fi连接(会要求输入密码,输入完毕按ESC返回),连接好后可以用ip -brief address看下自己的ip情况),
我们需要创建一个普通用户账号,一直使用root
不太好。<username>
可以改成自己喜欢的用户名,-m
表示创建用户的家目录~
,-G
表示把用户放进wheel
这个组。
useradd -m -G wheel <username>
创建完用户以后,设置一下该用户的密码:
passwd <username>
为了让新创建普通用户能够获得管理员权限,安装sudo
包:
pacman -S sudo
安装完毕以后,使用vim打开/etc/sudoers
,找到%wheel ALL=(ALL:ALL) ALL
这一行取消注释,然后使用:wq!
强制改写该文件,使得wheel
这个组内的用户都可以使用sudo
。
然后使用exit
退出root
帐号,再用普通用户登录系统后就可以正式开始使用archlinux系统了。
接下来就是安装桌面环境和桌面环境下的一些软件了:
1.先安装中文字体:
sudo pacman -S wqy-zenhei ttf-fireflysung noto-fonts wqy-microhei(也可以找一些其他更好看的字体)
2.安装KDE Plasma:
sudo pacman -S plasma-wayland-session plasma-wayland-protocols qt5-wayland qt6-wayland xorg-xwayland plasma sddm konsole dolphin kate ark okular spectacle net-tools
安装完成后再用:systemctl enable sddm启动登录管理器服务;
3.安装中文输入法:
sudo pacman -S fcitx5-im fcitx5-chinese-addons
安装完成后设置环境变量:
sudo vim /etc/environment,添加这些配置:
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
INPUT_METHOD=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus
这里默认的输入法不好用,但是又不知道搜狗支持wayland不,如果支持可以用:yay -S fcitx5-pinyin-zhwiki fctix5-pinyin-sougou安装试下;
接着重启电脑(重启后桌面环境才会生效)
启动后就可以看到进入了桌面环境,其左上角可以看到默认是wayland,账户是上面新建的非root账号;
登录进去后发现KDE是英文,可以点击左下角菜单,选择System Settings-> Regional Settings,可以看到语言默认是美国的,点击Modify就可以选择简体中文(如果上面没有安装中文字体会发现有乱码),然后应该是要求强制重启;
桌面的文件是点一下就触发打开了,这里可以设置成双击打开,则系统设置-常规行为:单击文件/文件夹时 为 选中;
安装lshw读取硬件信息:sudo pacman -S lshw[也可以用来查看GPU驱动信息:lshw -C display]
安装浏览器,可以之间用sudo pacman -S firefox安装;
安装加载ntfs文件系统模块:sudo pacman -S ntfs-3g
安装防火墙:sudo pacman -S firewalld
安装解压rar压缩包的工具:sudo pacman -S unrar,unrar x xxx.rar来解压文件
接着可以考虑滚动升级一波:
sudo pacman -Syu
然后还需要配置一下输入法,添加拼音;
在KDE里可以这样配置输入法:
1.将拼音输入法放到键盘-英语上面(这样默认输入法就是拼音)
2.点击配置全局选项,在快捷键这里将快捷键第一项 切换启用/禁用输入法 的第一栏 改成 左Shift,第三栏韩文点两下变成空;
3.将 临时在当前和第一个输入法之间切换 的快捷键改成 Control+空格;
安装yay命令:
先安装git:sudo pacman -S git
git clone https://aur.archlinux.org/yay
cd yay
makepkg -si
上面的命令会安装go语言,然后再安装go第三方库
,但是可能会因为网络问题而失败,此时可以执行这些命令:
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
export GO111MODULE=on
export GOPROXY=https://goproxy.cn
然后再次执行makepkg -si
启动桌面后可以再改下pacman的源,安装过程中改的源应该是安装U盘里的,而非系统U盘里的;
arch linux桌面环境如果要进入tty是用Ctrl+Alt+F3,退出则是Ctrl+Alt+F2
安装bottom(btm命令)替代top:
sudo pacman -S bottom
至此arch linux基本功能的安装就结束了;
修改GRUB的方式是在grub界面(停顿几秒的那个界面)按下e键(有的可能是tab等键)
tty里查看系统日志的方式,输入dmesg命令可以看到打印的启动日志(也许可以从这里找出系统启动的问题)
如果是从非lts版本升级lts版本linux内核,切换为lts后可以通过sudo pacman -R linux删除非lts版本的内核;
tty环境可能没有联网,可以用nmtui设置一下;
KDE初步美化:
1.下面的bar换成36大小,上面的是26大小,下面的半透明和浮动;
2.屏幕右侧放网络速度和磁盘活动一上一下的长方形监控卡片;
3.上面的bar左侧放内存和cpu监控,然后放剪贴板和记事贴和回收站以及边距分隔符和全局菜单;
4.图标换成Adwaita,窗口装饰元素换成Breeze微风;Plasma视觉风格换成Breeze微风深色;
5.桌面特效要加大概有:窗口惯性晃动,窗口粉碎动画,窗口透明度,最小过度动画,鼠标定位,鼠标点击动效,放大镜,非活动窗口变暗,请求管理员模式时降低屏幕亮度
6.锁屏配置锁屏背景图
7.桌面配置背景图,
8.登录屏幕选择Breeze微风
9.开启防火墙
10.配置用户
11.Konsole配置80活动透明
12.将KRunner的Alt+Space快捷键去掉,改成Meta+R
13.桌面会话可以考虑改为空会话(否则关机可能会因为要保存会话而关很久)
安装双显卡切换工具(主要是Intel和Nvidia),这个看情况要不要安装。。(主要是担心如果只有Nvidia或者是AMD的会有影响吗?毕竟自己的是系统u盘):
# 安装后重启
sudo pacman -S nvidia nvidia-prime nvidia-settings nvidia-utils opencl-nvidia lib32-nvidia-utils
[这个安装了可能导致系统问题,如果发现有问题进tty或者chroot卸载掉]
# 安装后重启
#yay -S optimus-manager
# 安装后建议重启
#yay -S optimus-manager-qt(图形化管理界面)
# 上面的两个我这边安装后用不了不知道为什么。。所以卸载了
重启后可以用optimus-manager-qt命令打开图形化GPU驱动切换工具(也有这个管理图标);
这里建议安装safe-rm命令替换掉系统的rm命令,可以参考:https://zhuanlan.zhihu.com/p/374610735;[最新版本已经达到1.1了]
https://launchpad.net/safe-rm/这里可以下载
safe-rm可以配置禁止执行哪些参数,这里至少要配置这些(这些参数是实时生效的[说明用了watch],最好不要配置太多项,否则影响效率]):
/
/*
/etc # 这里可以自动适配etc目录的绝对路径和相对路径以及/etc/
/usr
/usr/bin
/usr/share
/usr/local/share
/usr/local
/usr/local/bin
/usr/share/applications
/usr/share/applications/*.desktop
/home/silentdoer
/home/silentdoer/* # 注意,这里的*是通配符,即bin下所有的文件都不会删除。。。(而不是自己理解的只是不允许一次性清空里面的文件而已。)
# 所以这里要指定*.desktop类似这样的特殊后缀的不能删除。。
# 这个是用rust写的且有源码,自己改一下用自己的rm
如果reboot经常卡住要强制重启,可以考虑不直接桌面环境reboot而是切换tty,然后用非root执行reboot
[其实也不用,一般卡住是安装了比较多东西,,等个三分钟左右是可以正常关机的]
archlinux 全局bash别名配置(包括konsole里的普通用户和root用户,tty里的普通用户和root用户)
vim /etc/bash.bashrc
# 然后在文件最后换行后加上配置:
alias vi=vim
alias ll='ls -al'
alias hx=helix
alias sudo='sudo '
# 注意ll是单引号,所以alias并不是单纯的一个替换,即不是输入ll然后替换为'ls -al',而是会转换为ls -al(去掉单引号)
alias dpwine=deepin-wine5-stable
alias expolrer=dolphin
上面的bash.bashrc在有的linux系统里可能就是bashrc看情况;
评论暂时关闭