2019年11月

视频点此
第一期第二期

一、为什么需要

举个形象的例子:你的Linux装在一个50G的硬盘中。就是说,能用的空间就只有50G。现在,加入了一个100G的硬盘。

要知道:Linux中任何分区都需要映射到某一个文件夹上面才能使用。这个映射过程叫做“挂载”,而这个显示分区内容的文件夹就是“挂载点”。一旦文件夹变成了挂载点,这个文件夹下的内容便不能被显示出来了。而Linux的很多文件放置的位置都是统一的,你不能更改。所以这100G你要怎么加入到系统中使用?

仔细想想,挺不好搞的吧?

新建一个文件夹当作挂载点:你只能存储你自己的东西到这上面,大多数内容还是在50G的硬盘中;

挂载到内容多的文件夹下:不但需要先将所有东西移动过去,还需要调整fstab文件。而且容量是事先定死的,如果其他文件夹占用也高了,还需要经历无损调整分区—新建分区—移动数据—设置挂载点这样繁琐的步骤。不好。

这时候,lvm的作用便显现出来了。

二、优势

lvm把任何你想的分区整合成一个大的虚拟硬盘,使你可以在这上面进行分区操作。而任何事后加入的硬盘,都可以在不关机的情况下进行整合操作。

就像Windows的跨区卷,可以将不同硬盘的空闲空间整合成一个分区使用,容量等于空闲空间之和。但lvm更灵活的地方,在于它整合之后,出现的是一个新的“硬盘”,用户可以在这个“硬盘上面”再分区。

三、方法

总是有人认为Linux需要用命令,一般人用不懂。我也不知道这种印象是怎么来的,大概是因为网上能找到的教程都是命令形式?那我就用图形化的来展示一下。参见这里

在新的笔记本上头安装好Arch后,最近几次突然出现了个奇怪的问题:

系统检查完成后,sddm总是起不来。但系统是已经启动成功的,因为我可以切换到tty界面进行操作。但尝试在tty界面输入sddm,却给我返回错误:

Failed to read display number from pipe

但是,通过systemctl restart sddm重启一次服务,却又可以正常启动了,直到下一次重新启动需要再进行一次这个步骤。

真是头一次遇到这种问题……

后来在Archlinuxcn的群组里搜索了一番,看到了一个解释,说是熵不够。可以通过命令

cat /proc/sys/kernel/random/entropy_avail

来查看熵值。想要sddm启动需要差不多2000的样子。

我照做了。然后得到了刚启动时候的熵值:20

虽然到了也没明白为什么sddm启动要检查熵,但是这很明显差得太多了,那问题应该就是这里了。

有没有什么办法能提高熵的值呢?还真有。

pacman -S rng-tools
systemctl enable rngd

重启。

真好,刚启动就2700多了呢。

但是,对sddm启动的解决卵用也没有…

后来又看到一个,大概意思就是:

kabylake架构的CPU,要把驱动加入内核

来试一下:

  1. 安装intel驱动:pacman -S xf86-video-intel
  2. 编辑/etc/mkinitcpio.conf,在MODULES=的括号内增加intel_agp i915
  3. 重新生成initramfs。以防万一,先不做覆盖:mkinitcpio -c /etc/mkinitcpio.conf -g /boot/linux-i915.img
  4. 重新启动。在grub处按 e 编辑启动项,将 initramfs-linux.img 位置更改为 linux-i915.img,按F10启动

啊…终于成功了。虽然熵才30多,但sddm也终于能一次起来了。

既然启动成功了,就可以把这个自定义的名称更改成initramfs-linux.img并覆盖原先的镜像了。不过为了安全,把原先镜像做个备份大概也是有必要的。

不过,虽然解决这个问题了,但我到底也没闹清楚为什么这种架构的CPU要启用KMS,更不明白为啥提高熵也能解决一部分sddm卡住的问题…

不过还行,从解决到现在,驱动啥的都滚了几个版本了,找时间去掉这俩模块再试一下

视频点此

我曾经说,不能跟着Archwiki的Installation Guide安装好Archlinux的话,那么暂时也不要考虑用Arch了。但是最近Arch把base包组替换了之后,官方的安装文档便显的太过简略了一些…以至于我在引导问题上头卡了小半个钟头…所以,是时候分享一下base组被替换后,Wiki没有提到的内容了

注意:无论如何,官方写过的内容我还是不会去详细说的。因为只要官方文档提到了,那么它的内容就是详细且清晰的。如果看不懂,那么还是请暂时回避Arch,尝试一下Manjaro什么的。


一、替换了啥?对我有什么影响吗?

官方是这么说的:

The base group has been replaced by a metapackage of the same name. We advise users to install this package (pacman -Syu base), as it is effectively mandatory from now on.

Users requesting support are expected to be running a system with the base package.

Addendum:
Be aware that base as it stands does not currently contain:
- A kernel
- An editor
... and other software that you might expect. You will have to install these separately on new installations.

简单来说:以前只要装好base包组,你就可以拥有一个完善的文本样式的系统了。而现在,base只供满足依赖关系而不再提供可启动的软件包。所以现在的base只是一个脚手架,想要成功运行Arch就需要你自己来填充内容了。

所以,安装上面有哪些变化?


二、实操有啥变化?

从进入安装盘一直到pacstrap之前,都是没有变化的。但在pacstrap这里需要注意。

在 Installation Guide 的示例语句中,只增加了一个linux内核的程序包。但是实际上,你需要增加的可能不止这个:

  • visudo依赖vi或者vim,所以需要加入这两个软件包之一。推荐vi——如果你没有在图形界面使用vi的习惯的话
  • 好用的nano编辑器工具现在默认不再提供。需要的话也请再追加这个包
  • dhcpcd同样需要自己安装。可以在这里追加,或者之后的arch-chroot时候使用pacman安装

然后,一切如常。直到进行到grub安装环节。

不知道是不是只是我赶上了一版“残缺”的内核…不过为了保险,还是推荐这么操作一下,省的到时候进入grub恢复环境。

  • 一如既往地,安装grubefibootmgr软件包并使用grub-installgrub-mkconfig写入一次引导
  • 使用pacman -S linux重新安装一次内核
  • 同样的,使用pacman命令重新安装一次微码
  • 使用grub-mkconfig重新写入一次引导

不出意外,改版后的Archlinux就可以成功启动了。


所以,改变的说大也不大,仅仅是需要额外补充一些软件包;但是说小也不小,想让grub顺利引导还是有点儿东西的。不过还是前边说的那句话,可能只是我当时赶上了一个残缺的引导部署版本,可能到你安装的时候,只需要额为补充一些软件包就可以了。