0%

转载 https://www.cnblogs.com/klb561/p/9108712.html

功能说明:建立ISO 9660映像文件。 常用命令:genisoimage -o imagename.iso file 语 法:mkisofs [-adDfhJlLNrRTvz][-print-size][-quiet][-A ][-abstract ][-b ][-biblio ][-c ][-C ][-copyright ][-hide ][-hide-joliet ][-log-file ][-m ][-M ][-o ][-p ][-P ][-sysid ][-V ][-volset ][-volset-size ][-volset-seqno ][-x ][目录或文件] 补充说明:mkisofs可将指定的目录与文件做成ISO 9660格式的映像文件

基本用法:

mkisofs (or genisoimage) -o image.iso /path/of/folder

如有中文不能显示尝试(建议使用):

mkisofs (or genisoimage) -J -o image.iso /path/of/folder

完整命令查看:

mkisofs (or genisoimage) –help 或 man genisoimage

命令: mkisofs(make iso file system)

功能说明:建立ISO 9660映像文件。
语 法:mkisofs [-adDfhJlLNrRTvz][-print-size][-quiet][-A <应用程序ID>][-abstract <摘要文件>][-b <开机映像文件>][-biblio ][-c <开机文件名称>][-C <盘区编号,磁区编号>][-copyright <版权信息文件>][-hide <目录或文件名>][-hide-joliet <文件或目录名>][-log-file <记录文件>][-m <目录或文件名>][-M <开机映像文件>][-o <映像文件>][-p <数据处理人>][-P <光盘发行人>][-sysid <系统ID >][-V <光盘ID >][-volset <卷册集ID>][-volset-size <光盘总数>][-volset-seqno <卷册序号>][-x <目录>][目录或文件]
补充说明:mkisofs可将指定的目录与文件做成ISO 9660格式的映像文件,以供刻录光盘。
参 数:
-a或–all mkisofs通常不处理备份文件。使用此参数可以把备份文件加到映像文件中。
-A<应用程序ID>或-appid<应用程序ID> 指定光盘的应用程序ID。
-abstract<摘要文件> 指定摘要文件的文件名。
-b<开机映像文件>或-eltorito-boot<开机映像文件> 指定在制作可开机光盘时所需的开机映像文件。
-biblio 指定ISBN文件的文件名,ISBN文件位于光盘根目录下,记录光盘的ISBN。
-c<开机文件名称> 制作可开机光盘时,mkisofs会将开机映像文件中的全-eltorito-catalog<开机文件名称>全部内容作成一个文件。
-C<盘区编号,盘区编号> 将许多节区合成一个映像文件时,必须使用此参数。
-copyright<版权信息文件> 指定版权信息文件的文件名。
-d或-omit-period 省略文件后的句号。
-D或-disable-deep-relocation ISO 9660最多只能处理8层的目录,超过8层的部分,RRIP会自动将它们设置成ISO 9660兼容的格式。使用-D参数可关闭此功能。
-f或-follow-links 忽略符号连接。
-h 显示帮助。
-hide<目录或文件名> 使指定的目录或文件在ISO 9660或Rock RidgeExtensions的系统中隐藏。
-hide-joliet<目录或文件名> 使指定的目录或文件在Joliet系统中隐藏。
-J或-joliet 使用Joliet格式的目录与文件名称。
-l或-full-iso9660-filenames 使用ISO 9660 32字符长度的文件名。
-L或-allow-leading-dots 允许文件名的第一个字符为句号。
-log-file<记录文件> 在执行过程中若有错误信息,预设会显示在屏幕上。
-m<目录或文件名>或-exclude<目录或文件名> 指定的目录或文件名将不会房入映像文件中。
-M<映像文件>或-prev-session<映像文件> 与指定的映像文件合并。
-N或-omit-version-number 省略ISO 9660文件中的版本信息。
-o<映像文件>或-output<映像文件> 指定映像文件的名称。
-p<数据处理人>或-preparer<数据处理人> 记录光盘的数据处理人。
-print-size 显示预估的文件系统大小。
-quiet 执行时不显示任何信息。
-r或-rational-rock 使用Rock Ridge Extensions,并开放全部文件的读取权限。
-R或-rock 使用Rock Ridge Extensions。
-sysid<系统ID> 指定光盘的系统ID。
-T或-translation-table 建立文件名的转换表,适用于不支持Rock Ridge Extensions的系统上。
-v或-verbose 执行时显示详细的信息。
-V<光盘ID

###############################################
#################################################

mkisofs(8) 程序作为 sysutils/cdrtools port 的一部分, 将生成 ISO 9660 文件系统,其中包含 UNIX? 命名空间中的文件名。最简单的用法是:

mkisofs -o imagefile.iso /path/to/tree

这个命令将创建一个包含 ISO9660 文件系统的 imagefile.iso 文件,它是目录树 /path/to/tree 的一个副本。 在处理过程中,它将文件名称映射为标准的 ISO9660 文件系统的文件名,将排除那些不典型的 ISO 文件系统的文件。
有很多选项能够用来克服那些限制。特别的,-R 选项能够启用 Rock Ridge 扩展一般的 UNIX 系统,-J 选项能启用用于 Microsoft 系统的 Joliet 扩展,-hfs 选项能用来创建用于 Mac OS? 系统的 HFS 文件系统。
RockRidge格式是ISO9660格式的延伸,支持文件名字母的大小写、符号字符、长文件名以及超过8层的目录结构。RockRidge使CD-ROM能兼容Unix的文件系统,因此它在Unix系统上已经被广泛地使用。
对于那些即将要在 FreeBSD 系统中使用 CD 的人来说,-U 选项能用来消除所有文件名的限制。当使用-R 选项时,它会产生一个 文件系统映像,它与您从那儿启动 FreeBSD 树是一样的,虽然它在许多方面也违反了 ISO 9660 的标准。
最后一个常用的选项是 -b。 它用来指定启动映像的位置,用以生成 “El Torito” 启动 CD。 这个选项使用一个参数, 用以指定将写入 CD 的目录的根。默认情况下, mkisofs(8) 会以常说的 “软盘模拟” 方式来创建 ISO, 因此它希望引导映像文件的尺寸恰好是 1200, 1440 或 2880 KB。 某些引导加载器, 例如 FreeBSD 发行版磁盘, 并不使用模拟模式;这种情况下, 需要使用 -no-emul-boot 选项。 因此, 如果 /tmp/myboot 是一个包含了启动映像文件 /tmp/myboot/boot/cdboot 的可引导的 FreeBSD 系统,您就可以使用下面的命令生成 ISO 9660 文件系统映像 /tmp/bootable.iso:

mkisofs -R -no-emul-boot -b boot/cdboot -o /tmp/bootable.iso /tmp/myboot

完成这些工作之后, 如果您的内核中配置了 md,就可以用下列命令来挂接文件系统了:

mdconfig -a -t vnode -f /tmp/bootable.iso -u 0

mount -t cd9660 /dev/md0 /mnt

可以发现 /mnt 和 /tmp/myboot 是一样的。

1.安装所需的软件包:

[root@localhost ~]# yum -y install createrepo mkisofs isomd5sum

2.根据当前系统已安装的软件包生成安装系统所需要的rpm列表

[root@localhost ~]# awk ‘/Installing/{print $2}’ install.log |sed ‘s/^[0-9]*://g’ >/root/packages.list

3.建立定制所需要的目录并把除Packages目录以外的文件复制到新的系统目录

[root@localhost ~]# mkdir /mnt/cdrom
[root@localhost ~]# mkdir -p /data/OS
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
[root@localhost ~]# rsync -a –exclude=Packages /mnt/cdrom/ /data/OS/
[root@localhost ~]# mkdir /data/OS/Packages

4.使用脚本自动复制所需要的RPM包到新建立的光盘目录中Packages

[root@localhost ~]# vim cprpms.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash  
SRC_RPMS=/mnt/cdrom/Packages
DST_RPMS=/data/OS/Packages
packages_list=/root/packages.list
number_of_packages=`cat $packages_list | wc -l`
i=1
while [ $i -le $number_of_packages ] ;
do
name=`head -n $i $packages_list | tail -n -1`
echo "cp $SRC_RPMS/$name* $DST_RPMS/"
cp $SRC_RPMS/$name* $DST_RPMS/
i=`expr $i + 1`
done

[root@localhost ~]# sh cprpms.sh

5.配置kickstart脚本

[root@localhost ~]# vim /data/OS/isolinux/ks.cfg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#platform=x86, AMD64, or Intel EM64T 
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use CDROM installation media
cdrom
# Root password default is "redhat"
rootpw --iscrypted $1$JJuQiyTA$fbBF2fBqHB1P5PpFNy5f.1
# System authorization information
auth --useshadow --passalgo=md5
# Use text mode install
text
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on –noipv6
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
ignoredisk --only-use=sda
part /boot --fstype="ext4" --size=1024
part swap --recommended
part / --fstype="ext4" --grow --size=1
%packages
@additional-devel
@base
@core
@debugging
@basic-desktop
@desktop-debugging
@desktop-platform
@desktop-platform-devel
@development
@directory-client
@eclipse
@emacs
@fonts
@general-desktop
@graphical-admin-tools
@graphics
@input-methods
@internet-browser
@java-platform
@legacy-x
@network-file-system-client
@performance
@perl-runtime
@print-client
@remote-desktop-clients
@server-platform
@server-platform-devel
@server-policy
@tex
@technical-writing
@virtualization
@virtualization-client
@virtualization-platform
@workstation-policy
@x11
libgcrypt-devel
libXinerama-devel
openmotif-devel
libXmu-devel
xorg-x11-proto-devel
startup-notification-devel
libgnomeui-devel
libbonobo-devel
junit
libXau-devel
libXrandr-devel
popt-devel
gnome-python2-desktop
libdrm-devel
libxslt-devel
libglade2-devel
gnutls-devel
mtools
pax
python-dmidecode
oddjob
wodim
sgpio
genisoimage
device-mapper-persistent-data
systemtap-client
abrt-gui
desktop-file-utils
ant
rpmdevtools
jpackage-utils
rpmlint
samba-winbind
certmonger
pam_krb5
krb5-workstation
netpbm-progs
openmotif
libXmu
libXp
perl-DBD-SQLite
libvirt-java
%end

6.让系统从kickstart配置启动安装

[root@localhost OS]# vim /data/OS/isolinux/isolinux.cfg #备注这里需要给执行权限,才可以编辑,默认只读;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
default ks
prompt 1
timeout 60
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
label linux
kernel vmlinuz
append initrd=initrd.img
label text
kernel vmlinuz
append initrd=initrd.img text
label ks
kernel vmlinuz
append ks=cdrom:/isolinux/ks.cfg initrd=initrd.img
label local
localboot 1
label memtest86
kernel memtest
append -

7.生成rpm包的依赖关系

[root@localhost ~]# cd /data/OS/
[root@localhost OS]# createrepo -g repodata/-comps.xml /data/OS/
[root@localhost OS]# declare -x discinfo=head -1 .discinfo
[root@localhost OS]# createrepo -u “media://$discinfo” -g repodata/
-comps.xml /data/OS/

8.生成ISO镜像文件

[root@localhost ~]# cd /data/OS/
[root@localhost OS]# mkisofs -R -J -T -r -l -d -joliet-long -allow-multidot
-allow-leading-dots -no-bak -o /data/CentOS-6.7-x86_64.iso
-b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot
-boot-load-size 4 -boot-info-table /data/OS

9.生成MD5校验码

[root@localhost ~]# implantisomd5 /data/CentOS-6.3-x86_64.iso

10.测试

转载 https://www.cnblogs.com/vconlln/p/17065420.html

Archlinux安装与美化全流程

本文是自己写的并且搬运少部分https://arch.icekylin.online/prologue.html的内容

一. 镜像制作#

1. 下载#

Arch官方下载界面

阿里云镜像站下载

注意:官网下载页面下拉可以看多很多国家的镜像源!
⚠️ 注意:

请确保下载最新的安装镜像!因为 archlinux 是滚动发行版,不存在使用旧的安装镜像安装旧版本的说法。

2.镜像烧录#

准备一个 2G 以上的 U 盘,刻录一个安装盘。

2.1 Windows#

Windows 下推荐使用 Ventoy、Rufus 或者 Power ISOEULA 进行 U 盘刻录。三者皆为免费使用的软件。具体操作请自行查阅,都非常简单除此之外,如果你还嫌麻烦,还可以使用更为简单的安装盘制作工具 balenaEtcher。

2.2 Linux#

Linux 下同样可以使用 Ventoy 和 balenaEtcher,具体步骤可参阅 Ventoy(推荐) 以及 balenaEtcher。

也可以直接用 dd 命令进行刻录,具体步骤可参阅 dd 命令。

下面是使用 Rufus 进行镜像烧录

下载好 Rufus 后打开,插入要写入的U盘

然后选择要烧录系统的U盘(设备没有可选项?勾上显示USB外置硬盘即可!)

选择要烧录的镜像

分区类型选择GPT格式

目标系统类型选择UEFI

文件系统选择FAT

点击开始并以ISO镜像模式写入即开始镜像烧录

注意:烧录镜像默认会格式化U盘,请提前备份好数据!

二. USB启动安装#

1.启动到 Live 环境#

根据ArchWiki介绍,Arch是不支持安全启动的,而一般电脑默认开启安全启动,所以需要先到BIOS里面关闭安全启动( Secure Boot ),注意需要先关闭Windows的快速启动。

#关闭 BIOS 设置中的 Secure Boot
在类似名为 security(安全)的选项卡中,找到一项名为Secure Boot(安全启动,名称可能略有差异)的选项,选择 Disable 将其禁用。
设置好以后将刚才烧录的U盘插入电脑,然后开机,在开机的时候,按下 F2 / F8 / F10 / DEL 等(取决与你的主板型号,具体请查阅你主板的相关信息)按键,进入主板的 BIOS 设置界面。进入Live环境。选择第一项 Arch Linux install medium (x86_64, UEFI) 开始加载安装程序,如果不是类似界面,请检查BIOS设置或者U盘烧录是否正确。

正式进入 Arch 的 U盘系统后,对于没有怎么接触过Arch的人可能比较惊讶,为什么不是图形界面?没错,Arch 安装镜像只包含了系统一些基础组件,并没有图形界面,需要用户安装好系统之后自行安装,这样虽然麻烦,但是却给了用户更多的选择,可定制化程度更高。

2.正式安装#

2.1 禁用 reflector 服务#

2020 年,archlinux 安装镜像中加入了 reflector 服务,它会自己更新 mirrorlist(软件包管理器 pacman 的软件源)。在特定情况下,它会误删某些有用的源信息。这里进入安装环境后的第一件事就是将其禁用。也许它是一个好用的工具,但是很明显,因为地理上造成的特殊网络环境,这项服务并不适合启用。

1.通过以下命令将该服务禁用:

systemctl stop reflector.service
2.通过以下命令查看该服务是否被禁用,按下 q 退出结果输出:

systemctl status reflector.service

2.2 检查是否UEFI启动#

ArchLinux 只支持UEFI模式启动的电脑,所以第一步便是检查当前电脑是否为UEFI启动,在终端输入以下命令。如果出现大量文件则正常否则该电脑可能不支持安装ArchLinux。

ls /sys/firmware/efi/efivars

提示:如果没有报错就是支持UEFI

若输出了一堆东西(efi 变量),则说明已在 UEFI 模式。否则请确认你的启动方式是否为 UEFI。

2.3 连接网络#

防止网卡被禁用,使用以下命令解除网卡禁用:

rfkill unblock all
usb直连:ArchLinux安装需要下载一些软件,需要保证网络通畅,ArchLinux不会默认连接网络,建议手机开usb热点电脑连接,不用额外配置。

wifi 连接:输入 iwctl 进入wifi连接界面:

#是否启用了网络接口
ip link
#执行iwctl命令,进入交互式命令行
iwctl
————-下面为iwctl界面,不同于终端———–
[iwd] help # 输入help回车可以查看使用说明
[iwd] device list # 回车后可以查看当前网卡设备,一般为 wlan0
[iwd] station scan # 替换为上面的网卡设备,这条命令可以让网卡扫描wifi设备
[iwd] station get-networks # 回车后可以显示当前可连接网络,列出所有 wifi 网络
[iwd] station connect # 连接wifi, 为上面获取的wifi名称,注意这里无法输入中文。回车后输入密码即可
password: # 如果wifi为加密wifi,输入密码回车
[iwd] exit或者quit # 退出 wifi 连接界面
测试网络是否连接成功:

ping www.baidu.com -n

2.4 更新系统时间#

更新系统时间是有必要的,因为下载软件是服务器会验证系统时间,如果时间不正确,可能出现下载失败的情况,输入以下命令同步系统时间为准确时间:

timedatectl set-ntp true # 将系统时间与网络时间进行同步
timedatectl status # 查看系统时间状态,检查是否成功 看到(system clock synchronized :yes)这一句就是成功了

2.5 换源#

为保证安全与方便,Linux系统绝大多数软件都是在官方网站下载的,但是ArchLinux官方网站在国外,国内访问的话有点慢,国内有专门的镜像站可以直接从国内服务器下载软件包,就相当于在官网下载的并且镜像站都是每天更新,软件包也是最新的。

ℹ️ 提示

如果不会使用 vim 编辑器,请参阅 这里。vim 编辑器在安装和配置系统的过程中还需要使用多次。

备份原来的配置文件

cp -a /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak

编辑配置文件

vim /etc/pacman.d/mirrorlist

—————下面为vim操作,不同于终端————-

找到第一个 Server=… 的行在该行上一行写入以下内容

Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch # 中国科学技术大学开源镜像站
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch # 清华大学开源软件镜像站
Server = https://repo.huaweicloud.com/archlinux/$repo/os/$arch # 华为开源镜像站
Server = http://mirror.lzu.edu.cn/archlinux/$repo/os/$arch # 兰州大学开源镜像站
Server = http://mirrors.aliyun.com/archlinux/$repo/os/$arch # 阿里云镜像站

————————————————–

#也可以按/,搜索China,找到中科大的镜像源,然后2dd 剪切2行,再按GG回到第一行,按 p 粘贴
更新软件包

pacman -Syy

2.6 硬盘分区#

分区就是为了上面讲到的挂载,不同分区有不同的大小,呈现在文件系统里面就是不同目录有不同大小,下面是我安装 ArchLinux 时的分区情况:

efi + gpt

/分区: 150G 挂载目录: / 类型:Linux filesystem 作用:存放系统其他文件
/home分区: 300G 挂载目录:/home 类型:Linux Home 作用:存放用户文件,/home/用户名 为指定用户根目录
boot分区: 1G 挂载目录: /boot 类型:EFI System 作用:引导文件存放
swap分区: 16G 挂载目录:无 类型:Linux Swap 作用:系统恢复分区,系统挂起或内存不足时可能会被当作 ROM 使用

biso + mbr

/分区: 150G 挂载目录: / 类型:Linux 作用:存放系统其他文件
/home分区: 300G 挂载目录:/home 类型:Linux 作用:存放用户文件,/home/用户名 为指定用户根目录
swap分区: 16G 挂载目录:无 类型:Linux Swap 作用:系统恢复分区,系统挂起或内存不足时可能会被当作 ROM 使用
自己可以根据自己的具体情况合理分配,不过我还是建议 /boot 分区不小于800M,/分区不小于30G,这是Arch官方推荐情况。

下面命令用来查看系统的分区情况:

#查看磁盘分区
lsblk
#分区
fdisk -l
我的ArchLinux安装到 /dev/nvme0n1 (后面的p1 p2这些就是分区,外接U盘一般为/dev/sdx1 /dev/sdx2等),输入 cfdisk /dev/nvme0n1 进入分区界面

