分类 Linux 下的文章

{music id="38574742" color="#7c0e4e" autoplay="autoplay"/}

Howdy 是 Linux 上一个类似 Windows Hello,用电脑传感器人脸识别以解锁电脑的程序。

一、安装前的准备

1.开启系统全局代理

如果使用图形代理软件,比如clash等,直接手动点击开启全局即可。如果用的是命令行代理可以使用Polipo设置本地全局代理(proxychains无效)。

{alert type="info"}
polipo是类似clash作用的本地流量转发工具,并不提供代理服务器功能。所以你得先在本地开启ssr、trojan等代理,之后再使用polipo。 polipo具体使用(本地已经使用trojan开启了1080端口的socket5代理)
{/alert}

# 开启当前终端全局
export http_proxy=http://127.0.0.1:8123 https_proxy=http://127.0.0.1:8123

二、Howdy安装与配置

{alert type="info"}
对应linux发行版的howdy安装都可以在官方github上找到: https://github.com/boltgolt/howdy
这里主要介绍一下在shafish当前使用的manjaro i3wm系统下安装和使用howdy的流程 :@(得意) 。
{/alert}

1. Arch/Manjaro

# 会有资源下载和编译的步骤,如果没开全局代理,在下载资源时你会后悔得 :@(呲牙) 
yay -S howdy

2. Configuration

{alert type="success"}
howdy安装完成后会在/etc/pam.d目录中生成多个配置文件,每个配置文件都能绑定人脸识别来解锁对应的命令或操作。

  • 比如shafish电脑熄屏解锁用的i3clock,只要配置好i3lock文件,就可以使用人脸代替解锁密码;
  • 比如sudo,当第一次输入sudo命令时也同样需要输入密码,只要配置好sudo文件,就可以使用人脸代替密码;
    i3clock&sudo
    {/alert}

2.0 更改howdy文件夹权限

sudo chmod -R 755 /lib/security/howdy

2.1 设置扫描摄像头

# 展示本机的video设备,笔记本的话一般使用第一个就好:也就是/dev/video0
v4l2-ctl --list-devices

2.2 配置howdy扫描设备

/dev/video0配置到howdy中,表示要使用该设备做人脸扫描。

# 或者 直接运行 sudo howdy config ,默认使用nano编辑,使用ctrl+x保存退出
sudo vim /lib/security/howdy/config.ini 
# 修改device_path为/dev/video0
device_path = /dev/video0
# :wq保存退出

device_path

2.3 设置人脸数据

# sudo howdy -U username add 
sudo howdy -U shafish add # 提示label可以随便填

强烈建议输入多条数据,设置填入的label不同即可
face

2.4 设置i3lock人脸解锁

配置也很简单,只要在目录/etc/pam.d下对应的文件中加入auth sufficient pam_python.so /lib/security/howdy/pam.py即可。

[~]$ cat /etc/pam.d/i3lock                    
#
# PAM configuration file for the i3lock-color screen locker. By default, it includes
# the 'system-local-login' configuration file (see /etc/pam.d/system-local-login)
# for Arch and Gentoo and 'login' for Debian. Note that upstream uses only 'login',
# which doesn't work on Arch and Gentoo.
#
auth sufficient pam_python.so /lib/security/howdy/pam.py
auth include system-local-login # For Arch/Gentoo
#auth include login # For Debian

2.5 设置sudo使用人脸数据

[~]$ cat /etc/pam.d/sudo  
#%PAM-1.0
auth sufficient pam_python.so /lib/security/howdy/pam.py
auth        include        system-auth
account        include        system-auth
session        include        system-auth

ok,搞定。下次再使用i3clock和sudo命令时就不用输入密码咧, ::(狗头)

三、Howdy more

使用过程中出现warning 597、1034、2056可以设置环境变量 OPENCV_LOG_LEVEL=ERROR解决
  • 启用 Howdy 功能:sudo howdy disable 0
  • 禁用 Howdy 功能:sudo howdy disable 1
  • 添加人脸模型:sudo howdy -U username add
  • 清除所有面部模型记录:sudo howdy clear
  • 面部模型记录:sudo howdy list
  • 删除指定 ID 的面部记录:sudo howdy remove face_ID
  • 面部扫描测试:sudo howdy test
  • 更多:sudo howdy -h

ref:
https://wiki.archlinux.org/title/Howdy_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
https://github.com/boltgolt/howdy

{music id="1344897943" color="#a9289f" autoplay="autoplay"/}