cfdisk /dev/nvme0n1

———————-cfdisk界面———————

cfdisk 是图形化的分区,比fdisk简单很多

下面有一行操作文件,通过左右方向键可以移动到不同选项。上下方向键可以选择不同分区进行操作

[New]选项为新建分区,将方向键选择到未分配的分区,选择[New]选项,回车后会提示新分区大小,输入大小即可创建一个新的分区

[Quit]可以退出 cfdisk ,并且不保存修改,也就是之前做的操作一律作废

[Help]选项可以查看 cfdisk 帮助

[Write]选项才是真的执行写入操作,使用后会对操作的磁盘执行写入,以前做的修改会生效

[Type]选项可以改变分区类型,boot分区选择EFI分区类型,根分区和home分区选ext4类型,swap分区选择Linux swap类型

分区可以按照上面列出的方案,swap可以不要,但是 boot分区、根分区和home分区是必须的。分好后记得选择 [Write] 写入之后再选择 [Quit] 退出,分区错误可以选择 [Delete] 删除分区之后重新分配,写入前请再三检查,特别是选择双系统安装的,不要把其他系统数据删除了。分区完成后输入 fdisk -l 查看分区。

2.7 格式化分区#

上面的操作只是分区,需要进行格式化,不同分区需要不同的格式。格式化分区会删除所有数据,千万小心操作!

一般分区都有跟分区(/)、交换分区(swap)、引导分区(boot)

格式化根分区和home分区:根分区和home分区都是Linux常见的 ext4 格式

Btrfs格式可以看这个

为你刚才分区时指定的分区,如果忘记可以使用 fdisk -l 查看

mkfs.ext4 /dev/

例如:

mkfs.ext4 /dev/nvme0n1p1

mkfs.ext4 /dev/nvme0n1p2

格式化boot分区:引导分区采用的是FAT格式

为你刚才分区时指定的分区,如果忘记可以使用 fdisk -l 查看

mkfs.fat -F 32 /dev/ 或者 mkfs.vfat /dev/sda1

例如:

mkfs.fat -F 32 /dev/nvme0n1p3

格式化swap分区:交换分区不需要挂载,采用特定格式

mkswap /dev/

例如:

mkswap /dev/nvme0n1p4

2.8 挂载分区#

根据上面的分区方案,将不同分区挂载到不同目录

假设分区方案为:

根分区 -> / -> /dev/nvme0n1p1

home分区 -> /home -> /dev/nvme0n1p2

boot分区 -> /boot -> /dev/nvme0n1p3

swap分区 -> 不挂载 -> /dev/nvme0n1p4

Linux分区由根分区开始,所以必须先挂载根目录 才能挂载其他目录,然后创建文件夹,挂载

挂载 / 目录

mount /dev/nvme0n1p1 /mnt

创建 /home 目录

mkdir /mnt/home
mount /dev/nvme0n1p2 /mnt/home # 挂载 /home 目录

创建 /mnt/boot 目录

mkdir /mnt/boot
mount /dev/nvme0n1p3 /mnt/boot # 挂载 /mnt/boot 目录

挂载交换分区

swapon /dev/nvme0n1p4
使用 df 命令复查挂载情况:

df -h
使用 free 命令复查 Swap 分区挂载情况:

free -h # -h 选项会使输出以人类可读的单位显示

2.9 安装系统#

1.主要安装基本系统和几个待会需要用到的工具。等待安装完成,如果没有报错可以进行下一步,通过如下命令使用 pacstrap 脚本安装基础包:

#往/mnt目录里安装系统
#其中最基础的四个包是base base-devel linux linux-firmware
#linux-lts (lts:稳定版)

如果内核安装了稳定版,那么独显也要是稳定版的,要不然就会发生问题(我也不知道什么问题)

pacstrap /mnt base base-devel linux linux-firmware
vim git dhcpcd e2fsprogs iwd
如果用了旧版镜像导致无法下载,一般显示GDP密钥出错,出现“User is unknown trust, installation failed“。先要安装最新密钥pacman -S archlinux-keyring。如果不是这个问题,就更新一下签名:pacman-key –refresh-keys

📑 命令参数说明:

base-devel —— base-devel 在 AUR 包的安装过程中是必须用到的
linux —— 内核软件包,这里建议先不要替换为其它内核
2.通过如下命令使用 pacstrap 脚本安装其它必要的功能性软件:

pacstrap /mnt dhcpcd iwd vim sudo bash bash-completions ntfs-3g gvfs-mtp
📑 命令参数说明:

bash —— bash-completions 如果你是 zsh 的爱好者,请把这两个包换成zsh-completion

2.10 生成文件系统表#

fstab 用来定义磁盘分区。它是 Linux 系统中重要的文件之一。使用 genfstab 自动根据当前挂载情况生成并写入 fstab 文件。文件系统表主要用于系统启动时自动挂载分区,不然系统无法正常启动!执行以下命令生成

生成 fstab文件 (用 -U-L 选项设置 UUID 或卷标)

efi + gpt

genfstab -U /mnt >> /mnt/etc/fstab

biso + mbr

genfstab -p /mnt >> /mnt/etc/fstab

查看是否生成

cat /mnt/etc/fstab
到这一步基本系统安装已经完成,但是还没有对系统进行配置,所以现在还没到关机重启的时候。执行以下命令进入到我们安装的系统,对系统进行配置

arch-chroot /mnt
此时,原来安装盘下的 /mnt 目录就变成了新系统的 / 目录。同时,可以发现命令行的提示符颜色和样式也发生了改变。

2.11 设置时区#

设置上海为时区,并同步硬件时钟

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

同步硬件时钟

hwclock –systohc

2.12 本地化#

程序和库如果需要本地化,需要依赖 local区域设置 ,local明确规定了地域、货币、时区日期的格式、字符排列方式和其他本地化标准。有两种办法,任选方案(1)和(2)中一个就行,推荐使用方法(1)

(1)在这两个文件设置:locale.gen 与 locale.conf。

编辑vim /etc/locale.gen,然后去掉 en_US.UTF-8 UTF-8 以及 zh_CN.UTF-8 UTF-8 行前的注释符号(#):

接着执行 locale-gen 以生成 locale 信息:

更新locale

locale-gen
然后创建 locale.conf 文件,并编辑设定 LANG 变量,比如:

vim /etc/locale.conf
LANG=en_US.UTF-8
(2)在这两个文件设置:locale.gen 与 locale.conf。

先生成 local 信息:

取消注释

sed -i ‘s/^#en_US.UTF-8/en_US.UTF-8/‘ /etc/locale.gen
sed -i ‘s/^#zh_CN.UTF-8/zh_CN.UTF-8/‘ /etc/locale.gen

生成 Local

locale-gen
创建 locale.conf 文件,并编辑设定 LANG 变量

这里不建议将 en_US.UTF-8 改为zh_CN.UTF-8 ,这样会导致终端乱码!

echo “LANG=en_US.UTF-8” >> /etc/locale.conf
echo “LANG=en_US.UTF-8” >> /etc/profile

2.13 主机名与hosts配置#

这里可以换成自己想要的名字,将主机名写入/etc/hostname

echo “ArchLinux” >> /etc/hostname

将 下面hostname换成自己的主机名,与 /etc/hostname 里面的名字一样

echo -e “127.0.0.1 localhost\n::1 localhost\n127.0.1.1 ArchLinux.localdomain ArchLinux” >> /etc/hosts
如果不想使用命令,也可以直接用vim创建文件:

利用vim创建hostname文件:

vim /etc/hostname
ArchLinux(主机名)
创建hosts文件:

vim /etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.1.1 ArchLinux.localdomain ArchLinux

2.14 设置root密码#

虽然现在可以使用root,但是新系统里面我们还不知道root的密码,使用下面的命令更改root密码

会提示输入两次密码,关乎系统安全请牢记

passwd root

2.15 安装引导程序#

需要安装 Linux 引导加载程序,才能在安装后启动系统

安装intel或amd:

查看cpu型号

cat /proc/cpuinfo

amd 电脑安装

pacman -S amd-ucode

intel 电脑安装

pacman -S intel-ucode
配置grub:

Arch使用grub2管理引导,安装相关程序

efi + gpt

pacman -S grub efibootmgr efivar os-prober

biso + mbr

pacman -S grub efivar os-prober
📑 命令参数说明:

-S 选项后指定要通过 pacman:

包管理器安装的包:

grub —— 启动引导器
efibootmgr —— efibootmgr 被 grub 脚本用来将启动项写入 NVRAM
os-prober —— 为了能够引导 win10,需要安装 os-prober 以检测到它
安装引导:

–bootloader-id=name 其中 name 可以更改为自己想要的名称,建议简短明确

efi + gpt

grub-install –target=x86_64-efi –efi-directory=/boot –bootloader-id=Arch –recheck

biso + mbr

grub-install –target=i386-pc /dev/nvme0n1
#说明
grub-install 安装grub

–target=x86_64-efi 目标架构x86架构64位 efi启动方式 若不确定使用uname -a 可以查看

–efi-directory=/boot 就是我sda1挂载的/boot位置,将 grubx64.efi 安装到之前的指定位置(EFI 分区)

–bootloader-id=Arch 这里的Arch名字可以自行更改 甚至这一段都可以不用写
接下来使用 vim 编辑 /etc/default/grub 文件:

vim /etc/default/grub
进行如下修改:

去掉 GRUB_CMDLINE_LINUX_DEFAULT 一行中最后的 quiet 参数
把 loglevel 的数值从 3 改成 5。这样是为了后续如果出现系统错误,方便排错
加入 nowatchdog 参数,这可以显著提高开关机速度
grub2默认禁用了 os-prober ,如果你是选择的双系统或多系统安装,需要手动开启该选项,os-prober 可以检查其他硬盘上的其他系统引导,如果不开启,可能无法识别其他系统,如果你是全盘单系统安装,可以忽略这个选项

需要开启 os-prober 执行下面命令

echo “GRUB_DISABLE_OS_PROBER=false” >> /etc/default/grub
生成引导配置文件:

grub-mkconfig -o /boot/grub/grub.cfg
如果出现错误,请回头检查命令是否输入错误或者配置是否出错,安装时的一点错误都可能成为你无法开机的原因或者以后使用时的bug。如果检查没有问题,那么我们就可以进行最后的一点设置了。

2.16 配置开机启动项#

ArchLinux 使用 systemd 管理后台服务,我们希望开机之后自动连接网络,所以需要下载联网程序并设置开机自启动:

下载wifi 管理

pacman -S dhcpcd iwd networkmanager
pacman -S vim sudo bash-completion iproute2 neofetch yay zsh fish

设置开机自启动

systemctl enable dhcpcd
systemctl enable iwd
systemctl enable NetworkManager

2.17 新建用户#

开机之后会显示一个终端的登陆界面,由于我们刚才安装时没有新建用户,默认只有一个root用户,所以我们直接使用 root 和 root 密码登录。运行以下命令新建用户:

为你自己的用户名,登录用,注意用户名必须全小写

useradd -m -G wheel -s /bin/bash

设置用户密码

passwd
📑 命令参数说明:

-m 创建用户的同时创建用户家目录
-G选项后指定附加组
wheel —— wheel 附加组可 sudo 进行提权
-s 选项后指定 shell 程序
myusername —— 用户名(请自定义,但不要包含空格和特殊字符)
使用 vim 编辑器通过 visudo 命令编辑 sudoers 文件:

EDITOR=vim visudo # 这里需要显式的指定编辑器,因为上面的环境变量还未生效
找到如下这样的一行,把前面的注释符号 # 去掉:

#%wheel ALL=(ALL) ALL
📑 这里稍微解释一下:

%wheel —— 用户名或用户组,此处则代表是 wheel 组,% 是用户组的前缀
ALL= —— 主机名,此处则代表在所有主机上都生效(如果把同样的 sudoers 文件下发到了多个主机上)
(ALL) —— 用户名,此处则代表可以成为任意目标用户
最后的 ALL —— 代表可以执行任意命令

2.18 结束#

到了这里ArchLinux的安装也就到了尾声,接下来你只需要退出安装程序,然后取消挂载分区,重启选择Arch系统就可以进入ArchLinux了

退出arch root 安装环境

exit

取消挂载

umount -R /mnt

重启并拔出U盘

reboot

三. 安装图形界面 KDE#

没插网线重启后wifi记得重新连接!

设置开机自启并立即启动 dhcp 服务,即可连接网络:

systemctl enable –now dhcpcd # 设置开机自启并立即启动 dhcp 服务
ping www.baidu.com # 测试网络连接
喜欢i3的可以看这篇文章

1.窗口图形系统 Xorg#

开机之后会显示一个终端的登陆界面,开始安装kde。必须需要提一句,安装桌面环境需要在普通用户下安装,如果你刚创建完用户,还请重启后用普通用户登录在进行接下来的教程。

窗口图形系统有两种选择——Xorg和Wayland。虽然可以使用 Wayland 启动 KDE Plasma,但仍存在一些缺失的功能和已知问题。建议使用 Xorg 以获得最完整和稳定的体验。

执行下面命令安装 Xorg 的一些组件(提示全部回车确认):

sudo pacman -S xorg-server xorg-apps xorg-xinit xorg-xclock xterm
安装完成后,可执行 startx 命令测试 Xorg 是否正常工作。(执行 exit 退出 Xorg 测试界面)

2.KDE Plasma#

执行下面命令安装 KDE Plasma(提示全部回车确认):

sudo pacman -S plasma

如果你想一次性安装全部 KDE 应用,可执行下面命令(可选)

sudo pacman -S kde-applications

下面是安装个人喜欢的一些 KDE 应用

sudo pacman -S dolphin konsole kate kdeconnect ark gwenview filelight kcalc kdenlive krita kdiskmark

(KDE 全部应用详见 https://apps.kde.org/zh-cn/)

3. 启用登录管理器 SDDM#

sddm 开机自启

sudo systemctl enable sddm

启用 SDDM,进入桌面环境

sudo systemctl start sddm
进入桌面后、可通过Alt + Enter快捷键弹出全局搜索框,可以快速搜索打开想要打开的应用,本人打开应用程序99%都是使用这种方式,非常快速便捷!!!

4.设置网络管理器#

如果之前网络是由iwd终端连接wifi的,此刻需要在 iwd 终端忘记之前的连接。否则每次开机都会终端自动连接Wifi导致页面网络管理器不可用

sudo systemctl disable iwd # 确保 iwd 开机处于关闭状态,因为其无线连接会与 NetworkManager 冲突
sudo systemctl stop iwd # 立即关闭 iwd
sudo systemctl enable –now NetworkManager # 确保先启动 NetworkManager,并进行网络连接。若 iwd 已经与 NetworkManager 冲突,则执行完上一步重启一下电脑即可
ping www.bilibili.com # 测试网络连通性
iwd

列出以前连接过的网络

[iwd]# known-networks list

忘记已知的网络

[iwd]# known-networks 网络名 forget

最后点击页面的网络图标连接网络即可

5.浏览器及字体下载#

进入桌面环境后,按 Ctrl+Alt+T 可打开终端。执行下面命令安装 Firefox

sudo pacman -S firefox

一次性安装常用中文字体

wqy-microhei # 文泉驿
adobe-source-sans-fonts # 思源黑体
harmonyos-sans-git # 鸿蒙黑体
ttf-misans # MiSans

sudo pacman -S wqy-microhei wqy-microhei-lite wqy-bitmapfont wqy-zenhei ttf-arphic-ukai adobe-source-han-sans-cn-fonts adobe-source-han-serif-cn-fonts

开发人员最喜欢的字体没有之一

yay -S ttf-fira-code

6.KDE 界面改成中文#

打开 System Settings -> Regional Settings -> Language(modify)

点击 Add More languages,往下翻找到简体中文点击 Add

点击简体中文一栏右侧的向上箭头,将简体中文的优先级置顶,然后点击 apply

点击左侧的 Formats,然后点击右侧的 Region

在搜索框里输入 zh_CN,点击 简体中文(中国)

然后再点击右下角的apply。注销后重新登录,即可看到中文界面

7. 设置显示器全局缩放率#

现在越来越多的人开始用高分屏了,设置一个合适的全局缩放率就很有必要了。
在系统设置的显卡与显示器 -> 显示器配置中可以调节全局缩放率(注销后重新登录生效)。

四. 基本设置#

1. 中文输入法#

安装字体

英文字体

pacman -S ttf-dejavu

文泉驿正黑矢量字体

pacman -S wqy-zenhei

pacman -S wqy-microhei

Emoji 字体

pacman -S noto-fonts-emoji
配置

Arch Linux可以安装安装fcitx5 实现输入中文,具体步骤如下(一路回车即可)

sudo pacman -S fcitx5-rime # 对经典的 Rime IME 输入法的包装,内置了繁体中文和简体中文的支持
sudo pacman -S fcitx5-im # 输入法基础包组
sudo pacman -S fcitx5-chinese-addons # 官方中文输入引擎
sudo pacman -S fcitx5-anthy # 日文输入引擎
sudo pacman -S fcitx5-pinyin-moegirl # 萌娘百科词库。二刺猿必备
sudo pacman -S fcitx5-pinyin-zhwiki # 中文维基百科创建的词库
sudo pacman -S fcitx5-material-color # 输入法主题

fcitx5-chinese-addons 包含了大量中文输入方式:拼音、双拼、五笔拼音、自然码、仓颉、冰蟾全息、二笔等

然后在环境变量配置文件/etc/environment中添加如下内容

/etc/environment

GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx

配置完成之后重启电脑或者注销

然后配置自动启动,提供以下3种方法,第一个不行,试第2个,然后第3个

1. 如果,支持XDG桌面环境,例如KDE,GNOME, Xfce,默认重启后即可

2. 在~/.config/autostart目录下添加fcitx-autostart.desktop文件,

可以从目录etc/xdg/autostart中复制

3.对于i3-wm,可以在配置文件~/.config/i3/config中添加如下代码

exec_always –no-startup-id fcitx5

输入法模块:

在只安装 fcitx5 和 输入法引擎 的情况下您可能依然可以正常输入

但是安装对应的 输入法模块 后您将获得更加舒适的体验:

fcitx5-qt # 对 Qt5 程序的支持
fcitx5-gtk # 对 GTK 程序的支持
fcitx5-qt4-gitAUR # 对 Qt4 程序的支持

提示: 一般情况下,只安装 fcitx5-qt 和 fcitx5-gtk 就行了

词库

对于 Fcitx5 的中文输入法, 目前在仓库里提供了数个词库:

fcitx5-pinyin-zhwiki # felixonmars 根据中文维基百科创建的词库。适用于 拼音输入法

idea不能输入中文的问题

在IDEA的bin目录下的idea.sh文件的前面加上

export XIM=”fcitx”
export XIM_PROGRAM=”fcitx”
export XMODIFIERS=”@im=fcitx”
export GTK_IM_MODULE=”fcitx”
export QT_IM_MODULE=”fcitx”
添加中文输入法

setting -> 语言和区域设置 -> 输入法

去掉默认的输入法

添加输入法并应用(默认通过快捷键 ctrl + space 切换中英文)

Pinyin
键盘-英语(美国)

2. 蓝牙#

安装蓝牙并启动蓝牙服务

sudo pacman -S bluez bluez-utils
sudo systemctl enable bluetooth.service
sudo systemctl start bluetooth.service

使用Bluetoothctl进入蓝牙控制台

Bluez是Linux系统上的蓝牙协议栈,自带了很多有用的工具,Bluetoothctl就是其一。

bluetoothctl –help # 查看帮助命令
bluetoothctl -v # 查看蓝牙版本

使用Bluetoothctl连接蓝牙案例

bluetoothctl # 进入蓝牙管理工具环境

[bluetooth]# power on 打开蓝牙

[bluetooth]# agent on 开启

[bluetooth]# scan on 扫描蓝牙设备

[bluetooth]# pair xx:xx:xx:… 配对该设备

[bluetooth]# trust xx:xx:xx:… 信任该设备

[bluetooth]# connect xx:xx:… 连接该设备

[bluetooth]# disconnect xx:xx:… 断开蓝牙

[bluetooth]# help 查看帮助信息

[bluetooth]# show 查看本机蓝牙信息

[bluetooth]# discoverable yes 设置蓝牙可被发现

[bluetooth]# info xx:xx:xx:… 查看该蓝牙设备的信息

安装蓝牙音频

sudo pacman -S pulseaudio-bluetooth

蓝牙图形化管理工具安装

sudo pacman -S bluedevil

3. pacman 32位运行库与ArchLinuxCN库的支持,以及一些镜像源#

编辑配置文件,添加以下软件源

vim /etc/pacman.d/mirrorlist

—————下面为vim操作,不同于终端————-

中科大源

Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch

阿里源

Server = http://mirrors.aliyun.com/archlinux/$repo/os/$arch

清华源

Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch

华为源

Server = https://repo.huaweicloud.com/archlinux/$repo/os/$arch

163源 (i686 和 x86_64)

Server = http://mirrors.163.com/archlinux/$repo/os/i686
为了系统的稳定,官方关闭了32位软件以及aur软件库,但是仅仅只依靠官方源中的软件时不够用的,这里我们要打开这两个库

sudo vim /etc/pacman.conf
multilib
去掉[multilib]一节中两行的注释,来开启 32 位库支持。

#取消掉 # 号
[multilib]
Include = /etc/pacman.d/mirrorlist
Arch Linux CN
在文档结尾处加入下面的文字,来开启 ArchLinuxCN 源。

[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
执行 sudo pacman -Syyu 更新pacman数据库

然后需要安装 archlinuxcn-keyring 包以导入 GPG key

sudo pacman -S archlinuxcn-keyring
有时候因为密钥环的问题,导致这一步安装报错,可以依次执行下面的命令

sudo pacman -Syyu
sudo pacman -S haveged
sudo pacman -Syu haveged
sudo systemctl start haveged
sudo systemctl enable haveged

sudo rm -fr /etc/pacman.d/gnupg
sudo pacman-key –init
sudo pacman-key –populate archlinux
sudo pacman-key –populate archlinuxcn

如果 系统长时间不更新,可能也会出现问题

更新密钥

pacman-key –refresh-keys

注意:keyserver如果是国外的更新很慢,以下是其他kerserker服务,可以指定更新服务器:

sudo pacman-key –refresh-keys –keyserver http://pgp.mit.edu
然后再重新安装,即可解决问题

最后安装 yay 用来下载archlinuxcn库中的软件

sudo pacman -S yay
BlackArch 镜像源
Arch Linux 添加 BlackArch 镜像源:

#Arch Linux 添加 BlackArch 镜像源
sudo vim /etc/pacman.conf

在最后面添加如下几行

[blackarch]
SigLevel = Never

国内镜像源

Server = https://mirrors.ustc.edu.cn/blackarch/$repo/os/$arch
#Server = https://mirrors.tuna.tsinghua.edu.cn/blackarch/$repo/os/$arch
安装 BlackArch GPG 密钥
sudo pacman -S blackarch-keyring
同时建议安装 blackarch-mirrorlist 包
yay -S blackarch-mirrorlist

取消当前所在区域的镜像源注释

sudo vim /etc/pacman.d/blackarch-mirrorlist

如:

China

Server = https://mirror.sjtu.edu.cn/blackarch/$repo/os/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/blackarch/$repo/os/$arch
Server = https://mirrors.ustc.edu.cn/blackarch/$repo/os/$arch

修改 /etc/pacman.conf

sudo vim /etc/pacman.conf

重新修改 [blackarch] 让其优先使用 blackarch-mirrorlist

[blackarch]
#SigLevel = Never
#Server = https://mirrors.ustc.edu.cn/blackarch/$repo/os/$arch
Include = /etc/pacman.d/blackarch-mirrorlist
Chaotic-AUR
Chaotic-AUR 中包含一些经过编译的 AUR 软件

导入 Chaotic-AUR 的 Pacman 密钥并安装 mirrorlist

pacman-key –recv-key FBA220DFC880C036 –keyserver keyserver.ubuntu.com
pacman-key –lsign-key FBA220DFC880C036
pacman -U ‘https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst‘ ‘https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst
然后在 /etc/pacman.conf 最下方加入以下两行

[chaotic-aur]
Include = /etc/pacman.d/chaotic-mirrorlist
然后更新软件源

sudo pacman -Sy
如果速度过慢可以尝试使用反代服务

Clansty
同样也是一些编译后的 AUR 软件

在 /etc/pacman.conf 最下方加入:

[Clansty]
SigLevel = Never
Server = https://repo.lwqwq.com/archlinux/$arch
Server = https://pacman.ltd/archlinux/$arch
Server = https://repo.clansty.com/archlinux/$arch
然后更新软件源

sudo pacman -Sy

4.安装 AUR(yay)(添加CN源之后可以之间安装yay,此步骤可以省略)#

官方仓库的软件实在是太少了, AUR(Arch 用户软件仓库,全称 Arch User Repository)里有许多软件。AUR 是为用户而建、由用户主导的 Arch 软件仓库。

从 AUR 安装软件包,需要先安装 AUR Helper,这里以最有名的 yay 为例。yay 是一个用 Go 语言开发的 AUR Helper,具有高级依赖解决、PKGBUILD 下载、AUR 包名自动补全、移除生成依赖等功能。添加archlinuxcn源之后使用下面命令安装 yay(Binary 版本,无需自己编译)

sudo pacman -S yay
底下是使用git下载

pacman -S –needed git base-devel
git clone https://aur.archlinux.org/yay-bin.git
cd yay-bin
makepkg -si
注意:执行 yay 的所有命令时,前面不需要加 sudo

5. pacman/yay 常用操作#

以下操作对 yay 同样适用

1.系统更新

对整个archLinux进行更新

pacman -Syu

如果你已经使用 pacman -Sy 将本地的包数据库与远程的仓库进行了同步,也可以只执行:

pacman -Su

如提示冲突,可强制更新(dd跳过所有检查)

pacman -Syudd

2.安装包

pacman -S 包名 # 你也可以同时安装多个包, 只需以空格分隔包名即可
pacman -Sy 包名 # 与上面命令不同的是,该命令将在同步包数据库后再执行安装
pacman -Sv 包名 # 在显示一些操作信息后执行安装
pacman -U 包名.tar.gz # 安装本地包,其扩展名为 pkg.tar.gz

3.删除包

pacman -R 包名 # 该命令将只删除包,不包含该包的依赖
pacman -Rs 包名 # 在删除包的同时,也将删除其依赖
pacman -Rd 包名 # 在删除包时不检查依赖

4.搜索包

pacman -Ss 关键字 # 这将搜索含关键字的包
pacman -Qi 包名 # 查看有关包的信息
pacman -Ql 包名 # 列出该包的文件

5.其他用法

sudo pacman -R $(pacman -Qdtq) # 清除系统中无用的包
pacman -Sw 包名 # 只下载包,不安装
pacman -Sc # Pacman下载的包文件位于 /var/cache/pacman/pkg/ 目录
# 该命令将清理未安装的包文件
pacman -Scc # 清理所有的缓存文件

6. pacman安装 常用软件#

openssh # ssh 链接远程服务器
peek # GIF录制
tree # 玩 Linux 的朋友都知道该命令
python-pip # Python 用户必备
neovim # vim 党福音
neofetch # 查看系统信息
screenkey # 显示按下的键
figlet # 生成一个 logo
iputils # 允许用户使用 ping 命令
wget # 下载工具
chromium # Chromium
firefox # Firefox
intellij-idea-community-edition # IntelliJ IDEA Community Edition
pycharm-community-edition # PyCharm Community Edition
libreoffice-fresh libreoffice-fresh-zh-cn # 办公套件LibreOffice

udisk2 udiskie : 自动挂载U盘修改

ntfs-3g : 读取ntfs格式磁盘

dolphin : 文件管理器

sudo pacman -S udisks2 udiskie ntfs-3g dolphin

开机自启自动挂载U盘

systemctl enable udisks2

启动 ssh 服务

systemctl start sshd
systemctl enable sshd

Virtualbox 安装与配置

需要安装linux-headers

sudo pacman -S linux-headers

确认linux内核版本,确保linux-headers的版本和linux版本相同

uname -r

安装 virtualbox,执行命令后,会提示选择安装virtualbox软件类型,选择virtualbox-host-dkms

sudo pacman -Syu virtualbox

安装virtualbox-guest-iso

sudo pacman -S virtualbox-guest-iso

把当前用户增加到vboxusers组

sudo usermod -G vboxusers -a myuser
#pip更换国内镜像源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
sudo pacman -S ntfs-3g # 使系统可以识别 NTFS 格式的硬盘
sudo pacman -S adobe-source-han-serif-cn-fonts wqy-zenhei # 安装几个开源中文字体。一般装上文泉驿就能解决大多 wine 应用中文方块的问题
sudo pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra # 安装谷歌开源字体及表情
sudo pacman -S firefox chromium # 安装常用的火狐、chromium 浏览器
sudo pacman -S ark # 压缩软件。在 dolphin 中可用右键解压压缩包
sudo pacman -S packagekit-qt5 packagekit appstream-qt appstream # 确保 Discover(软件中心)可用,需重启
sudo pacman -S gwenview # 图片查看器
sudo pacman -S steam # 游戏商店。稍后看完显卡驱动章节再使用

7. yay 常用软件#

安装 AUR 软件

yay -S 包名

使用 yay 安装下面软件之前,请先确保基础打包工具(base-devel)已经安装

yay -S base-devel

防火墙

yay -S firewalld
systemctl enable –now firewalld

常用 aur 软件

===> 编程软件

yay -S visual-studio-code-bin # Visual Studio Code
yay -S intellij-idea-ultimate-edition intellij-idea-ultimate-edition-jre # idea
yay -S pycharm-professional # PyCharm Professional
yay -S intellij-idea-ultimate-edition # IntelliJ IDEA Ultimate Edition

===> 浏览器

yay -S google-chrome # google 浏览器
yay -S microsoft-edge-stable-bin # edge 浏览器

===> 办公软件

yay -S wps-office-cn wps-office-mui-zh-cn ttf-wps-fonts # WPS Office

===> 社交软件

yay -S icalingua++ # Icalingua++(第三方Linux QQ)
yay -S deepin-wine-tim # win tim
yay -S deepin-wine-wechat # win 微信
yay -S com.tencent.weixin # 微信

===> 实用工具

yay -S wemeet-bin # 腾讯会议
yay -S utools # uTools搜索
yay -S flameshot # 火焰截图
yay -S motrix-bin # 下载工具
yay -S kdiskmark-git # 磁盘检测工具
yay -S gimp # 图像处理
yay -S kdenlive # 视频后期
yay -S baidunetdisk-electron # 百度盘
yay -S xunlei-bin # 迅雷
yay -S netease-cloud-music # 网易云
yay -S obs-studio # obs
yay -S p7zip # 压缩
yay -S unrar # 压缩
所有 AUR 软件可在 https://aur.archlinux.org/ 上查询。

8. 显卡驱动与双显卡切换#

首先,安装显卡驱动。mesa是所有开源显卡驱动的基础,一般都要安装。

查看显卡型号

自带核显

lspci |grep VGA

查看其它独显

lspci |grep -i nvida
这里,我们尽量给安装完整,有几大功能:OpenGL, vulkan, vaapi, vdpau, opencl. 32位的程序也要使用并安装相应的驱动 (请先更新pacman 32运行库)。系统是archlinux,用的官方内核。

Intel显卡驱动安装:

sudo pacman -S mesa xf86-video-intel vulkan-intel
sudo pacman -S libva-intel-driver libvdpau-va-gl intel-compute-runtime
sudo pacman -S lib32-vulkan-intel lib32-mesa intel-gpu-tools

mesa 3D driver

xf86-video-intel 2d driver

libva-intel-driver vaapi 视频硬解码库

libvdpau-va-gl vdpau 视频硬解码库,以vaapi为基础的翻译层

intel-compute-runtime opencl

intel-gpu-tools 用sudo intel_gpu_top观察Intel显卡负载

nvidia显卡驱动安装:(yay软件在archlinuxcn里面,添加源就可安装)

闭源驱动:

sudo pacman -S nvidia nvidia-prime nvidia-settings nvidia-utils opencl-nvidia
sudo pacman -S lib32-nvidia-utils lib32-opencl-nvidia libva-vdpau-driver

nvidia 内核所属,记得更新驱动也要更新linux内核:sudo pacman -Syu

nvidia-utils opengl, vulkan, vdpau

opencl-nvidia opencl, cuda driver

nvidia-prime 用”prime-run $cmd”启动程序运行于nvidia上

libva-vdpau-driver vaapi 视频硬解码库,以vdpau为基础的翻译层

开源驱动:(2d性能和闭源驱动相当,3d性能可能是闭源的一半,不支持opencl)

yay -S nouveau-fw
sudo pacman -S mesa xf86-video-nouveau lib32-mesa libva-mesa-driver mesa-vdpau

xf86-video-nouveau 2d driver

nouveau-fw nvidia官方firmware,视频硬解需要

libva-mesa-driver vaapi 视频硬解码库

mesa-vdpau vdpau 视频硬解码库

AMD显卡驱动安装:

sudo pacman -S mesa xf86-video-amdgpu vulkan-radeon libva-mesa-driver mesa-vdpau
sudo pacman -S opencl-mesa lib32-vulkan-radeon lib32-mesa

xf86-video-amdgpu 2d driver

vulkan-radeon vulkan

opencl-mesa opencl

开源驱动性能和闭源驱动差不了多少,就不考虑闭源。这方面AMD更好。

如果要在Linux下工作,那么不推荐买nvidia显卡;如果只是为了打游戏,那么推荐买nvidia显卡。轻度办公和游戏,核显足够了。看视频的话,整个多核心带核显CPU就行。

Virtualbox(显卡)驱动安装:

sudo pacman -S virtualbox-guest-utils mesa lib32-mesa
systemctl enable –now vboxservice
Vmware(显卡)驱动安装:

sudo pacman -S mesa xf86-video-vmware xf86-input-vmmouse open-vm-tools lib32-mesa
systemctl enable –now vmtoolsd
systemctl neable –now vmware-vmblock-fuse
硬件无关的opencl库:

sudo pacman -S pocl
驱动安装完了,但是不知道如何使用。建议先sudo mkinitcpio -P再重启后,才会启动驱动。

要检查驱动的功能,可以如下方法:

sudo pacman -S –needed vulkan-tools libva-utils vdpauinfo mesa-demos lib32-mesa-demos

64位的opengl信息

glxinfo -B

32位的opengl信息

glxinfo32 -B

使用glxinfo命令可以查看当前正在使用的显卡。

Intel

glxinfo | grep “OpenGL renderer”
OpenGL renderer string: Mesa Intel(R) UHD Graphics 630 (CFL GT2)

切换NVIDIA显卡后

glxinfo | grep “OpenGL renderer”
OpenGL renderer string: NVIDIA GeForce GTX 1050 Ti/PCIe/SSE2

vulkan信息汇总

vulkaninfo –summary

vaapi信息

vainfo # 注意:闭源nvidia驱动会导致该命令不可用

vdpau信息

vdpauinfo
此外,可能还需要切换显卡,要用这项功能,安装optimus-manager软件包:

具体详情参照Optimus-manager的GitHub页面

yay -S optimus-manager

命令行切换显卡

optimus-manager –switch nvidia # 切换到 Nvidia GPU
optimus-manager –switch integrated # 切换到集成 GPU 并关闭 Nvidia GPU
UI界面:我使用的是kde桌面环境,所以我的安装过程是

sudo pacman -S bbswitch
yay -S optimus-manager-qt-kde

安装完成后就可以在任务栏上找到Optimus Manager Qt这一项

右键可以切换显卡,之后会自动注销; 你也可以打开设置进行设置。

五. 触控板设置#

1.前言#

官网wiki

当前系统环境是 archlinux+kde plasma5,touchegg和libinput-gestures都可以触控板需求,但是在实际配置过程中touchegg存在很多问题一直都没能解决,而libinput-gestures基本没有太大的问题。所以使用libinput-gestures。

kde是X.Org桌面环境,aur上维护了一个基于X.Org Server的驱动xf86-input-libinput-git很方便。而下面所说的X11 client在我这里就是kde plasma5。

驱动程序libinput在linux生态提供了很多驱动,本文使用的驱动是libinput,它负责分析内核从输入设备得到的数据发送给桌面环境,桌面环境根据不同的数据进行反馈。

术语解释

touchpad:通常意义上的触摸板。
clickpad:指底部没有按钮的touchpad,参考clickpad。clickpad中通过不同手指数量的点击行为来模拟鼠标左键、中键、右键点击。这些都可以配置或者关闭。
click:点击,本文语境中之物理按钮的“按压”和“释放”。
Clickpad software button behavior:clickpad上软按钮的行为,详情见Clickpad software button behavior。

2.基本设置#

setting -> 输入设备 -> 触摸板

手指轻触 轻触点击、轻触拖拽
双指轻触 右击(三指轻触中键点击)

3.安装libinput 与 xdotool#

确保当前用户在输入组中具有读取触摸板设备的权限

sudo gpasswd -a $USER input

install basic libinput and xf86-input-libinput

sudo pacman -S libinput xf86-input-libinput

安装 xdotool 和 libinput-gestures

yay -S xdotool libinput-gestures

开机自动启动

libinput-gestures-setup autostart

试一下三指上下滑动成功了不,如果不成功就重启一下,如果重启了还不成功就用

sudo libinput-gestures

试一下,如果提示少依赖,根据提示sudo apt-get install + 提示依赖名

然后重新运行自动启动

4.配置#

libinput有两种配置方式:

使用配置文件的永久配置方式
使用xinput命令行工具,针对运行时(runtime)进行实时配置,主要用来调试。
libinput安装后默认的配置文件在/usr/share/X11/xorg.conf.d目录下,如何你安装多个驱动会存在多个文件:

ls /usr/share/X11/xorg.conf.d/
10-nvidia-drm-outputclass.conf 10-quirks.conf 40-libinput.conf 50-vmmouse.conf
这里安装了4个驱动所以会有4个配置文件,默认情况下kde会根据文件前缀数字的大小决定优先使用哪个配置文件,数字越大优先级越高。

我们需要把默认配置文件复制到/etc/X11/xorg.conf.d/目录下:

sudo cp /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/40-libinput.conf
下面是文件中touchpad部分的配置:

Section “InputClass”
Identifier “touchpad”
MatchIsTouchpad “on”
MatchDevicePath “/dev/input/event*”
Driver “libinput”
Option “Tapping” “on”
Option “ButtonMapping” “1 3 0 4 5 6 7”
Option “TappingButtonMap” “lmr”
Option “DisableWhileTyping” “on”
Option “TappingDrag” “on”
EndSection
详细参数和解释见libinput man page: based on X.Org input dirver,解释下几个重要的配置参数:

Option “Tapping” “on”:手指点击touchpad发送鼠标点击事件
Option “TappingButtonMap” “lmr”:1个手指点击对应鼠标左键,2个手指点击对应鼠标中键,3个鼠标点击对应鼠标右键
Option “ButtonMapping” “1 3 0 4 5 6 7”,按钮映射,详情见libinput#Button_Mapping,这里笔者关闭了3指对应的左键
Option “DisableWhileTyping” “on”:打字时不检测touchpad事件,防止用户不小心触碰touchpad引起不必要的影响
Option “TappingDrag” “on”:开启点击拖拽
调试

1.确定touchpad设备

终端输入:xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ ELAN962C:00 04F3:30F5 Mouse id=11 [slave pointer (2)]
⎜ ↳ ELAN962C:00 04F3:30F5 Touchpad id=12 [slave pointer (2)]
⎜ ↳ SYNA7813:00 06CB:1A1A id=13 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Video Bus id=8 [slave keyboard (3)]
↳ Power Button id=9 [slave keyboard (3)]
↳ HD Camera: HD Camera id=10 [slave keyboard (3)]
↳ Huawei WMI hotkeys id=14 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=15 [slave keyboard (3)]

2.查看touchpad的详细配置

这里面有一个值很重要Device Node (xxx):”/dev/input/event8”

后面使用libinput命令行时会用到这个路径

终端输入:xinput list-props “ELAN962C:00 04F3:30F5 Touchpad”

libinput Left Handed Enabled (328): 0
libinput Left Handed Enabled Default (329): 0
libinput Send Events Modes Available (299): 1, 1
libinput Send Events Mode Enabled (300): 0, 0
libinput Send Events Mode Enabled Default (301): 0, 0
Device Node (302): “/dev/input/event8”
Device Product ID (303): 1267, 12533
libinput Drag Lock Buttons (330):
libinput Horizontal Scroll Enabled (331): 1
libinput Scrolling Pixel Distance (332): 15
libinput Scrolling Pixel Distance Default (333): 15
libinput High Resolution Wheel Scroll Enabled (334): 1

3.使用libinput debug-events 监控touchpad事件

终端输入:libinput debug-events –device /dev/input/event8
-event8 DEVICE_ADDED ELAN962C:00 04F3:30F5 Touchpad seat0 default group1 cap:pg size 115x70mm tap(dl off) left scroll-nat scroll-2fg-edge click-buttonareas-clickfinger dwt-on dwtp-on
event8 POINTER_MOTION +0.023s -0.40/ 0.62 ( -2.00/ +3.10)
event8 POINTER_MOTION +0.031s -1.29/ 2.67 ( -4.00/ +8.26)
event8 POINTER_MOTION +0.039s -4.28/ 6.80 (-13.00/+20.65)
event8 POINTER_MOTION +0.047s -8.56/ 12.72 (-25.00/+37.16)
4.使用libinput debug-gui 监控touchpad事件
这里可能会报没有 libgtk-4.so.1 的错误,安装gtk4即可:yay -S gtk4

这时会出现一个GUI画面帮助检测

libinput debug-gui –device /dev/input/event8
libinput-gestures 配置
配置好touchpad和手势后,下面利用 libinput-gestures 来解析touchpad的数据,然后执行相关的操作。这里主要用到xdotool,xdotool是模拟键盘/鼠标输入和窗口管理等的命令行工具。libinput-gestures依赖xdotool。

libinput-gestures安装后会有默认的配置,位置在/etc/libinput-gestures.conf,用户可以在~/.config/libinput-gestures.conf配置自己的配置。这里我根据自己的需要修改了相关配置如下:

Switch to next desktop

gesture swipe right 4 xdotool key ctrl+F1

Switch to prev desktop

gesture swipe left 4 xdotool key ctrl+F2

Present windows (current desktop)

gesture swipe down 3 xdotool key ctrl+F9

Present windows (all desktop)

gesture swipe down 4 xdotool key ctrl+F10

Show desktop

gesture swipe up 3 xdotool key super+d

Show desktops grid

gesture swipe up 4 xdotool key ctrl+F8
主要思想是针对不同的手势触发相关的快捷键,快捷键的配置则可以在系统偏好设置→快捷键中设置。下图是我在plasma5中的切换桌面的快捷键配置:

配置快捷键:setting -> KWin

切换到上一个桌面 Ctrl + F1
切换到下一个桌面 Ctrl + F2
显示/应玚窗口平铺(当前桌面) Ctrl + F9
显示/应玚窗口平铺(全部桌面) Ctrl + F10
显示虚拟桌面网格 Meta + F8
暂时显示桌面 Meta + D
添加虚拟桌面:

工作区行为 -> 虚拟桌面 -> 按自己需求添加任意个

TODO

通过捏和(pinch in/pinch out)来放大/缩小网页(对标macbook)
网页的前进/后退(对标macbook)
待添加…

六. 转换deb包#

可能一些软件需要我们手动将 deb 包 转换后安装,这时候就需要 debtab 工具来转换。

安装

yay -S debtap

更新

sudo debtap -u

下载好待转换的 deb 包,将其转换,以下步骤一路回车即可

sudo debtap ~/Downloads/包名.deb

安装转换后的包

sudo pacman -U ~/Downloads/包名.pkg.tar.zst

七. KDE 桌面美化#

KDE商店

也可参考这个博客

1. 官网下载#

在 设置 -> 外观中下载各种美化插件!!

如果没有访问,则需要手动去 主题官网 下载各类美化效果的压缩包,然后解压到下面的目录中即可

~/.local/share/plasma/look-and-feel/ # 存放全局主题
~/.local/share/plasma/desktoptheme/ # 存放 plasma 视觉风格
~/.local/share/plasma/plasmoids/ # 存放插件
~/.local/share/aurorae/themes/ # 存放窗口装饰
~/.local/share/color-schemes/ # 存放颜色
~/.local/share/icons/ # 存放图标
~/.local/share/fonts/ # 存放字体
~/.local/share/sddm/themes/ # 欢迎屏幕
~/.local/share/backgrounds/ # 壁纸
在 系统设置 -> 外观 中 可以应用我们下载下来的各种美化插件!

我的方案:

桌面右击-配置桌面和壁纸-获取新壁纸:Linux Cheatsheet Wallpaper-Arlinux_Linux.png

全局主题使用:系统自带 Breeze 微风深色-只勾选了外观布局

应用程序风格:Oxygen 轻氧

光标:ArchCusorTheme

欢迎屏幕:Smokey Arch Blue

工作区行为-锁屏-外观配置:Arlinux_Linux

工作区行为-最近文件:不要记住

开机与关机-登陆屏幕(SDDM):sweet

2. dock栏#

删除原始默认面板菜单

右击下方图标面板 -> 进入编辑模式 -> 删除面板

下载 latte-dock

sudo pacman -S latte-dock

启动 dock

latte-dock

右击 dock 栏,配置 latte、选择布局编辑器,选择 extended

右击 dock 栏,编辑停靠栏、点击高级 逐项按自己需求设置

面板添加电池组件

桌面右击 -> 添加组件 -> 搜索电池 -> 拖动到面板合适的位置即可

3.系统托盘#

当打开一个应用之后,可以在 dock 栏中右击该应用的图标,然后将其固定在 dock 栏上。我们还需要一个类似 MAC 系统的 launchpad 程序,可以右击 dock 栏然后添加部件,点击右上角的 Get New Widgets。

搜索 OSXLaunchpad 下载并添加,然后将它添加到 dock 栏上。

加完成后,在 OSXLaunchpad 上单击右键,然后配置 OSXLaunchpad 向下面这样设置:

快捷键:meta + a
设置自定义背景图

4.grub美化#

下载地址

5.插件#

wallpaper-engine-kde-plugin

安装好之后,将原本windows的壁纸copy到linux的~/.local/share/Steam目录,然后在插件里浏览此目录,原本windows存放的壁纸在Steam/steamapps/workshop/content/

6.icons#

Candy icons

7.主题#

win10主题

八. 终端美化#

Konsole配置#

1
2
3
4
5
6
7
8
9
# 打开Konsole -> 设置 -> 配置konsole
标签栏 -> 外观 -> 显示 -> 勾选永不
配置方案 -> 新建并命名为custom、勾选默认配置方案
外观 -> Breeze 微风 -> 编辑 -> 透明度10%
外观 -> 字体 -> 选择 -> 设置字体大小为12

# 设置 -> 显示工具栏 -> 取消勾选主工具栏、会话工具栏

# 设置 -> 取消勾选菜单栏(可通过右击终端设置中打开菜单栏)

🚀 zsh#
zsh 基本兼容 bash,但相比 bash,又有诸多优点:

更强大的 tab 补全
更智能的切换目录
大小写字母自动更正
更强大的 alias 命令
丰富多彩的主题
可以集成各种类型的插件
#
🍧 碎碎念#
当然,也有很多人对 bash 爱的深沉,这些都看个人喜好啦。

可以参考这篇文章进行美化

zsh终端美化 powerlevel10k配置

1.通过以下命令安装 zsh 相关的包:

sudo pacman -S zsh zsh-autosuggestions zsh-syntax-highlighting zsh-completions
📑 相关包说明:

zsh-autosuggestions —— 命令自动补全插件
zsh-syntax-highlighting —— 语法上高亮插件
zsh-completions —— 补充补全定义

2.安装 autojump插件:

sudo pacman -S autojump

3.更改账户的默认 Shell:

chsh -l # 查看安装了哪些 Shell
chsh -s /usr/bin/zsh # 修改当前账户的默认 Shell

4.注销并重新登录 > 打开终端,此时会弹出如下界面进行设置:


zsh_step-5

按下 0 将创建一个只包含注释的 ~/.zshrc 文件,在下次启动时不会再次弹出设置选项。
按下 1 即可进入设置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Please pick one of the following options:

(1) Configure settings for history, i.e. command lines remembered
and saved by the shell. (Recommended.)

(2) Configure the new completion system. (Recommended.)

(3) Configure how keys behave when editing command lines. (Recommended.)

(4) Pick some of the more common shell options. These are simple "on"
or "off" switches controlling the shell's features.

(0) Exit, creating a blank ~/.zshrc file.

(a) Abort all settings and start from scratch. Note this will overwrite
any settings from zsh-newuser-install already in the startup file.
It will not alter any of your other settings, however.

(q) Quit and do nothing else. The function will be run again next time.

根据提示完成设置即可。也可以创建一个只包含注释的 ~/.zshrc 文件以使用默认值。

ℹ️ 提示

root 账户需要手动创建 root/.zshrc 文件。

ℹ️ 提示

若希望重新设置,只需要把 ~/.zshrc 文件删掉即可。

5.为了让插件生效,需要修改 ~/.zshrc。使用 vim 编辑 ~/.zshrc 文件:

vim ~/.zshrc
将以下内容分别添加到需要设置 zsh 账户的 ~/.zshrc 中:

source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
source /usr/share/autojump/autojump.zsh

zsh_step-6

6.关闭并重新打开终端,测试一下:


zsh_step-7

提示

可能需要:

将在 ~/.bash_profile 所做的配置复制到 ~/.zsh_profile
将在 ~/.bashrc 所做的配置复制到 ~/.zshrc
如在步骤 1. 配置 root 账户的默认编辑器 和 8. 配置非 root 账户的默认编辑器 所做的配置。
🔗 相关链接:

关于 zsh 的美化请参阅 系统美化。

oh_my_zsh#
可以参考这篇文章

Zim#
Zim 是一个 zsh 的模块化配置框架

安装
wget -nv -O - https://raw.githubusercontent.com/zimfw/install/master/install.zsh | zsh
配置
Zimfw 的配置文件为 ~/.zimrc

使用任意文本编辑器打开它,配置文件的编写格式为:

zmodule [module name] # 模块在 zimfw 官方组织
zmodule [author]/[module name] # 模块在 Github 上
zmodule https://[host]/[author]/[module name].git # 模块在其他 Git 仓库中
在添加好模块后,可以通过 zimfw install 命令安装,本文同样提供模块推荐

在之后可以通过 zimfw update 更新模块,通过 zimfw upgrade 更新 Zim 本体

模块推荐#
部分内容来自 Zim 官方网站

下拉式终端 yakuake

第一次打开会让设置下拉终端快捷键 -> 按自己方便设置即可

该终端也Konsole共享系统配置,不用再对系统配置作更改

设置yakuake独有配置

打开yakuake(面板会有终端小图标出现)、右击

宽度:100%

高度:100%

配置yakuake

窗口 -> 取消勾选显示标d题栏、取消勾选显示标签栏

外观 -> 勾选隐藏边框

设置开机自启动

设置 -> 开机与关机 -> 自动启动 -> 添加 -> 添加应用程序 -> 系统 -> Yakuake

九. 其他软件安装#

1. Typora#

方式一:二进制包
Typora 最新版已经收费,可以在官网下载以前的版本并手动安装,下面是最后一个免费版本两种下载方法:

1.点我跳转
2.首先下载文件:SAGIMA主页 找到2022-12-12那天的资源
下载完成后手动安装:

sudo tar xzvf Typora-linux-x64.tar.gz
cd bin
sudo cp -ar Typora-linux-x64 /opt
cd /opt/Typora-linux-x64/
#启动
./Typora
为了能够在任意位置启动软件,得设置一下环境变量

sudo gedit ~/.bashrc
打开.bashrc配置文件,添加:

#Typora环境变量
export PATH=$PATH:/opt/Typora-linux-x64
保存后关闭文件,source一下,让配置生效

source ~/.bashrc
这样我们在任意终端中输入“Typora”再回车,就可以打开软件了

添加可视化启动程序,在cd /usr/share/applications下新建以下文件,Typora 内部自己有 PNG 图片,所以不需要额外下载,直接复制粘贴以下内容即可:

[Desktop Entry]
Name=Typora
Comment=Typora
Exec=/opt/Typora-linux-x64/Typora
Icon=/opt/Typora-linux-x64/resources/app/asserts/icon/icon_256x256.png
Terminal=false
Type=Application
Categories=Developer;
设置在.md文件上右键能够选择用Typora打开,进入终端

sudo gedit ~/.config/mimeapps.list
然后在文件的[Added Associations]一栏下面加上一行

sudo text/markdown=typora.desktop;
方式二:deb包

直接Typora官网下载最新deb包

利用前面安装的deb包转换工具安装即可

2. Navicat#

创建AppImage、二进制格式软件存放目录

mkdir -p ~/Application/{AppImage,binary}

下载

cd ~/Application/AppImage
wget http://download.navicat.com.cn/download/navicat16-premium-cs.AppImage

赋权

chmod +x navicat16-premium-cs.AppImage

执行

./navicat16-premium-cs.AppImage

第一次通过上面方式启动后Navicat会自动创建桌面图标,下次启动就可以直接以快捷方式启动!

十. 常见Bug解决#

1. VScode Git保持登录状态#

arch 系的 Linux 无法保存 vscode 里 github 的登录状态,需要下载一个插件进行解决

1
yay -S qtkeychain gnome-keyring

作者:vconlln

出处:https://www.cnblogs.com/vconlln/p/17065420.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

转载 https://zhuanlan.zhihu.com/p/28328304


近日,Analyticsvidhya 上发表了一篇题为《Introduction to Genetic Algorithm & their application in data science》的文章,作者 Shubham Jain 现身说法,用通俗易懂的语言对遗传算法作了一个全面而扼要的概述,并列举了其在多个领域的实际应用,其中重点介绍了遗传算法的数据科学应用。机器之心对该文进行了编译,原文链接请见文末。

简介

几天前,我着手解决一个实际问题——大型超市销售问题。在使用了几个简单模型做了一些特征工程之后,我在排行榜上名列第 219 名。

虽然结果不错,但是我还是想做得更好。于是,我开始研究可以提高分数的优化方法。结果我果然找到了一个,它叫遗传算法。在把它应用到超市销售问题之后,最终我的分数在排行榜上一下跃居前列。

没错,仅靠遗传算法我就从 219 名直接跳到 15 名,厉害吧!相信阅读完本篇文章后,你也可以很自如地应用遗传算法,而且会发现,当把它用到你自己正在处理的问题时,效果也会有很大提升。

目录

1、遗传算法理论的由来

2、生物学的启发

3、遗传算法定义

4、遗传算法具体步骤

初始化

适应度函数

选择

交叉

变异

5、遗传算法的应用

特征选取

使用 TPOT 库实现

6、实际应用

7、结语

1、遗传算法理论的由来

我们先从查尔斯·达尔文的一句名言开始:

能够生存下来的往往不是最强大的物种,也不是最聪明的物种,而是最能适应环境的物种。

你也许在想:这句话和遗传算法有什么关系?其实遗传算法的整个概念就基于这句话。

让我们用一个基本例子来解释 :

我们先假设一个情景,现在你是一国之王,为了让你的国家免于灾祸,你实施了一套法案:

你选出所有的好人,要求其通过生育来扩大国民数量。
这个过程持续进行了几代。
你将发现,你已经有了一整群的好人。

这个例子虽然不太可能,但是我用它是想帮助你理解概念。也就是说,我们改变了输入值(比如:人口),就可以获得更好的输出值(比如:更好的国家)。现在,我假定你已经对这个概念有了大致理解,认为遗传算法的含义应该和生物学有关系。那么我们就快速地看一些小概念,这样便可以将其联系起来理解。

2、生物学的启发

相信你还记得这句话:「细胞是所有生物的基石。」由此可知,在一个生物的任何一个细胞中,都有着相同的一套染色体。所谓染色体,就是指由 DNA 组成的聚合体。

传统上看,这些染色体可以被由数字 0 和 1 组成的字符串表达出来。

一条染色体由基因组成,这些基因其实就是组成 DNA 的基本结构,DNA 上的每个基因都编码了一个独特的性状,比如,头发或者眼睛的颜色。希望你在继续阅读之前先回忆一下这里提到的生物学概念。结束了这部分,现在我们来看看所谓遗传算法实际上指的是什么?

3、遗传算法定义

首先我们回到前面讨论的那个例子,并总结一下我们做过的事情。

首先,我们设定好了国民的初始人群大小。
然后,我们定义了一个函数,用它来区分好人和坏人。
再次,我们选择出好人,并让他们繁殖自己的后代。
最后,这些后代们从原来的国民中替代了部分坏人,并不断重复这一过程。

遗传算法实际上就是这样工作的,也就是说,它基本上尽力地在某种程度上模拟进化的过程。

因此,为了形式化定义一个遗传算法,我们可以将它看作一个优化方法,它可以尝试找出某些输入,凭借这些输入我们便可以得到最佳的输出值或者是结果。遗传算法的工作方式也源自于生物学,具体流程见下图:

那么现在我们来逐步理解一下整个流程。

4、遗传算法具体步骤

为了让讲解更为简便,我们先来理解一下著名的组合优化问题「背包问题」。如果你还不太懂,这里有一个我的解释版本。

比如,你准备要去野游 1 个月,但是你只能背一个限重 30 公斤的背包。现在你有不同的必需物品,它们每一个都有自己的「生存点数」(具体在下表中已给出)。因此,你的目标是在有限的背包重量下,最大化你的「生存点数」。

4.1 初始化

这里我们用遗传算法来解决这个背包问题。第一步是定义我们的总体。总体中包含了个体,每个个体都有一套自己的染色体。

我们知道,染色体可表达为 2 进制数串,在这个问题中,1 代表接下来位置的基因存在,0 意味着丢失。(译者注:作者这里借用染色体、基因来解决前面的背包问题,所以特定位置上的基因代表了上方背包问题表格中的物品,比如第一个位置上是 Sleeping Bag,那么此时反映在染色体的『基因』位置就是该染色体的第一个『基因』。)

现在,我们将图中的 4 条染色体看作我们的总体初始值。

4.2 适应度函数

接下来,让我们来计算一下前两条染色体的适应度分数。对于 A1 染色体 [100110] 而言,有:

类似地,对于 A2 染色体 [001110] 来说,有:

对于这个问题,我们认为,当染色体包含更多生存分数时,也就意味着它的适应性更强。

因此,由图可知,染色体 1 适应性强于染色体 2。

4.3 选择

现在,我们可以开始从总体中选择适合的染色体,来让它们互相『交配』,产生自己的下一代了。这个是进行选择操作的大致想法,但是这样将会导致染色体在几代之后相互差异减小,失去了多样性。因此,我们一般会进行「轮盘赌选择法」(Roulette Wheel Selection method)。

想象有一个轮盘,现在我们将它分割成 m 个部分,这里的 m 代表我们总体中染色体的个数。每条染色体在轮盘上占有的区域面积将根据适应度分数成比例表达出来。

基于上图中的值,我们建立如下「轮盘」。

现在,这个轮盘开始旋转,我们将被图中固定的指针(fixed point)指到的那片区域选为第一个亲本。然后,对于第二个亲本,我们进行同样的操作。有时候我们也会在途中标注两个固定指针,如下图:

通过这种方法,我们可以在一轮中就获得两个亲本。我们将这种方法成为「随机普遍选择法」(Stochastic Universal Selection method)。

4.4 交叉

在上一个步骤中,我们已经选择出了可以产生后代的亲本染色体。那么用生物学的话说,所谓「交叉」,其实就是指的繁殖。现在我们来对染色体 1 和 4(在上一个步骤中选出来的)进行「交叉」,见下图:

这是交叉最基本的形式,我们称其为「单点交叉」。这里我们随机选择一个交叉点,然后,将交叉点前后的染色体部分进行染色体间的交叉对调,于是就产生了新的后代。

如果你设置两个交叉点,那么这种方法被成为「多点交叉」,见下图:

4.5 变异

如果现在我们从生物学的角度来看这个问题,那么请问:由上述过程产生的后代是否有和其父母一样的性状呢?答案是否。在后代的生长过程中,它们体内的基因会发生一些变化,使得它们与父母不同。这个过程我们称为「变异」,它可以被定义为染色体上发生的随机变化,正是因为变异,种群中才会存在多样性。

下图为变异的一个简单示例:

变异完成之后,我们就得到了新为个体,进化也就完成了,整个过程如下图:

在进行完一轮「遗传变异」之后,我们用适应度函数对这些新的后代进行验证,如果函数判定它们适应度足够,那么就会用它们从总体中替代掉那些适应度不够的染色体。这里有个问题,我们最终应该以什么标准来判断后代达到了最佳适应度水平呢?

一般来说,有如下几个终止条件:

在进行 X 次迭代之后,总体没有什么太大改变。
我们事先为算法定义好了进化的次数。
当我们的适应度函数已经达到了预先定义的值。

好了,现在我假设你已基本理解了遗传算法的要领,那么现在让我们用它在数据科学的场景中应用一番。

5、遗传算法的应用

5.1 特征选取

试想一下每当你参加一个数据科学比赛,你会用什么方法来挑选那些对你目标变量的预测来说很重要的特征呢?你经常会对模型中特征的重要性进行一番判断,然后手动设定一个阈值,选择出其重要性高于这个阈值的特征。

那么,有没有什么方法可以更好地处理这个问题呢?其实处理特征选取任务最先进的算法之一就是遗传算法。

我们前面处理背包问题的方法可以完全应用到这里。现在,我们还是先从建立「染色体」总体开始,这里的染色体依旧是二进制数串,「1」表示模型包含了该特征,「0 表示模型排除了该特征」。

不过,有一个不同之处,即我们的适应度函数需要改变一下。这里的适应度函数应该是这次比赛的的精度的标准。也就是说,如果染色体的预测值越精准,那么就可以说它的适应度更高。

现在我假设你已经对这个方法有点一概念了。下面我不会马上讲解这个问题的解决过程,而是让我们先来用 TPOT 库去实现它。

5.2 用 TPOT 库来实现

这个部分相信是你在一开始读本文时心里最终想实现的那个目标。即:实现。那么首先我们来快速浏览一下 TPOT 库(Tree-based Pipeline Optimisation Technique,树形传递优化技术),该库基于 scikit-learn 库建立。下图为一个基本的传递结构。

图中的灰色区域用 TPOT 库实现了自动处理。实现该部分的自动处理需要用到遗传算法。

我们这里不深入讲解,而是直接应用它。为了能够使用 TPOT 库,你需要先安装一些 TPOT 建立于其上的 python 库。下面我们快速安装它们:

1
2
3
4
# installing DEAP, update_checker and tqdm 
pip install deap update_checker tqdm
# installling TPOT
pip install tpot

这里,我用了 Big Mart Sales(数据集地址:https://datahack.analyticsvidhya.com/contest/practice-problem-big-mart-sales-iii/)数据集,为实现做准备,我们先快速下载训练和测试文件,以下是 python 代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# import basic libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn import preprocessing
from sklearn.metrics import mean_squared_error
## preprocessing
### mean imputations
train['Item_Weight'].fillna((train['Item_Weight'].mean()), inplace=True)
test['Item_Weight'].fillna((test['Item_Weight'].mean()), inplace=True)
### reducing fat content to only two categories
train['Item_Fat_Content'] = train['Item_Fat_Content'].replace(['low fat','LF'], ['Low Fat','Low Fat'])
train['Item_Fat_Content'] = train['Item_Fat_Content'].replace(['reg'], ['Regular'])
test['Item_Fat_Content'] = test['Item_Fat_Content'].replace(['low fat','LF'], ['Low Fat','Low Fat'])
test['Item_Fat_Content'] = test['Item_Fat_Content'].replace(['reg'], ['Regular'])
train['Outlet_Establishment_Year'] = 2013 - train['Outlet_Establishment_Year']
test['Outlet_Establishment_Year'] = 2013 - test['Outlet_Establishment_Year']

train['Outlet_Size'].fillna('Small',inplace=True)
test['Outlet_Size'].fillna('Small',inplace=True)

train['Item_Visibility'] = np.sqrt(train['Item_Visibility'])
test['Item_Visibility'] = np.sqrt(test['Item_Visibility'])

col = ['Outlet_Size','Outlet_Location_Type','Outlet_Type','Item_Fat_Content']
test['Item_Outlet_Sales'] = 0
combi = train.append(test)
for i in col:
combi[i] = number.fit_transform(combi[i].astype('str'))
combi[i] = combi[i].astype('object')
train = combi[:train.shape[0]]
test = combi[train.shape[0]:]
test.drop('Item_Outlet_Sales',axis=1,inplace=True)

## removing id variables
tpot_train = train.drop(['Outlet_Identifier','Item_Type','Item_Identifier'],axis=1)
tpot_test = test.drop(['Outlet_Identifier','Item_Type','Item_Identifier'],axis=1)
target = tpot_train['Item_Outlet_Sales']
tpot_train.drop('Item_Outlet_Sales',axis=1,inplace=True)

# finally building model using tpot library
from tpot import TPOTRegressor
X_train, X_test, y_train, y_test = train_test_split(tpot_train, target,
train_size=0.75, test_size=0.25)

tpot = TPOTRegressor(generations=5, population_size=50, verbosity=2)
tpot.fit(X_train, y_train)
print(tpot.score(X_test, y_test))
tpot.export('tpot_boston_pipeline.py')

一旦这些代码运行完成,tpot_exported_pipeline.py 里就将会放入用于路径优化的 python 代码。我们可以发现,ExtraTreeRegressor 可以最好地解决这个问题。

1
2
3
4
5
6
7
8
9
10
## predicting using tpot optimised pipeline
tpot_pred = tpot.predict(tpot_test)
sub1 = pd.DataFrame(data=tpot_pred)
#sub1.index = np.arange(0, len(test)+1)
sub1 = sub1.rename(columns = {'0':'Item_Outlet_Sales'})
sub1['Item_Identifier'] = test['Item_Identifier']
sub1['Outlet_Identifier'] = test['Outlet_Identifier']
sub1.columns = ['Item_Outlet_Sales','Item_Identifier','Outlet_Identifier']
sub1 = sub1[['Item_Identifier','Outlet_Identifier','Item_Outlet_Sales']]
sub1.to_csv('tpot.csv',index=False)

如果你提交了这个 csv,那么你会发现我一开始保证的那些还没有完全实现。那是不是我在骗你们呢?当然不是。实际上,TPOT 库有一个简单的规则。如果你不运行 TPOT 太久,那么它就不会为你的问题找出最可能传递方式。

所以,你得增加进化的代数,拿杯咖啡出去走一遭,其它的交给 TPOT 就行。此外,你也可以用这个库来处理分类问题。进一步内容可以参考这个文档:http://rhiever.github.io/tpot/。除了比赛,在生活中我们也有很多应用场景可以用到遗传算法。

6、 实际应用

遗传算法在真实世界中有很多应用。这里我列了部分有趣的场景,但是由于篇幅限制,我不会逐一详细介绍。

6.1 工程设计

工程设计非常依赖计算机建模以及模拟,这样才能让设计周期过程即快又经济。遗传算法在这里可以进行优化并给出一个很好的结果。

相关资源:

论文:Engineering design using genetic algorithms
地址:http://lib.dr.iastate.edu/cgi/viewcontent.cgi?article=16942&context=rtd

6.2 交通与船运路线(Travelling Salesman Problem,巡回售货员问题)

这是一个非常著名的问题,它已被很多贸易公司用来让运输更省时、经济。解决这个问题也要用到遗传算法。


6.3 机器人

遗传算法在机器人领域中的应用非常广泛。实际上,目前人们正在用遗传算法来创造可以像人类一样行动的自主学习机器人,其执行的任务可以是做饭、洗衣服等等。

相关资源:

论文:Genetic Algorithms for Auto-tuning Mobile Robot Motion Control

地址:https://pdfs.semanticscholar.org/7c8c/faa78795bcba8e72cd56f8b8e3b95c0df20c.pdf

7、结语

希望通过本文介绍,你现在已经对遗传算法有了足够的理解,而且也会用 TPOT 库来实现它了。但是如果你不亲身实践,本文的知识也是非常有限的。

所以,请各位读者朋友一定要在无论是数据科学比赛或是生活中尝试自己去实现它。

选自Analyticsvidhya 机器之心编译

  • lakinduakash/linux-wifi-hotspotFeature-rich wifi hotspot creator for Linux which provides both GUI and command-line interface. It is also able to create a hotspot using the same wifi card which is connected to an AP already ( Similar to Windows 10).
  • FoxShell/qrcoderQRCode generator for VFP9 and VFP Advanced
  • Digitalroot-Technologies/XFDF-VFPVisual FoxPro class definition used to create PDF files using the XFDF format.
  • Vixyock37/Student_Info_Management_SYS基于Python Flask Web的B/S学生信息管理系统
  • ljhshuai/Flasky学生信息管理系统web端
  • revoll/Feedback基于Python编写的一个简单的意见反馈系统
  • revoll/AnyProxy使用Python编写的反向代理程序,支持将局域网内的主机端口服务,映射到指定服务器上。支持多台主机同时连接。
  • VFPX/FoxBarcode“A 100% Visual FoxPro class that provides a tool for generating images with different bar code symbologies to be used in VFP forms and reports, or exported to other applications”
  • vfp9/Print2PDFVFP code library to print reports directly to PDF with programmatic control(用VFP代码库将报告直接打印成PDF,并进行程序化控制)
  • Jiangw2020/Hospital尚医通
  • baidu/amis前端低代码框架,通过 JSON 配置就能生成各种页面。
  • xiaomabenten/system_architect💯2024年 系统架构设计师(软考高级)备考资源库+配套免费刷题软件。PC版免费刷题软件:https://ruankaodaren.com
  • lisahust/FDExam_Note2021软考系统架构设计师笔记
  • xxlllq/system_architect:100:2024年系统架构设计师(软考高级)备考资料。
  • cloudtogo/pageplugPagePlug 是 Appsmith 的中国化项目。基于Appsmith做了整体性能的优化及汉化,也集合了特色表单解决方案Formily组件、图表解决方案Echarts组件、低代码小程序开发等,是面向研发使用的一个开源的、声明式的前后端一体低代码,项目逻辑主要是在前端的解释器和设计器上
  • ivanpanshin/flask_gunicorn_nginx_dockerTemplate for deploying ML models using Flask + Gunicorn + Nginx inside Docker
  • Zegorax/OnlyOffice-UnlimitedScript generating a valid license for OnlyOffice DocumentServer
  • ZhanhuaJin/onlyoffice-ce7.0.1-docker-unlimited
  • caj2pdf/caj2pdfConvert CAJ (China Academic Journals) files to PDF. 转换中国知网 CAJ 格式文献为 PDF。佛系转换,成功与否,皆是玄学。
  • duplicati/duplicatiStore securely encrypted backups in the cloud!
  • gaoyb7/115drive-webdav115 网盘 WebDAV 服务
  • VGEAREN/webdav-caiyun中国移动和彩云 WebDAV
  • extreme-assistant/CVPR2024-Paper-Code-Interpretationcvpr2024/cvpr2023/cvpr2022/cvpr2021/cvpr2020/cvpr2019/cvpr2018/cvpr2017 论文/代码/解读/直播合集,极市团队整理
  • amusi/CVPR2024-Papers-with-CodeCVPR 2024 论文和开源项目合集
  • rustdesk/rustdesk-serverRustDesk Server Program
  • jinweijie/rust-desk-server-docker-composeThe docker compose file to run a RustDesk Server.
  • pythonstock/stockstock,股票系统。使用python进行开发。
  • QL-Win/QuickLookBring macOS “Quick Look” feature to Windows
  • wez/weztermA GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust
  • CollaboraOnline/onlineCollabora Online is a collaborative online office suite based on LibreOffice technology. This is also the source for the Collabora Office apps for iOS and Android.
  • eXtalionLab/nextcloud_dockerDocker setup to run Nextcloud
  • neroxps/Docker-Only-Office-Chinese-font
  • ONLYOFFICE/onlyoffice-nextcloud“The app which enables the users to edit office documents from Nextcloud using ONLYOFFICE Document Server, allows multiple users to collaborate in real time and to save back those changes to Nextcloud”
  • ONLYOFFICE/docker-onlyoffice-nextcloud
  • hegphegp/docker-learningdocker学习笔记
  • Place1/wg-access-serverAn all-in-one WireGuard VPN solution with a web ui for connecting devices
  • miigotu/certbot-dns-godaddyA godaddy dns plugin using lexicon for cerbot to authenticate and retrieve letsencrypt certificates
  • laurent22/joplin“Joplin - the secure note taking and to-do app with synchronisation capabilities for Windows, macOS, Linux, Android and iOS.”
  • nextcloud/docker⛴ Docker image of Nextcloud
  • teddysun/acrossAcross the Great Wall we can reach every corner in the world
  • qdm12/ddns-updaterContainer to update DNS records periodically with WebUI for many DNS providers
  • oldratlee/lifelong-learninglifelong learning: record and analysis of my knowledge structure
  • XiaoMaoGuai/ELK搭建ELK日志分析平台。
  • XiaoMaoGuai/dingdang-robot叮当是一款可以工作在 Raspberry Pi 上的中文语音对话机器人/智能音箱项目。
  • XiaoMaoGuai/flink-learningflink learning blog. http://www.54tianzhisheng.cn
  • wbsu2003/DockerfileDockerfile汇总
  • icret/EasyImages2.0简单图床 - 一款功能强大无数据库的图床 2.0版
  • helloxz/imgurlImgURL是一个简单、纯粹的图床程序,让个人图床多一个选择。
  • zhaoyingjun/chatbotChatGPT带火了聊天机器人,主流的趋势都调整到了GPT类模式,本项目也与时俱进,会在近期更新GPT类版本。基于本项目和自己的语料可以训练出自己想要的聊天机器人,用于智能客服、在线问答、闲聊等场景。
  • polk6/vue-imA Vue.js 2.0 IM;基于Vue2.0的在线客服系统
  • piglei/pycronicA crontab script wrapper written in python
  • qulingyuan/robVeg美团买菜 抢菜脚本
  • Skykai521/DingDongHelper叮咚买菜抢菜插件
  • 1c7/chinese-independent-developer👩🏿‍💻👨🏾‍💻👩🏼‍💻👨🏽‍💻👩🏻‍💻中国独立开发者项目列表 – 分享大家都在做什么
  • zhanhb/judgeOnline Judge System of Zhejiang Normal University
  • tianlian0/duplicate-check-sample文本查重SDK,可用于论文查重、标书查重、文档查重、作业查重、合同查重、防串标等场景。关联:duplicate check
  • ofooo/FAQrobot一个自动回复FAQ问题的聊天机器人。目前使用了简单词汇对比、词性权重、词向量3种相似度计算模式。输入符合格式的FAQ文本文件即可立刻使用。欢迎把无法正确区分的问题和FAQ文件发送到评论区。
  • starkca90/NamesiloDyDNSDynamic DNS for Namesilo
  • phuslu/ddnsa multiple providers ddns script without dependencies
  • MuffinK/namesilo_ddns“ddns for namesilo using python2 or docker on linux, mac or windows”
  • Charles94jp/NameSilo-DDNS“动态域名解析程序: A python Dynamic DNS service for NameSilo, with logger, email notification, docker support, IPv6 support.”
  • migege/dnspoddnspod.py 是基于 DNSPod 服务的动态 DNS 脚本,用于检测 IP 变化并更新至 DNSPod,支持多域名解析。支持 Linux 设备,包括树莓派(Raspberry Pi)。
  • rehiy/dnspod-shell基于DNSPod用户API实现的纯Shell动态域名客户端
  • sunzsh/chromeapp-jsonedit一款基于chome的json编辑插件
  • josdejong/jsoneditor“A web-based tool to view, edit, format, and validate JSON”
  • Brokenwind/BertSimilarityComputing similarity of two sentences with google’s BERT algorithm。利用Bert计算句子相似度。语义相似度计算。文本相似度计算。
  • eskunu/jaccard_distanceUsing Jaccard distance to measure the differences between various texts.
  • abigailrose/jaccardCalculate the Jaccard similarity score in python
  • blanboom/awesome-home-networking-cn家庭网络知识整理
  • reachout2diff/spellcheckerprogram“Python spellchecking program with using language_check library. The language_check specifies the mistakes along with Rule Id, Message, Suggestion, and line number in the document”
  • languagetool-org/languagetoolStyle and Grammar Checker for 25+ Languages
  • csseky/cskaoyan提供计算机考研和软件工程考研专业的各个学校 考研真题
  • QIN2DIM/PigAI_GPT2批改网写作助手
  • ldqk/ldqk🦁🦁
  • leanote/leanoteNot Just A Notepad! (golang + mongodb) http://leanote.org
  • zhuzhu-Top/Wx_Socket_HelperPC微信助手
  • hongzhaoyuanma/wechat_tools微信插件,微信辅助工具
  • weixinbao/ReverseTool逆向工具集合
  • natsheh/sensimSentence Similarity Estimator (SenSim)
  • OwenMasculinity/sentence_similarity计算两个句子间相似性
  • manageryzy/ddrescue-windowsAn unofficial windows port for ddrescue
  • rumia-san/winhasher“A simple file hasher with GUI, which supports drag and drop. Written in Powershell without external module dependencies. 用Powershell实现的文件MD5,SHA1,SHA256计算器,可以拖拽文件到窗口计算。”
  • rumia-san/hook_finaleSimple tutorial for WIN32 hook and DLL injection. Hook和DLL注入的简要教程。
  • ljyit/myfllvisual foxpro function library
  • violet7pan/XYplorer_HelpXYplorer使用教程-原创
  • winsiderss/systeminformer“A free, powerful, multi-purpose tool that helps you monitor system resources, debug software and detect malware. Brought to you by Winsider Seminars & Solutions, Inc. @ http://www.windows-internals.com
  • hiDaDeng/simtext计算两文档间文本相似性指标
  • lixuanhng/NLP_related_projectsMark and summarize the NLP project has been through
  • zbezj/HEU_KMS_Activator
  • thenickdude/OSX-KVMPersonal fork for testing
  • jilljenn/qna“Comparing models for adaptive testing (Rasch, DINA, MIRT, GenMA)”
  • campsych/concerto-platformConcerto Platform - Open-Source Online Adaptive Testing Platform
  • arif-id/Aplikasi-Ujian-Online-berbasis-Web-CAT“Deskripsi Aplikasi Ujian Online, adalah aplikasi yang digunakan untuk melakukan proses ujian , tanpa menggunakan kertas (paperless) , atau sekarang ngetren dengan nama Computer Based Test (CBT), atau Computer Assisted Test (CAT). Semua proses ujian dilakukan melalui komputer, mulai dari pembuatan soal, pengaturan kelas, pengaturan user yang bisa ikut ujian, pengaturan guru mengajar, sampai proses ujian, dengan memanfaatkan teknologi rekayasa web. Tipe soal yang bisa masuk ke aplikasi ujian online di pembahasan ini adalah tipe soal pilihan ganda. Pemrograman : PHP dengan framework : Codeigniter versi 2.x.x (ane lupa versinya, yang jelas versi 2) Javascript jQuery, untuk menghandel perintah-perintah javascript, dan lainya. format data JSON untuk pertukaran data antara server dgn client, pada menu-menu yang ber-AJAX Design UI dengan framework CSS, Twitter Bootstrap Level user : Admin, merupakan level tertinggi dari aplikasi, bisa memanej data : guru/dosen, siswa, mata pelajaran, soal, lihat hasil ujian Guru, mempunyai akses, bisa memanage data : soal, daftar ujian, dan melihat hasil ujian Siswa, mempunya akses, bisa mengikuti ujian, sesuai dengan mata pelajaran yang ia ikuti, yang diatur oleh level admin, dan melihat hasil ujian.”
  • schoetty/CAToRComputerized Adaptive Testing System written in Ruby on Rails
  • bu-else/2017-cat-platformWeb-based computerized adaptive testing (CAT) platform.
  • stupidpupil/kotKot is a basic toolkit for getting started with computerised adaptive testing (CAT) in Ruby.
  • toseef-tariq/catComputerized Adaptive Testing
  • bigdata-ustc/EduCATComputerized Adaptive Testing
  • hicsail/opencat-pro“Build Your Own Computer Adaptive Test (CAT). Fully customizable, extensible web-based CAT platform for anything you wish.”
  • Karel-Kroeze/ShadowCATMultidimensional Computer Adaptive Testing with the Shadow Testing routine
  • erossiter/catSurvComputerized adaptive testing software for survey research
  • philchalmers/mirtCATComputerized Adaptive Testing with Multidimensional Item Response Theory
  • douglasrizzo/catsimComputerized Adaptive Testing Simulator
  • BlackMambaCN/DIRTDIRT:Deep Learning Enhanced Item Response Theory for Cognitive Diagnosis
  • BlackMambaCN/DINA
  • maerdym/DINADINA认知诊断模型;Cognitive diagnosis
  • inuyasha2012/tornado-cat-examplecomputerized adaptive testing based on tornado
  • felix-fly/v2ray-openwrt路由器Openwrt手工/脚本/ipk包安装V2ray简单流程
  • 233boy/v2ray最好用的 V2Ray 一键安装脚本 & 管理脚本
  • piglei/awesome-django“A curated list of awesome Django apps, projects and resources.”
  • Homeless-Xu/PythonSpider入门爬虫项目. 详细注释!!!!!
  • greyli/albumyA photo-sharing social networking built with Flask.
  • jbaham2/flasky_uploadMiguel Grinberg’s flasky app from his Flask book that implements user image uploads instead of gravatar.
  • ranjanbinwani/Document-Listener“The following script reads aloud text from a PDF, Word and a text file”
  • CodeBoy2006/Wordcloud-webFlask 框架 Python jieba+wordcloud 中文分词词云图
  • rajat4665/wordcloud_API_with_flask“Hi there , in this repository i am gonna show how you create interactive images using python “
  • girishgr8/WordFlowBlog Website using Flask Framework
  • hylarucoder/playbasedjango htmx tailwind best practice
  • ningwenyan/Flask_Todo_DemoFlask代办列表
  • geekcomputers/PythonMy Python Examples
  • NoGameNoLife00/mybolgpython+flask做的一个小blog
  • yang-xiansen/fisherflask打造在线书籍互换网站
  • geeklili/share-albumflask搭建的共享云相册,即一个网页端的相册,支持在线上传,口令权限删除,恢复图片,支持回收站
  • SunmoonSan/iAsk基于Flask框架设计一个类似StackOverflow的在线问答系统
  • wsl3/flask_movie基于flask框架的在线movie网站项目
  • jianwi/online_teach在线教育系统……后端基于 flask ,前端基于vue。
  • wytheking/qa_flaskPython Flask 在线问答系统
  • gnemoug/ComPerformance一个使用django开发的学生综合成绩管理平台
  • Fighter-zzp/StudentSystem基于flask的rbac学生权限管理系统,redis存储session
  • uncleduo/Flask-web-management-system一个flask+bootstrap的web课程管理系统,有登录注册,学生管理,文档上传,表格生成等功能
  • AnClark/AUHR-With-Flask华中科技大学学生社团联合会 人力资源管理系统 (Flask 重新开发版)
  • Mashiro94/BootstrapFlaskDemo该项目为基于Flask的学员管理系统,仿写greyli大佬的BootstrapFlask框架Demo进行开发,实现了登录、身份认证、密码修改;学生浏览开设的课程、选课;教师查看已选课学生、为学生录入成绩等功能,涉及登录、表格、表单、数据库操作工具类等实现,是Bootstrap-Flask极简开发网站的参考实例。
  • xuetianyyy/Flask-app“这是一个基于Flask和Vue的前后端分离, 且前端是静态页面的项目”
  • rmboot/approval-system基于Flask的项目审批系统(Bootstrap+Mysql)
  • kanlac/letsvote一个基于 Flask 的问卷调查应用。
  • humiaozuzu/awesome-flaskA curated list of awesome Flask resources and plugins
  • luhuisicnu/The-Flask-Mega-Tutorial-zh翻译自Miguel Grinberg的blog https://blog.miguelgrinberg.com 的2017年新版The Flask Mega-Tutorial教程
  • miguelgrinberg/flask-celery-exampleThis repository contains the example code for my blog article Using Celery with Flask.
  • HenriqueLR/sample-flask-apisample flask api Asynchronous tasks with celery
  • jeff-vincent/language-processing-api“NLP, NLTK, Flask, Celery, Google Translate”
  • mesutaslan/flask-api-celery“Restful api example with Python Flask, SQLAlchemy, Celery and Redis”
  • anuragdhingra/async-image-resize“REST API which resizes images using flask, celery worker and a redis broker”
  • saikiran2603/Flask-Celery-Docker-RedisIntegrating Flask API backend with Celery for long running tasks
  • a-poor/flask-celery-mlHandling long-running processes (like ML model predictions) inside a Flask app using Celery.
  • chachae/OES-Cloud-Testing-PlatformOnline Testing Platform
  • chachae/Face-Recognition-Flask-Serverface compare server (MTCNN + facenet) base on flask and gunicorn framework
  • miguelgrinberg/flasky“Companion code to my O’Reilly book “”Flask Web Development””, second edition.”
  • qzq1111/flask-restful-exampleflask后端开发接口示例,利用Flask开发后端API接口。包含基本的项目配置、统一响应、MySQL和Redis数据库操作、定时任务、图片生成、项目部署、用户权限认证、报表输出、无限层级生成目录树、阿里云手机验证码验证、微信授权、Celery、单元测试、Drone等模块。
  • helloflask/flask-tutorialFlask 入门教程 / Flask for Beginners
  • HarshadPunghera/AI-InvigilatorTo Identify potential cheating behavior in online Exam. (Face/Object Detection). Capstone project to create a series of models which takes in processed videos and examine the frames in order to detect and identify potential cheating behaviour frames. The output should show frames detecting suspicious activity and the corresponding time stamp.
  • maemresen/similarity-detectionAn example project to detect cheats in an exam with using similarity detection.
  • GourabNath/Project-Computer-Vision-for-Exam-Invigilation“In this project, we have created a virtual examination surveillance system that will be able to monitor the examinees throughout the period of an examination. Computers are trained to detect ‘inappropriate’ motions of the candidates during an examination. We have used Viola Jones Object Detection Algorithm for the detecting such ‘inappropriate’ motions. We have also attempted to create a simple user interface to highlights specific minutes or seconds where cheating like movements happened with links to the video clips of those specific sections. “
  • danielAdama/Face-Eye-Detection-via-WebcamBuilt a face and eye detector using a haarcascade classifier which can be used to identify persons who have the intentions to cheat in an online exam.
  • rakhadkz/frontalis-androidThe mobile application that prevents cheating on exams using actions tracking of student
  • GPAMBD/Exam-Proctoring-SystemThe specialized Machine Learning Model based project to avoid cheating activities during online exams.
  • rajan-31/automated-exam-proctoringAutomated Exam Proctoring -> A ML model to keep watch on exam candidates through webcam and inform exam coordinator about any attempt of cheating.
  • sebastianballesteros/ExamGradingAlgorithm to grade an exam given answer key and find cheating depending on input
  • kaliautkarsh98/Camera-Model-for-cheating-detection-This project helps to create an automated proctoring system that helps to find the cases when an exam attendee might be using unfair means in an online camera based examination.
  • hebaayman77177/make_cheating_while_doing_exams_harder
  • Rishi8054/ML-Project-to-Detect-Exam-Cheating
  • tirtharajghosh/Intelligent-Examination-System“Intelligent Examination System aka iES is an online examination system with features like Anti-cheat, Timer, Auto-submit, Resumable on Accidental Shutdown etc.”
  • saurabh9450150287/ML-Project-to-Detect-Exam-Cheating
  • soohyun123/Automatic-Cheating-Detection-for-Online-Webcam-Exam
  • Prady96/DeceptonCheating Detection Model for Computer Based Exams with decentralised Network
  • Madhav612/Preventing-Cheating-in-Exams
  • NaumanHSA/exam-cheating-detection
  • santoshikalaskar/E-exam_cheating_detection
  • ShivamSKD/Exam_Cheating_Detection
  • ankritipandey/ExamCheating_Detection
  • group-automorphism/exam_cheating
  • hamxasajjad/CP19_20Cheating Identification in Exam using Image processing.
  • Utkarshrnigam/Anti-Cheating-Exam_assistant
  • Zorrat/Student-Online-Exam-AntiCheat-ToolOnline Exam Anti-Cheat tool with Cell Phone detection and face recognition
  • ierezell/ExamAiTrying to detect cheating on an exam with artificial intelligence.
  • yihong0618/duolingo_rememberAutomatically send new words from duolingo to telegram
  • abhay-sheshadri/Text-ScoringAssigns a score of grammatical correctness to a sentence.
  • RohanMaheshwari7/Plagiarism-CheckerBased on tf-idf values and ranked retrieval
  • Rama-007/Automatic-Text-ScoringImplementation of paper “​ SKIPFLOW: Incorporating Neural Coherence Features for End-to-End Automatic Text Scoring​ ”
  • BELIEVEfxy/Text_Analysis包含leleketang.com做文库十万余条作文信息,每条作文包含标题、作者、时间、地点、正文、评语、等级等信息。根据文本数据,从多个维度对数据进行分析,并用python中的pyecharts绘制图表。使用TF-IDF和Doc2Vec模型统计关键词
  • hemanth-nag/Camera_Flask_App“Camera app using flask, OpenCV wherein we can click pictures, record videos, apply filters like greyscale, negative and ‘face only’ snapchat filter.”
  • curlconverter/curlconverter“Transpile curl commands into Python, JavaScript and 27 other languages”
  • persepolisdm/persepolisPersepolis Download Manager is a GUI for aria2.
  • agalwood/MotrixA full-featured download manager.
  • yqchilde/JDMemberCloseAccount学习python操作selenium的一个🌰 ,也是一种京东全自动退会方案
  • mikemelon/java-examJava实现的包含题库编辑、抽题组卷、试题分析、在线考试等模块的Web考试系统。
  • thinwind/ssexam考试系统后台接口
  • williamnltk/exam_system_python-flask这个是一个在线考试系统,利用 Python的 flask 的框架实现
  • zrq2017/erems考试报名及考务管理系统
  • hsian/flask-exampypython-考试管理系统,考题管理,自动阅卷等。
  • hongfurui2014/exam_online_hongfurui在线考试系统,java,vue,springboot,springcloud
  • seamile/FastCopy“🚅 FastCopy is a remote file copy program similar to scp. It uses concurrent transmission, so the speed is faster than scp.”
  • ice-tong/pytorch-captcha使用pytorch搭建cnn识别验证码
  • hamzaben86/Employee-Churn-Predictive-ModelPredicting Employee Churn with Supervised Machine Learning
  • chenbingyan/bank-churn-model银行客户流失预警模型
  • AaronWard/Churn-Modelling-Artificial-Neural-NetworkUsing an afticial neural network to predict customers who leave the bank.
  • denopas/ChurnAnalysisCustomer Churn Analysis Experiments using Classical ML algorithms and Deep Neural Network
  • pik1989/MLProject-ChurnPrediction
  • alteryx/predict-customer-churnA general-purpose framework for solving problems with machine learning applied to predicting customer churn
  • jordanswong/autograderA website that uses a basic machine learning algorithm to try to grade short essays.
  • ADHIKSHA/Essay-Grading-IELTS“Online Essay Grading system using Django Frwamework, NLP, NLTK, Keras and many more. “
  • asakhare/ML_for_Automated_Essay_GradingMachine Learning model for grading essays written in English.
  • SahilSrivastava/Essay_EvaluationUsing NLP techniques to evaluate essays and grade them accordingly.
  • EstradaAlex20/automaticEssayGraderMachineLearningA simple program that uses basic machine learning to automatically grade extended response essay questions.
  • navsaini/Kaggle-Essay-GradingGrades a set of pre-written essays given a sample set of graded essays
  • manuj005/Essay_GradingAutomatic Essay Grading using NLP and SVM
  • rikayi/Essay_HANAutomated essay grading with Hierarchical Attention Networks
  • shahkshitij15/AutomaticEssayGrader
  • TarangKhanna/AutoEssayGraderUtilizes machine learning to grade essays
  • nileshprasad137/Automated-Essay-GraderProject based on Machine Learning to extract features from essays and train using suitable ML algorithms to predict essay scores.
  • utsav-195/automated_essay_graderUsing neural networks to create a system to auto-grade essays with human like evaluation.
  • tying21/automated-essay-grader
  • heeryoncho/korean_essay_grade_prediction“Code for domestic conference (South Korea) paper “”Comparison of Automatic Score Range Prediction of Korean Essays Using KoBERT, Naive Bayes & Logistic Regression”””
  • proredkar31/essaygradingAutomatic Essay Grading Using Machine Learning
  • karanraghani/Automated_Essay_Grader
  • empathephant/automatic-essay-graderMachine learning project that attempts to grade essays written by non-native English speakers on a scale from 1 - 7.
  • nithinfrancis/EASY-GRADERESSAY GRADING WEBSITE USING MACHINE LEARNING
  • tanbar999/AUTOMATED-ESSAY-GRADEREssay grading using MACHINE LEARNING.
  • bgarrofe/essay-grader
  • malavikaramprasad/Essay_grader
  • vinhqbui/Grading-EssayThis is the model that I build to grade future essay based on the that is provided.
  • 2020-CS372/automated-essay-assignment-gradingautomated-essay-assignment-grading
  • noahyonack/AutomaticEssayGrading“Grading essays, but automatically. “
  • SwordSaintLancelot/Automatic_Essay_GraderAutomatic Essay Grader
  • hmx789/essayClassifierBuilt a classifier to automatically grade essays
  • masanorihayashi/GradeSystemForEssay
  • adiv413/essay-graderTJHSST Essay Grader: Automate the objective aspects of essay grading.
  • yetianpro/automated-essay-grading-by-RNNrecurrent neural network (LSTM) based automated essay grading system
  • sachinbiradar9/Autograder 🏆 Automatically grade english essays using NLP techniques. (This is not a ML model)
  • yangyiqin-tsinghua/Automated-Grader-for-Chinese-EssayThe Chinese essays dataset used by AGCE system.
  • hardik2396/Automatic-Essay-Grader-
  • kashyap9395/automated_essay_graderA project for my class CS 421: Natural Language Processing that grades a bunch of essays using NLP techniques.
  • Messier-16/InstagradeThe first automated essay grader based on BERT-like models and with multiple rubric scores.
  • ethicalrushi/automatic_essay_grader
  • Ishita98/AutomatedEssayScoringAutomatically Grades Essays using previous observations of grading using NLP tools
  • ejaustin/uofic-2015-automatic-essay-graderCS 421 Natural Language Processing. Spring 2015. An automatic grader for a set of essays from non-native English speakers.
  • SnehashishSrivastava/essay-grader
  • chmullig/datascience-aesMy code for the Columbia Data Science final project Kaggle competition. Automated essay grading system.
  • yucheng1992/Automated-Essay-GraderThis repository contains all the code written for the final project of CSCI-GA.2590-001 Natural Language Processing 15Spring
  • ujjax/Essay-GraderAutomated Essay Grading
  • CpuKnows/toefl-graderSystem for grading TOEFL essays
  • bronwynbiro/AutomatedEssayGradingAutomated essay grading via 1) handcrafted features and logistic regression (QWK = 0.847) and 2) Doc2Vec and a 2-layer LSTM (QWK = 0.971).
  • 0voice/linux_kernel_wikilinux内核学习资料:200+经典内核文章,100+内核论文,50+内核项目,500+内核面试题,80+内核视频
  • dataease/dataease🔥 人人可用的开源数据可视化分析工具,帆软、Tableau 等商业 BI 工具的开源替代。
  • Jianming-xu/XieCheng_User_churn_-本项目是基于机器学习的携程用户流失预警模型 - 2016科赛题目复现
  • zhiwei16/airline_web_analysis某航司访客流失建模说明文档
  • nikkiisfine/tel_customer_churn_predict_learn电信用户流失率分析预测学习案例
  • Xxxygczx/-客户流失相关论文
  • BBonnieLin/Churn-Prediction-of-Bank-Customers預測銀行客戶流失
  • ZhiXuanLin/project電信客戶流失
  • ZhichenSong/-客户流失分析
  • ben1234560/DataMiningCase基于真实业务上手数据挖掘(银行流失预警):数据的处理、LightGBM、skLearning包(里面含有:GridSearchCV寻找最优参、StratifiedKFold分层5折切分、_test_Split单次数据切分等)、叠层模型融合、画AUC图、画混淆矩阵图,并输出预测名单。
  • yonnic0706/Ctrip-Customer-Churn-Prediction携程用户流失预测
  • xiaogp/customer_churn_prediction零售电商客户流失模型,基于tensorflow,xgboost4j-spark,spark-ml实现LR,FM,GBDT,RF,进行模型效果对比,离线/在线部署方式总结
  • baopuzi/Telco_Customer_Churn电信用户流失分析与预测_AdaBoost
  • Roc-J/loss_customers使用python3和深度学习进行流失客户的分析分类
  • JHL01/Telcom-Customer-Churn找出電信業的潛在流失客戶及流失因素
  • fundoop/customerlosing_prediction运用神经网络预测客户流失。包括特征构建及筛选、模型构建及调优、客户分层预测
  • GabrielLin/nlp-journey“NLP 相关的一些文档、论文及代码, 包括主题模型(Topic Model)、词向量(Word Embedding)、命名实体识别(Named Entity Recognition)、文本分类(Text Classificatin)、文本生成(Text Generation)、文本相似性(Text Similarity)计算、机器翻译(Machine Translation)等,涉及到各种与nlp相关的算法,基于tensorflow 2.0。”
  • GabrielLin/chineseocr_lite“超轻量级中文ocr,支持竖排文字识别, 支持ncnn推理 , psenet(8.5M) + crnn(6.3M) + anglenet(1.5M) 总模型仅17M”
  • GabrielLin/Deep-Learning-Interview-Book深度学习面试宝典(含数学、机器学习、深度学习、计算机视觉、自然语言处理和SLAM等方向)
  • GabrielLin/NLP-Conferences-CodeNLP-Conferences-Code (ACL、EMNL、NAACL、COLING、AAAI、IJCAI)
  • AlexEBall/Automated-Essay-Grading-with-NLPUsing machine learning and NLP to automatically grade essays
  • karanmilan/Automatic-Answer-EvaluationThis repo contains the code and documentation for automatic essay evaluation and short answer evaluation.
  • jeina7/GPT2-essay-writerGPT-2 based essay writing AI
  • luistp001/LT-AutograderA system that automatically grades short answer essays.
  • jackschaedler/handwriting-recognitionAn active essay revisiting Gabriel Groner’s GRAIL handwriting recognizer from the 1960s:
  • BDBC-KG-NLP/QA-Survey-CN北京航空航天大学大数据高精尖中心自然语言处理研究团队开展了智能问答的研究与应用总结。包括基于知识图谱的问答(KBQA),基于文本的问答系统(TextQA),基于表格的问答系统(TableQA)、基于视觉的问答系统(VisualQA)和机器阅读理解(MRC)等,每类任务分别对学术界和工业界进行了相关总结。
  • xkcoding/spring-boot-demo🚀一个用来深入学习并实战 Spring Boot 的项目。
  • danan0755/Bert_Classifier“bert文本分类,ner, albert,keras_bert,bert4keras,kashgari,fastbert,flask + uwsgi + keras部署模型,时间实体识别,tfidf关键词抽取,tfidf文本相似度,用户情感分析”
  • yizt/cv-papers“计算机视觉相关论文整理、记录、分享; 包括图像分类、目标检测、视觉跟踪/目标跟踪、人脸识别/人脸验证、OCR/场景文本检测及识别等领域。欢迎加星,欢迎指正错误,同时也期待能够共同参与!!! 持续更新中… …”
  • wusaifei/garbage_classify本文新增添分类,检测,换脸技术等学习教程,各种调参技巧和tricks,卷积结构详细解析可视化,注意力机制代码等详解!本次垃圾分类挑战杯,目的在于构建基于深度学习技术的图像分类模型,实现垃圾图片类别的精准识别,大赛参考深圳垃圾分类标准,按可回收物、厨余垃圾、有害垃圾和其他垃圾四项分类。本项目包含完整的分类网络、数据增强、SVM等各种分类增强策略,后续还会继续更新新的分类技巧。
  • yongzhuo/nlp_xiaojiang“自然语言处理(nlp),小姜机器人(闲聊检索式chatbot),BERT句向量-相似度(Sentence Similarity),XLNET句向量-相似度(text xlnet embedding),文本分类(Text classification), 实体提取(ner,bert+bilstm+crf),数据增强(text augment, data enhance),同义句同义词生成,句子主干提取(mainpart),中文汉语短文本相似度,文本特征工程,keras-http-service调用”
  • shibing624/pytextclassifierpytextclassifier is a toolkit for text classification. 文本分类,LR,Xgboost,TextCNN,FastText,TextRNN,BERT等分类模型实现,开箱即用。
  • leerumor/nlp_tutorialNLP超强入门指南,包括各任务sota模型汇总(文本分类、文本匹配、序列标注、文本生成、语言模型),以及代码、技巧
  • fighting41love/funNLP“中英文敏感词、语言检测、中外手机/电话归属地/运营商查询、名字推断性别、手机号抽取、身份证抽取、邮箱抽取、中日文人名库、中文缩写库、拆字词典、词汇情感值、停用词、反动词表、暴恐词表、繁简体转换、英文模拟中文发音、汪峰歌词生成器、职业名称词库、同义词库、反义词库、否定词库、汽车品牌词库、汽车零件词库、连续英文切割、各种中文词向量、公司名字大全、古诗词库、IT词库、财经词库、成语词库、地名词库、历史名人词库、诗词词库、医学词库、饮食词库、法律词库、汽车词库、动物词库、中文聊天语料、中文谣言数据、百度中文问答数据集、句子相似度匹配算法集合、bert资源、文本生成&摘要相关工具、cocoNLP信息抽取工具、国内电话号码正则匹配、清华大学XLORE:中英文跨语言百科知识图谱、清华大学人工智能技术系列报告、自然语言生成、NLU太难了系列、自动对联数据及机器人、用户名黑名单列表、罪名法务名词及分类模型、微信公众号语料、cs224n深度学习自然语言处理课程、中文手写汉字识别、中文自然语言处理 语料/数据集、变量命名神器、分词语料库+代码、任务型对话英文数据集、ASR 语音数据集 + 基于深度学习的中文语音识别系统、笑声检测器、Microsoft多语言数字/单位/如日期时间识别包、中华新华字典数据库及api(包括常用歇后语、成语、词语和汉字)、文档图谱自动生成、SpaCy 中文模型、Common Voice语音识别数据集新版、神经网络关系抽取、基于bert的命名实体识别、关键词(Keyphrase)抽取包pke、基于医疗领域知识图谱的问答系统、基于依存句法与语义角色标注的事件三元组抽取、依存句法分析4万句高质量标注数据、cnocr:用来做中文OCR的Python3包、中文人物关系知识图谱项目、中文nlp竞赛项目及代码汇总、中文字符数据、speech-aligner: 从“人声语音”及其“语言文本”产生音素级别时间对齐标注的工具、AmpliGraph: 知识图谱表示学习(Python)库:知识图谱概念链接预测、Scattertext 文本可视化(python)、语言/知识表示工具:BERT & ERNIE、中文对比英文自然语言处理NLP的区别综述、Synonyms中文近义词工具包、HarvestText领域自适应文本挖掘工具(新词发现-情感分析-实体链接等)、word2word:(Python)方便易用的多语言词-词对集:62种语言/3,564个多语言对、语音识别语料生成工具:从具有音频/字幕的在线视频创建自动语音识别(ASR)语料库、构建医疗实体识别的模型(包含词典和语料标注)、单文档非监督的关键词抽取、Kashgari中使用gpt-2语言模型、开源的金融投资数据提取工具、文本自动摘要库TextTeaser: 仅支持英文、人民日报语料处理工具集、一些关于自然语言的基本模型、基于14W歌曲知识库的问答尝试–功能包括歌词接龙and已知歌词找歌曲以及歌曲歌手歌词三角关系的问答、基于Siamese bilstm模型的相似句子判定模型并提供训练数据集和测试数据集、用Transformer编解码模型实现的根据Hacker News文章标题自动生成评论、用BERT进行序列标记和文本分类的模板代码、LitBank:NLP数据集——支持自然语言处理和计算人文学科任务的100部带标记英文小说语料、百度开源的基准信息抽取系统、虚假新闻数据集、Facebook: LAMA语言模型分析,提供Transformer-XL/BERT/ELMo/GPT预训练语言模型的统一访问接口、CommonsenseQA:面向常识的英文QA挑战、中文知识图谱资料、数据及工具、各大公司内部里大牛分享的技术文档 PDF 或者 PPT、自然语言生成SQL语句(英文)、中文NLP数据增强(EDA)工具、英文NLP数据增强工具 、基于医药知识图谱的智能问答系统、京东商品知识图谱、基于mongodb存储的军事领域知识图谱问答项目、基于远监督的中文关系抽取、语音情感分析、中文ULMFiT-情感分析-文本分类-语料及模型、一个拍照做题程序、世界各国大规模人名库、一个利用有趣中文语料库 qingyun 训练出来的中文聊天机器人、中文聊天机器人seqGAN、省市区镇行政区划数据带拼音标注、教育行业新闻语料库包含自动文摘功能、开放了对话机器人-知识图谱-语义理解-自然语言处理工具及数据、中文知识图谱:基于百度百科中文页面-抽取三元组信息-构建中文知识图谱、masr: 中文语音识别-提供预训练模型-高识别率、Python音频数据增广库、中文全词覆盖BERT及两份阅读理解数据、ConvLab:开源多域端到端对话系统平台、中文自然语言处理数据集、基于最新版本rasa搭建的对话系统、基于TensorFlow和BERT的管道式实体及关系抽取、一个小型的证券知识图谱/知识库、复盘所有NLP比赛的TOP方案、OpenCLaP:多领域开源中文预训练语言模型仓库、UER:基于不同语料+编码器+目标任务的中文预训练模型仓库、中文自然语言处理向量合集、基于金融-司法领域(兼有闲聊性质)的聊天机器人、g2pC:基于上下文的汉语读音自动标记模块、Zincbase 知识图谱构建工具包、诗歌质量评价/细粒度情感诗歌语料库、快速转化「中文数字」和「阿拉伯数字」、百度知道问答语料库、基于知识图谱的问答系统、jieba_fast 加速版的jieba、正则表达式教程、中文阅读理解数据集、基于BERT等最新语言模型的抽取式摘要提取、Python利用深度学习进行文本摘要的综合指南、知识图谱深度学习相关资料整理、维基大规模平行文本语料、StanfordNLP 0.2.0:纯Python版自然语言处理包、NeuralNLP-NeuralClassifier:腾讯开源深度学习文本分类工具、端到端的封闭域对话系统、中文命名实体识别:NeuroNER vs. BertNER、新闻事件线索抽取、2019年百度的三元组抽取比赛:“科学空间队”源码、基于依存句法的开放域文本知识三元组抽取和知识库构建、中文的GPT2训练代码、ML-NLP - 机器学习(Machine Learning)NLP面试中常考到的知识点和代码实现、nlp4han:中文自然语言处理工具集(断句/分词/词性标注/组块/句法分析/语义分析/NER/N元语法/HMM/代词消解/情感分析/拼写检查、XLM:Facebook的跨语言预训练语言模型、用基于BERT的微调和特征提取方法来进行知识图谱百度百科人物词条属性抽取、中文自然语言处理相关的开放任务-数据集-当前最佳结果、CoupletAI - 基于CNN+Bi-LSTM+Attention 的自动对对联系统、抽象知识图谱、MiningZhiDaoQACorpus - 580万百度知道问答数据挖掘项目、brat rapid annotation tool: 序列标注工具、大规模中文知识图谱数据:1.4亿实体、数据增强在机器翻译及其他nlp任务中的应用及效果、allennlp阅读理解:支持多种数据和模型、PDF表格数据提取工具 、 Graphbrain:AI开源软件库和科研工具,目的是促进自动意义提取和文本理解以及知识的探索和推断、简历自动筛选系统、基于命名实体识别的简历自动摘要、中文语言理解测评基准,包括代表性的数据集&基准模型&语料库&排行榜、树洞 OCR 文字识别 、从包含表格的扫描图片中识别表格和文字、语声迁移、Python口语自然语言处理工具集(英文)、 similarity:相似度计算工具包,java编写、海量中文预训练ALBERT模型 、Transformers 2.0 、基于大规模音频数据集Audioset的音频增强 、Poplar:网页版自然语言标注工具、图片文字去除,可用于漫画翻译 、186种语言的数字叫法库、Amazon发布基于知识的人-人开放领域对话数据集 、中文文本纠错模块代码、繁简体转换 、 Python实现的多种文本可读性评价指标、类似于人名/地名/组织机构名的命名体识别数据集 、东南大学《知识图谱》研究生课程(资料)、. 英文拼写检查库 、 wwsearch是企业微信后台自研的全文检索引擎、CHAMELEON:深度学习新闻推荐系统元架构 、 8篇论文梳理BERT相关模型进展与反思、DocSearch:免费文档搜索引擎、 LIDA:轻量交互式对话标注工具 、aili - the fastest in-memory index in the East 东半球最快并发索引 、知识图谱车音工作项目、自然语言生成资源大全 、中日韩分词库mecab的Python接口库、中文文本摘要/关键词提取、汉字字符特征提取器 (featurizer),提取汉字的特征(发音特征、字形特征)用做深度学习的特征、中文生成任务基准测评 、中文缩写数据集、中文任务基准测评 - 代表性的数据集-基准(预训练)模型-语料库-baseline-工具包-排行榜、PySS3:面向可解释AI的SS3文本分类器机器可视化工具 、中文NLP数据集列表、COPE - 格律诗编辑程序、doccano:基于网页的开源协同多语言文本标注工具 、PreNLP:自然语言预处理库、简单的简历解析器,用来从简历中提取关键信息、用于中文闲聊的GPT2模型:GPT2-chitchat、基于检索聊天机器人多轮响应选择相关资源列表(Leaderboards、Datasets、Papers)、(Colab)抽象文本摘要实现集锦(教程 、词语拼音数据、高效模糊搜索工具、NLP数据增广资源集、微软对话机器人框架 、 GitHub Typo Corpus:大规模GitHub多语言拼写错误/语法错误数据集、TextCluster:短文本聚类预处理模块 Short text cluster、面向语音识别的中文文本规范化、BLINK:最先进的实体链接库、BertPunc:基于BERT的最先进标点修复模型、Tokenizer:快速、可定制的文本词条化库、中文语言理解测评基准,包括代表性的数据集、基准(预训练)模型、语料库、排行榜、spaCy 医学文本挖掘与信息提取 、 NLP任务示例项目代码集、 python拼写检查库、chatbot-list - 行业内关于智能客服、聊天机器人的应用和架构、算法分享和介绍、语音质量评价指标(MOSNet, BSSEval, STOI, PESQ, SRMR)、 用138GB语料训练的法文RoBERTa预训练语言模型 、BERT-NER-Pytorch:三种不同模式的BERT中文NER实验、无道词典 - 有道词典的命令行版本,支持英汉互查和在线查询、2019年NLP亮点回顾、 Chinese medical dialogue data 中文医疗对话数据集 、最好的汉字数字(中文数字)-阿拉伯数字转换工具、 基于百科知识库的中文词语多词义/义项获取与特定句子词语语义消歧、awesome-nlp-sentiment-analysis - 情感分析、情绪原因识别、评价对象和评价词抽取、LineFlow:面向所有深度学习框架的NLP数据高效加载器、中文医学NLP公开资源整理 、MedQuAD:(英文)医学问答数据集、将自然语言数字串解析转换为整数和浮点数、Transfer Learning in Natural Language Processing (NLP) 、面向语音识别的中文/英文发音辞典、Tokenizers:注重性能与多功能性的最先进分词器、CLUENER 细粒度命名实体识别 Fine Grained Named Entity Recognition、 基于BERT的中文命名实体识别、中文谣言数据库、NLP数据集/基准任务大列表、nlp相关的一些论文及代码, 包括主题模型、词向量(Word Embedding)、命名实体识别(NER)、文本分类(Text Classificatin)、文本生成(Text Generation)、文本相似性(Text Similarity)计算等,涉及到各种与nlp相关的算法,基于keras和tensorflow 、Python文本挖掘/NLP实战示例、 Blackstone:面向非结构化法律文本的spaCy pipeline和NLP模型通过同义词替换实现文本“变脸” 、中文 预训练 ELECTREA 模型: 基于对抗学习 pretrain Chinese Model 、albert-chinese-ner - 用预训练语言模型ALBERT做中文NER 、基于GPT2的特定主题文本生成/文本增广、开源预训练语言模型合集、多语言句向量包、编码、标记和实现:一种可控高效的文本生成方法、 英文脏话大列表 、attnvis:GPT2、BERT等transformer语言模型注意力交互可视化、CoVoST:Facebook发布的多语种语音-文本翻译语料库,包括11种语言(法语、德语、荷兰语、俄语、西班牙语、意大利语、土耳其语、波斯语、瑞典语、蒙古语和中文)的语音、文字转录及英文译文、Jiagu自然语言处理工具 - 以BiLSTM等模型为基础,提供知识图谱关系抽取 中文分词 词性标注 命名实体识别 情感分析 新词发现 关键词 文本摘要 文本聚类等功能、用unet实现对文档表格的自动检测,表格重建、NLP事件提取文献资源列表 、 金融领域自然语言处理研究资源大列表、CLUEDatasetSearch - 中英文NLP数据集:搜索所有中文NLP数据集,附常用英文NLP数据集 、medical_NER - 中文医学知识图谱命名实体识别 、(哈佛)讲因果推理的免费书、知识图谱相关学习资料/数据集/工具资源大列表、Forte:灵活强大的自然语言处理pipeline工具集 、Python字符串相似性算法库、PyLaia:面向手写文档分析的深度学习工具包、TextFooler:针对文本分类/推理的对抗文本生成模块、Haystack:灵活、强大的可扩展问答(QA)框架、中文关键短语抽取工具”
  • mitmproxy/mitmproxyAn interactive TLS-capable intercepting HTTP proxy for penetration testers and software developers.
  • VikParuchuri/boston-python-mlText scoring/classification presentation
  • qiurunze123/miaosha⭐⭐⭐⭐秒杀系统设计与实现.互联网工程师进阶与分析🙋🐓
  • SahilC/virtual-tutorA virtual tutor to teach you how to play the piano. Built entirely using openCV.
  • hkneptune/FreeFileSyncA Copy of FreeFileSync Source Code. This repository is just a mirror of the FreeFileSync source code. Please do not send pull requests. Submit issues to the official forum (https://freefilesync.org/forum/).
  • cryptomator/cryptomatorMulti-platform transparent client-side encryption of your files in the cloud
  • WenRichard/DeepLearning-500-questions深度学习500问,以问答形式对常用的概率知识、线性代数、机器学习、深度学习、计算机视觉等热点问题进行阐述,以帮助自己及有需要的读者。 全书分为15个章节,近20万字。由于水平有限,书中不妥之处恳请广大读者批评指正。 未完待续………… 如有意合作,联系scutjy2015@163.com 版权所有,违权必究 Tan 2018.06
  • dromara/cubic一站式问题定位平台,分布式实例监控、线程栈监控、线程池监控、动态arthas命令集、依赖分析等等等,助你快速定位问题
  • WangJi92/arthas-idea-plugin“arthas idea plugin 更简单的使用arthas的IDEA 插件,方便的构建各种arthas 命令,复制到剪切板 然后到服务器上启动arthas 执行命令。”
  • alibaba/arthasAlibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas
  • DDigimon/TCAMP-WEEK2好未来第二周-自动评分
  • sankalpjain99/Automatic-Essay-ScoringCreated a web app that can automatically score essays. The grading model was trained using HP Essays Dataset from Kaggle. Used Long Short Term Memory (LSTM) network and machine learning algorithms to train model. WebApp was created using Flask framework.
  • ZhuoyueWang/AutomatedEssayScoringAutomated Essay Scoring System
  • alivcor/aesAutomated Essay Scoring
  • mjnickerson/csci-89a-final_project“Adversarial Attacks on Neural Automatic Essay Scoring Systems; Lee, Michael & Nickerson, Micah”
  • zkurtz/ASAP-AES-workbenchAutomated essay scoring with word2vec and more
  • loyalzc/nlp_kescisentence similarity and essay auto scoring 作文自动评分 句子相似性
  • VikParuchuri/scanScore essays automatically with an easy web interface.
  • Turanga1/Automated-Essay-ScoringKaggle 2012 Hewlett Automated Student Assessment Prize (ASAP) - Automated Essay Scoring
  • shubhpawar/Automated-Essay-ScoringAutomated Essay Scoring on The Hewlett Foundation dataset on Kaggle
  • feidong1991/aesA deep neural model for automatic essay scoring
  • Farahn/AESAutomatic Essay Scoring
  • semanticpc/Essay-ScoringAutomated Essay Scoring
  • pavanred/NLP_Automatic_Grader“Automatic Essay Grader system scores and evaluates essays by natural language processing - detect errors in grammar, usage, semantics, coherence, length etc and an automated essay scoring system. This system is evaluated by comparing essay scores to manually evaluated essay scores.”
  • octanove/expatsEXPATS: A Toolkit for Explainable Automated Text Scoring

转载 https://echowings.github.io/zh-cn/p/shell-script-to-update-cloudflare-ddns/
Script

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#!/bin/bash


############## User Configuration ###############
# Define programme path
# location_path="/config/scripts/ddns"
location_path=$(dirname -- "$0")

# You Registered CloudFlare Mail Account
auth_email=""

# CloudFlare Global API Key
auth_key=""
# Root Doman Name
zone_name=""

# IP Type,Enter 'ipv4' or 'ipv6' ,at here we got paramter from our input
type=$1

# DDNS Domain Name
record_name=$2

# WAN INTERFACE
INTERFACE=""

############# Script ############
# The before WAN IP
ip_file="$location_path/$1_$2_ip.txt"

# Domain id information
# Domain id information
id_file="$location_path/$1_$2_cloudflare.ids"

# Log location
log_file="$location_path/cloudflare.log"

################ Don't change here ###############
################## Function ####################
record_type=""
ip=""
zone_identifier=""
record_identifier=""
update=""

# Log function
log() {
if [ "$1" ]; then
echo -e "[$(date)] - $1" >> $log_file
fi
}
#To get local IP address
get_ip() {
if [ $type == "ipv4" ]; then
record_type="A"
ip=$(ip addr | grep ${INTERFACE} -A2 | grep inet | grep -v inet6 | awk '{print $2}')
elif [ $type == "ipv6" ]; then
record_type="AAAA"
ip=$(ip addr | grep ${INTERFACE} -A2 | grep inet6 | awk '{print $2}' | cut -d '/' -f1)
else
echo "Type wrong"
log "Type wrong"
exit 0
fi
}

# Check IP changed or not, if there's no change, then terminal programme
check_ip_change() {
if [ -f $ip_file ]; then
old_ip=$(cat $ip_file)
if [ "$ip" == "$old_ip" ]; then
echo "IP has not changed."
log "IP has not changed."
exit 0
fi
fi
}
#Get zone_id subdomain ID
get_id() {
if [ -f $id_file ] && [ $(wc -l $id_file | cut -d " " -f 1) == 2 ]; then
zone_identifier=$(head -1 $id_file)
record_identifier=$(tail -1 $id_file)
else
zone_identifier=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$zone_name" -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json" | grep -Po '(?<="id":")[^"]*' | head -1 )
rec_response_json=`curl -X GET "https://api.cloudflare.com/client/v4/zones/$zone_identifier/dns_records?name=$record_name" -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json"`
record_identifier=`echo $rec_response_json | grep -Po '(?<="id":")[^"]*'`
echo "$zone_identifier" > $id_file
echo "$record_identifier" >> $id_file
fi
}
#Update DNS record
update_dns() {
update=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$zone_identifier/dns_records/$record_identifier" -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json" --data "{\"id\":\"$zone_identifier\",\"type\":\"$record_type\",\"name\":\"$record_name\",\"content\":\"$ip\"}")
}
################### Main ###################
log "Script start."
#Got IP Address
get_ip

# Check got the right ip address
if [ "$ip" == "" ]; then
echo "Can not get IP address.Please check your network connection."
log "Can not get IP address.Please check your network connection."
exit 0
fi

# Check IP changed or not
check_ip_change


# Get zone_id and sumdomain record ID
get_id

# Check get ID successfully or not
if [ "$zone_identifier" == "" ]; then
echo "Can not get zone_id."
log "Can not get zone_id."
exit 0
elif [ "$record_identifier" == "" ]; then
echo "Can not get record_id."
log "Can not get record_id."
exit 0
fi

# Update DNS Record
update_dns

# Check DNS record updated or not
if [[ $update == *"\"success\":false"* ]]; then
log "API UPDATE FAILED. DUMPING RESULTS:\n$update"
echo -e "API UPDATE FAILED. DUMPING RESULTS:\n$update"
exit 0
else
echo "$ip" > $ip_file
log "$record_name IP changed to: $ip"
echo "$record_name IP changed to: $ip"
fi

How to run the script

1
2
3
4
5
#update A record
sudo bash /config/scripts/ddns/cloudflare-ddns.sh ipv4 <MY_DOMAIN_NAME>

#update AAAA record
sudo bash /config/scripts/ddns/cloudflare-ddns.sh ipv6 <MY_DOMAIN_NAME>

转载 https://echowings.github.io/zh-cn/p/%E5%A6%82%E4%BD%95%E5%9C%A8debian-12%E4%B8%8A%E5%AE%89%E8%A3%85proxmox-ve-8/
更改Debian 12的apt安装源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 #备份 /et/apt/source.list
cp /etc/apt/sources.list /etc/apt/sources.list-bak

#选项 1: 使用官方debian 12 源
tee /etc/apt/sources.list << "EOF"
deb http://deb.debian.org/debian bookworm main non-free-firmware
deb-src http://deb.debian.org/debian bookworm main non-free-firmware

deb http://deb.debian.org/debian-security/ bookworm-security main non-free-firmware
deb-src http://deb.debian.org/debian-security/ bookworm-security main non-free-firmware

deb http://deb.debian.org/debian bookworm-updates main non-free-firmware
deb-src http://deb.debian.org/debian bookworm-updates main non-free-firmware
EOF

#选项 2:使用中科大mirrors.utsc.edu.cn源
# Downlaod and Install debian 12 sourcelist
curl -fsSL https://mirrors.ustc.edu.cn/repogen/conf/debian-https-4-bookworm -o /etc/apt/sources.list


apt update && apt -y dist-upgrade

apt install -y neovim net-tools

网卡更名,把网卡名字还原为ethx(可选操作)

1
2
3
4
5
6
7
8
9
10
11
12
13
export PATH=$PATH:/usr/sbin:/home/$(whoami)/.local/bin
echo "export PATH=$PATH:/usr/sbin:/home/$(whoami)/.local/bin" >> ~/.bashrc

cp /etc/default/grub /etc/default/grub-bak
sed -i '/GRUB_CMDLINE_LINUX=/s/"$/net.ifnames=0 biosdevname=0"/' /etc/default/grub

#更改网卡名字 enp2s0 更改为eth0,根据你实际网卡名字更改
sed -i 's/enp2s0/eth0/' /etc/network/interfaces
update-grub


# 重启系统生效
systemctl reboot

更改hosts文件的hostname

1
2
3
4
5
6
ipv4_addr=$(ip -4 route get 8.8.8.8 | awk {'print $7'} | tr -d '\n')
echo $ipv4_addr
sed -i "s/127.0.1.1/${ipv4_addr}/g" /etc/hosts
cat /etc/hosts

hostname --ip-address

更换PVE Sourcelist

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#可选操作,2选1
#选项 1: PVE官方sourcelist
tee /etc/apt/sources.list.d/pve-install-repo.list << "EOF"
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
EOF

# 选项2: 中科大国内镜像
tee /etc/apt/sources.list.d/pve-install-repo.list << "EOF"
deb [arch=amd64] https://mirrors.ustc.edu.cn/proxmox/debian/pve bullseye pve-no-subscription
EOF

#安装gpg密钥
#如下操作2选1
#选项 1: 官方站点
wget http://download.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg

#选项2: 中科大镜像
wget https://mirrors.ustc.edu.cn/proxmox/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg


#Ceph源更改
#二选一

#选项 1: pve官方源
echo "deb http://download.proxmox.com/debian/ceph-quincy bookworm no-subscription" > /etc/apt/sources.list.d/ceph.list

#选项 2: 中科大国内镜像
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-quincy bookworm no-subscription" > /etc/apt/sources.list.d/ceph.list

# 更新并安装
apt update && apt -y full-upgrade

# Install proxmxo ve kernel
apt install pve-kernel-6.2

# 重启系统
systemctl reboot

安装proxmox ve软件包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 安装proxmox ve 软件包
apt install -y proxmox-ve postfix open-iscsi

#移除debian 12的内核
apt remove linux-image-amd64 'linux-image-6.1*'
update-grub

# 移除 OS-PROBER
apt remove -y os-prober

# 关闭登录pve 未订阅提醒对话框
sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service

# 删除pve 企业源
rm -f /etc/apt/sources.list.d/pve-enterprise.list

# 安装 openvswitch-switch
apt install -y openvswitch-switch

更改中科大 lxc模板源

1
2
cp /usr/share/perl5/PVE/APLInfo.pm /usr/share/perl5/PVE/APLInfo.pm_back
sed -i 's|http://download.proxmox.com|https://mirrors.ustc.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm

参考文档
Install Proxmox VE on Debian 12 Bookworm
Debian SourcesList

转载 https://www.vnf.cc/2019/11/openwrt-openvpn-server/

本文主要实现在OpenWRT路由器系统下搭建OpenVPN服务器方便远程连接

之前一直是在OpenWRT使用Openconnect VPN,因为是SSLVPN使用起来结合CISCO的anyconnect客户端是很方便的,但是由于现在ISP连这种基于SSL的流量也有可以做识别并封公网IP,所以不得不考虑切换至基于UDP的OpenVPN了。

下面主要分三步:

(1)在OpenWRT安装并配置好OpenVPN

(2)配置多用户方案

(3)结合Luci去显示OpenVPN

那么现在开始吧,目前系统是使用了最新的OpenWRT 19.07.0-rc1, 同时适用于OpenWrt 18.06.4

1.在OpenWRT安装并配置好OpenVPN

先安装好本次所需的全部软件

1
2
opkg update
opkg install openvpn-easy-rsa openvpn-mbedtls luci-app-openvpn

配置防火墙开放相应端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Configure firewall
uci rename firewall.@zone[0]="lan"
uci rename firewall.@zone[1]="wan"
uci rename firewall.@forwarding[0]="lan_wan"
uci del_list firewall.lan.device="tun0"
uci add_list firewall.lan.device="tun0"
uci -q delete firewall.vpn
uci set firewall.ovpn="rule"
uci set firewall.ovpn.name="Allow-OpenVPN"
uci set firewall.ovpn.src="wan"
uci set firewall.ovpn.dest_port="1194"
uci set firewall.ovpn.proto="udp"
uci set firewall.ovpn.target="ACCEPT"
uci commit firewall
/etc/init.d/firewall restart
OpenWRT Firewall

生成服务器和客户端证书

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Configuration parameters
export EASYRSA_PKI="/etc/easy-rsa/pki"
export EASYRSA_REQ_CN="ovpnca"

# Remove and re-initialize the PKI directory
easyrsa --batch init-pki

# Generate DH parameters
# 此步会较久
easyrsa --batch gen-dh

# Create a new CA
easyrsa --batch build-ca nopass

# Generate a keypair and sign locally for a server
easyrsa --batch build-server-full server nopass

# Generate a keypair and sign locally for a client
easyrsa --batch build-client-full client nopass

生成服务器配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# Generate TLS PSK
OVPN_PKI="/etc/easy-rsa/pki"
openvpn --genkey --secret ${OVPN_PKI}/tc.pem

# Configuration parameters
OVPN_DIR="/etc/openvpn"
OVPN_PKI="/etc/easy-rsa/pki"
OVPN_DEV="$(uci get firewall.lan.device | sed -e "s/^.*\s//")"
OVPN_PORT="$(uci get firewall.ovpn.dest_port)"
OVPN_PROTO="$(uci get firewall.ovpn.proto)"
OVPN_POOL="192.168.8.0 255.255.255.0"
OVPN_DNS="${OVPN_POOL%.* *}.1"
OVPN_DOMAIN="$(uci get dhcp.@dnsmasq[0].domain)"
OVPN_DH="$(cat ${OVPN_PKI}/dh.pem)"
OVPN_TC="$(sed -e "/^#/d;/^\w/N;s/\n//" ${OVPN_PKI}/tc.pem)"
OVPN_CA="$(openssl x509 -in ${OVPN_PKI}/ca.crt)"
NL=$'\n'

# Configure VPN server
umask u=rw,g=,o=
grep -l -r -e "TLS Web Server Auth" "${OVPN_PKI}/issued" \
| sed -e "s/^.*\///;s/\.\w*$//" \
| while read -r OVPN_ID
do
OVPN_CERT="$(openssl x509 -in ${OVPN_PKI}/issued/${OVPN_ID}.crt)"
OVPN_KEY="$(cat ${OVPN_PKI}/private/${OVPN_ID}.key)"
cat << EOF > ${OVPN_DIR}/${OVPN_ID}.conf
verb 3
user nobody
group nogroup
dev ${OVPN_DEV}
port ${OVPN_PORT}
proto ${OVPN_PROTO}
server ${OVPN_POOL}
topology subnet
client-to-client
keepalive 10 120
persist-tun
persist-key
push "dhcp-option DNS ${OVPN_DNS}"
push "dhcp-option DOMAIN ${OVPN_DOMAIN}"
push "redirect-gateway def1"
push "persist-tun"
push "persist-key"
<dh>${NL}${OVPN_DH}${NL}</dh>
<tls-crypt>${NL}${OVPN_TC}${NL}</tls-crypt>
<ca>${NL}${OVPN_CA}${NL}</ca>
<cert>${NL}${OVPN_CERT}${NL}</cert>
<key>${NL}${OVPN_KEY}${NL}</key>
EOF
done
/etc/init.d/openvpn restart

OVPN_POOL=”192.168.8.0 255.255.255.0” 定义的地址池不要和内网已有的地址冲突 push “redirect-gateway def1” 是将OpenVPN的网关作为默认网关,会创建默认路由指向OpenVPN的网关,如果只是需要访问家里的网络,可将这条按需要修改,如push “route 192.168.1.0 255.255.255.0 192.168.8.1”

用ip addr show tun0和cat /var/run/openvpn.server.status确认一下OpenVPN运行状态

OpenVPN Status

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
生成客户端ovpn文件

# 先确定使用DDNS还是公网IP作为OpenVPN连接使用,并配置好OVPN_SERV参数,本次以DDNS地址为例子
OVPN_SERV="ddns.example.com"

# Configuration parameters
OVPN_DIR="/etc/openvpn"
OVPN_PKI="/etc/easy-rsa/pki"
OVPN_DEV="$(uci get firewall.lan.device | sed -e "s/^.*\s//")"
OVPN_PORT="$(uci get firewall.ovpn.dest_port)"
OVPN_PROTO="$(uci get firewall.ovpn.proto)"
OVPN_TC="$(sed -e "/^#/d;/^\w/N;s/\n//" ${OVPN_PKI}/tc.pem)"
OVPN_CA="$(openssl x509 -in ${OVPN_PKI}/ca.crt)"
NL=$'\n'

# Generate VPN client profiles
umask u=rw,g=,o=
grep -l -r -e "TLS Web Client Auth" "${OVPN_PKI}/issued" \
| sed -e "s/^.*\///;s/\.\w*$//" \
| while read -r OVPN_ID
do
OVPN_CERT="$(openssl x509 -in ${OVPN_PKI}/issued/${OVPN_ID}.crt)"
OVPN_KEY="$(cat ${OVPN_PKI}/private/${OVPN_ID}.key)"
cat << EOF > ${OVPN_DIR}/${OVPN_ID}.ovpn
verb 3
dev ${OVPN_DEV%%[0-9]*}
nobind
client
remote ${OVPN_SERV} ${OVPN_PORT} ${OVPN_PROTO}
auth-nocache
remote-cert-tls server
<tls-crypt>${NL}${OVPN_TC}${NL}</tls-crypt>
<ca>${NL}${OVPN_CA}${NL}</ca>
<cert>${NL}${OVPN_CERT}${NL}</cert>
<key>${NL}${OVPN_KEY}${NL}</key>
EOF
done
ls ${OVPN_DIR}/*.ovpn

将该ovpn导入到OpenVPN的客户端就可以链接上OpenVPN服务器

Connection Status

至此一般的OpenVPN Server配置已经完成,目前存在的问题就是一个证书只能连接上一个客户端,下一步就是将会配置多用户的方案。

2.多用户模式

多用户方案有两种,一种是生成多个证书文件,每个用户单独使用一个证书;另外一种就是使用单证书配合用户密码的形式。

这两种都会贴一下配置,因为连回家主要是为了方便,所以会以用户名密码的方式为主。

多证书方式:

需要生成另外一组用户公钥和私钥

1
2
3
4
5
# Configuration parameters
export EASYRSA_PKI="/etc/easy-rsa/pki"

# Add one more client
easyrsa --batch build-client-full client1 nopass

然后在/etc/easy-rsa/pki/issued找到client1.crt,在/etc/easy-rsa/pki/private找到client1.key

将client1.crt的cert和client1.key的key替换ovpn文件中的段即可生成给第二位用户的ovpn文件

单证书多用户模式:

创建用户认证脚本(checkpsw.sh)

/etc/openvpn/checkpsw.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/bin/sh
###########################################################
# checkpsw.sh (C) 2004 Mathias Sundman <mathias@openvpn.se>
#
# This script will authenticate OpenVPN users against
# a plain text file. The passfile should simply contain
# one row per user with the username first followed by
# one or more space(s) or tab(s) and then the password.

PASSFILE="/etc/openvpn/psw-file"
LOG_FILE="/etc/openvpn/openvpn-password.log"
TIME_STAMP=`date "+%Y-%m-%d %T"`

###########################################################

if [ ! -r "${PASSFILE}" ]; then
echo "${TIME_STAMP}: Could not open password file \"${PASSFILE}\" for reading." >> ${LOG_FILE}
exit 1
fi

CORRECT_PASSWORD=`awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}' ${PASSFILE}`

if [ "${CORRECT_PASSWORD}" = "" ]; then
echo "${TIME_STAMP}: User does not exist: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
exit 1
fi

if [ "${password}" = "${CORRECT_PASSWORD}" ]; then
echo "${TIME_STAMP}: Successful authentication: username=\"${username}\"." >> ${LOG_FILE}
exit 0
fi

echo "${TIME_STAMP}: Incorrect password: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
exit 1

配置执行权限

chmod +x /etc/openvpn/checkpsw.sh

配置用户密码文件

/etc/openvpn/psw-file

1
2
user1 passwd1
user2 passwd2

修改服务端配置文件

在/etc/openvpn/server.conf后面添加

1
2
3
4
script-security 3
auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env
username-as-common-name
verify-client-cert none

修改客户端配置文件

删除掉

添加如下内容:

auth-user-pass

那样就可以使用用户密码登录了。

3.OpenWRT Luci集成

这一步主要是方便在OpenWRT的Web界面方便看到OpenVPN的状态信息

确保已经安装好

opkg install luci-app-openvpn

通过命令修改luci配置

1
2
3
4
5
6
7
8
9
10
11
12
# Provide VPN instance management
ls /etc/openvpn/*.conf \
| while read -r OVPN_CONF
do
OVPN_ID="$(basename ${OVPN_CONF%.*} | sed -e "s/\W/_/g")"
uci -q delete openvpn.${OVPN_ID}
uci set openvpn.${OVPN_ID}="openvpn"
uci set openvpn.${OVPN_ID}.enabled="1"
uci set openvpn.${OVPN_ID}.config="${OVPN_CONF}"
done
uci commit openvpn
/etc/init.d/openvpn restart

Luci Status

refer:

1.OpenVPN basic

2.Openvpn 2.4 设置用户密码认证