Linux系统的逻辑卷支持类似window的多盘动态合并(LVM: :@(长草) ),也提供了灵活的硬盘挂载功能,使用mount可以把整个硬盘或者硬盘内某个分区挂载在指定linux目录下,扩大该目录的容量。
但是shafish之前安装时没有使用lvm,当时还不知道这东西(LVM: :@(小怒) ),所以本文介绍的挂载点扩容操作是指:把系统中磁盘使用率高的挂载点进行扩容,而不是在挂载点下再挂一个新的分区。这方面接触少的童鞋可能不是很清楚啥意思,那就先全文浏览一遍?走起 :@(鼓掌)

一、分区进行ext4格式化

对新分区进行格式化

# 定位需要格式化的分区,这里是上一篇文章新分配的nvme0n1p4(50G)
>lsblk
nvme0n1     259:0    0 476.9G  0 disk 
├─nvme0n1p1 259:1    0   260M  0 part /boot/efi
├─nvme0n1p2 259:2    0    16M  0 part 
├─nvme0n1p3 259:3    0 370.4G  0 part 
├─nvme0n1p4 259:4    0    50G  0 part 
├─nvme0n1p5 259:5    0  55.3G  0 part /
└─nvme0n1p6 259:6    0  1000M  0 part
# ext4格式化
>mkfs.ext4 /dev/nvme0n1p4

二、查找磁盘占用高的挂载点

>sudo du --max-depth=1 -h /
16K    /mnt
1.9M    /run
26M    /root
0    /proc
16K    /lost+found
31G    /home
2.3G    /opt
77M    /tmp
8.9G    /usr
14M    /etc
0    /dev
0    /sys
136M    /boot
2.4M    /data
12G    /var
16K    /srv
54G    /
```
毫无疑问,要扩容的挂载点是`/home`(还是建议系统安装前分配个大点的分区 :@(吐血倒地) )

## 三、替换大法进行扩容
linux系统下一切都是文件,我们只需要把挂载点`/home`下的所有文件复制到新分区,然后释放挂载点容量,最后把新分区重新挂到`/home`下就ok了。 :@(献花) 

- 1.把新分区挂载到临时挂载点
```shell
sudo mkdir /mnt/home
sudo mount /dev/nvme0n1p4 /mnt/home
```

- 2.切换用户(只保留root)
```shell
init 1
```

- 3.文件复制
```shell
# 把系统/home下的所有文件都复制到新分区中
cp -av /home/* /mnt/home
```

- 4.删除原挂载点
```shell
sudo rm -rf /home
```

- 5.挂载新分区
```shell
sudo mkdir /home
sudo umount /mnt/home
sudo mount /dev/nvme0n1p4 /home
```

- 6.设置开机固定挂载
```shell
# 查看新分区uuid
>sudo blkid /dev/nvme0n1p4
/dev/nvme0n1p4: UUID="0b5b7f34-521a-ae44-a02b-9e234f5c0129" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Basic data partition" PARTUUID="32de16c7-01b3-11ec-8713-5c3a45739ea4"
>sudo vim /etc/fstab
# 添加下面一行内容,uuid是blkid命令得到的UUID值,表示该分区在系统启动时自动挂载到/home下
UUID=0b5b7f34-521a-ae44-a02b-9e234f5c0129  /home           ext4    defaults,noatime 0 2
```

- 7.重启:`reboot`等待系统重启

- 8.检查
 ![check](https://cdn.shafish.cn/blog_photo/resize.png) 
 可以看到`/home`已经挂载上新分区使用了,`/dev/nvme0n1p5`根目录也多出了原本`/home`占用的31G容量,nice。 :@(鼓掌) 

- 9.修改i3bar显示
`sudo vim /etc/i3status.conf`
```shell
...
order += "disk /"
order += "disk /home"
...
disk "/" {
        # format = " hdd %avail "
        #format = " ⛁ %avail "
        format = "/ %avail"
}

disk "/home" {
    format = "/home %avail"
}
...
```
 ![show](https://cdn.shafish.cn/blog_photo/echo.png) 

 完美收工。 :@(赞一个) 
 

{music id="1448421768" color="#6a267d" autoplay="autoplay"/}

电脑上安装了window和manjaro系统,当初想着linux系统不用分配太多存储,就随手分配了55G安装了manjaro i3wm :@(内伤) ,我想,当初应该是脑子不正常勒,idea、vscode等各种软件还有git项目,现在50G用剩2.7G :@(抠鼻) 。想着从window C盘再分点出来,嗯,就有现在你看到的这篇随笔 :@(无奈)
图示

一、window系统中分配50G空闲分区

直接进入window存储管理右键创建空闲分区,或者下载个分区助手操作。(略过)

二、产生grub引导错误原因

创建分区后进行ext4格式化,导致新建分区对应挂载点(或者叫盘符?)替换了原来manjaro系统的挂载点。下图示:
lsblk

原本挂载点nvme0n1p4是指向manjaro系统得,现在指向了新创建的分区(50G那个);nvme0n1p5指向原来的manjaro系统(55.3G那个)。(从C盘切下来的空闲分区是紧挨C盘后面得er,想了想,盘符错乱好像也挺正常 :@(看不见) )

盘符错乱就导致了使用manjaro做开机引导的grub程序在原来的挂载点中找不到系统引导入口,所以开机后直接进入grub rescue救援模式,需要宁手动选择系统所在分区。来吧 ヾ(´・ ・`。)ノ

三、grub引导修复

1.确定系统启动挂载点/分区

进入grub模式后输入ls显示所有分区,ls 分区显示指定分区内容:

grub rescue>ls
...(hd0,nvme0n1p4) (hd0,nvme0n1p5)...
grub rescue>ls (hd0,nvme0n1p4)/
...unknown filesystem...
grub rescue>ls (hd0,nvme0n1p5)/
home etc usr ...

如果显示系统根目录内容,就说这个分区就是你原来的系统分区。这里的系统分区是(hd0,nvme0n1p5)

2.normal启动

grub rescue>set root=(hd0,nvme0n1p5)
grub rescue>set prefix=(hd0,nvme0n1p5)/boot/grub
grub rescue>insmod normal
grub rescue>normal

ok,此时你就进入原系统的开机引导界面了,选择manjaro进入系统,进行grub的引导修复

3.修复

# 打开终端
sudo update-grub
sudo grub-install /dev/nvme0n1p5

ok,搞定

报错复现

笔记本使用的是Ryzen 4800u,安装了window10和manjaro系统。出现报错是在升级manjaro正常使用一段时间后,因为没注意笔记本电量造成系统直接断电关机。开机后报错,进入不了linux系统。

// 具体报错信息
xxxx
“Failed to start Load/Save Screen Backlight Brightness of backlight:acpl_video0” error

经验证:系统突然断电关机后复现该问题。

解决方法

https://bbs.archlinux.org/viewtopic.php?id=187921 (看了下还是2014年的贴)

修改/etc/default/grub文件

GRUB_CMDLINE_LINUX_DEFAULT=""

修改为:

GRUB_CMDLINE_LINUX_DEFAULT="quiet acpi_osi='!Windows 2012'"

具体操作

linux系统都进入不了怎么修改linux里面的文件,我们打开window系统也是读取不了linux的分区的。
这时我们只需要把一个安装了linux系统的u盘作为启动系统,在出问题的电脑上插上u盘按下键盘f12选择u盘启动即可。

  • 1.u盘启动后打开终端挂载manjaro分区

    • 创建本地挂载点:sudo mkdir /mnt/manjaro
    • 查看manjaro分区目录lsblk,我的manjaro系统就安装在图示55.3G大小的nvme0n1p4分区中,把该分区挂载给u盘的linux系统即可访问
    • 挂载sudo mount /dev/nvme0n1p4 /mnt/manjaro
  • 2.进入manjaro分区修改grub文件

    • cd /mnt/manjaro
    • vim /etc/default/grub

      把  GRUB_CMDLINE_LINUX_DEFAULT=""
      修改为  GRUB_CMDLINE_LINUX_DEFAULT="quiet acpi_osi='!Windows 2012'"
      即可
    • reboot 拔掉u盘选择manjaro启动就可以正常进入系统
  • 3.题外
    2014年是Windows 2012现在window服务器都到2019了,是不是写Windows 2019也可以?

ref:
https://bbs.archlinux.org/viewtopic.php?id=187921
https://wiki.manjaro.org/index.php?title=Power_Management
https://juejin.im/post/6844903846288818184


Spring security得等到国庆放假才能继续填lie,mark

Manjaro--archlinux的衍生系统.入手华为matebook d笔记本,在安装archlinux时 U盘进入系统,格式化分区出现分区异常

Partition(s)   60, 61, 62, 63, 64 on /dev/sda have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use. 
As a result, the old partition(s) will remain in use. You should reboot now before making further changes

谷歌、百度搜索无果后(姿势不对)找到了Manjaro。感觉可以用上几年 xixixi

Manjaro安装问题
开机启动引导问题
arch安装jdk