心情随笔–一个WordPress站点

在linux平台上如果需要实现任务调度功能可以编写cron脚本来实现。

以某一频率执行任务

linux缺省会启动crond进程,crond进程不需要用户启动、关闭。

crond进程负责读取调度任务并执行,用户只需要将相应的调度脚本写入cron的调度配置文件中。

cron的调度文件有以下几个:

1.crontab

2.cron.d

3.cron.daily

4.cron.hourly

5.cron.monthly

6.cron.weekly

如果用的任务不是以hourlymonthlyweekly方式执行,则可以将相应的crontab写入到crontab或cron.d目录中。

示例:

每隔一分钟执行一次脚本/opt/bin/test-cron.sh

可以在cron.d新建脚本echo-date.sh

内容为

*/1****root/opt/bin/test-cron.sh

2、cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron是Linux的内置服务,如果它不自动起来,可以用以下的方法启动、关闭这个服务:

/sbin/servicecrondstart//启动服务

/sbin/servicecrondstop//关闭服务

/sbin/servicecrondrestart//重启服务

/sbin/servicecrondreload//重新载入配置

你也可以将这个服务在系统启动的时候自动启动:

在/etc/rc.d/rc.local这个脚本的末尾加上:

/sbin/servicecrondstart

现在Cron这个服务已经在进程里面了,我们就可以用这个服务了

查看服务是否已经运行用ps-ax|grepcron

3、crontab命令

查看该用户下的crontab服务是否创建成功,用crontab-l命令

命令whichphp查看linux下安装的php的路径

cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:

crontab-u//设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数

crontab-l//列出某个用户cron服务的详细内容

crontab-r//删除没个用户的cron服务

crontab-e//编辑某个用户的cron服务

比如说root查看自己的cron设置:crontab-uroot-l

再例如,root想删除fred的cron设置:crontab-ufred-r

在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab-uroot-e

进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1****ls>>/tmp/ls.txt

任务调度的crond常驻命令crond是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

crontab命令选项:

-u指定一个用户

-l列出某个用户的任务计划

-r删除某个用户的任务

-e编辑某个用户的任务

4、cron文件语法:

分小时日月星期命令

0-590-231-311-120-6command(取值范围,0表示周日一般一行对应一个任务)

记住几个特殊符号的含义:

“*”代表取值范围内的数字,

“/”代表”每”,

“-”代表从某个数字到某个数字,

“,”分开几个离散的数字

5、新增调度任务

新增调度任务可用两种方法:

1)、在命令行输入:crontab-e然后添加相应的任务,wq存盘退出。

2)、直接编辑/etc/crontab文件,即vi/etc/crontab,添加相应的任务。

6、查看调度任务

crontab-l//列出当前的所有调度任务

crontab-l-ujp//列出用户jp的所有调度任务

7、删除任务调度工作

crontab-r//删除所有任务调度工作

8、任务调度执行结果的转向

例1:每天5:30执行ls命令,并把结果输出到/jp/test文件中

305***ls>/jp/test2>&1

注:2>&1表示执行结果及错误信息。

编辑/etc/crontab文件配置cron

cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。

用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root//如果出现错误,或者有数据输出,数据作为邮件发给这个帐号

HOME=///使用者运行的路径,这里是根目录

#run-parts

01****rootrun-parts/etc/cron.hourly//每小时执行/etc/cron.hourly内的脚本

024***rootrun-parts/etc/cron.daily//每天执行/etc/cron.daily内的脚本

224**0rootrun-parts/etc/cron.weekly//每星期执行/etc/cron.weekly内的脚本

4241**rootrun-parts/etc/cron.monthly//每月去执行/etc/cron.monthly内的脚本

大家注意”run-parts”这个参数了,如果去掉这个参数的话,后面就可以写::要运行的某个脚本名,而不是文件夹名了。

例如:

1)在命令行输入:crontab-e然后添加相应的任务,wq存盘退出。

2)直接编辑/etc/crontab文件,即vi/etc/crontab,添加相应的任务

1122110*rm-rf/mnt/fb

总结:

编写定时任务的两种方式:1.sudovim/etc/crontab2.sudocrontab-e

查看定时任务的两种方式:1.sudocat/etc/crontab2.sudocrontab-l

*/1****appusercd/app/webserver/website/api-cb.chuchujie.com/master/current/script/&&./back_coupon.sh210>>/dev/null2>&1

查看定时任务是否运行:

sudotail-f/var/log/cron//定时任务日志(查看刚才设置的任务是否执行)

注:脚本有可执行权限

sha.sh(不需要执行权限)

./sh(需要执行权限)

ddif=/dev/zerobs=1Mcount=4096>>FydeOS.img

sudolosetup/dev/loop18FydeOS.img#挂载img文件sudopartprobe/dev/loop18#重载分区表

sudoparted/dev/loop18unitsprintrm1mkpartSTATE5898240s100%quit

fdisk-l

sudolosetup-d/dev/loop18

sudomkdir/mnt/lswjj#创建临时文件夹sudomount/dev/loop18p1/mnt/lswjj#根据重载分区表后的情况是p1还是p2等修改文件sudosync#同步文件sudoumount/mnt/lswjj#卸载挂载的目录sudolosetup-d/dev/loop18#卸载挂载的设备

今天车里听到这首歌,当年的林志颖是多么的稚嫩。我的青春,我的回忆。

一个B类地址,它的子网掩码为255.255.224.0,能划分多少个子网每个子网容纳多少台主机

255.255.224.0转成二进制是:11111111.11111111.11100000.00000000

从上可以看出它向主机位借了三位,子网为2的3次方等于8,所以它有8个子网,分别为:000001010011100101110111减去首尾即:001-110六个子网

再看主机位,减去子网尾,也就是2的13次方减去2等于8190也就是每个子网可以容纳8190台主机上述子网掩码化成二进制就是11111111111111111110000000000000就是说向主机位借了3位1.子网个数=把借的主机位个数做为2的几次方,也就是2的三次方=8个子网:2,每个子网容纳的主机数=把网络位(0的位数)做为2的几次方再减去2=2的13次方-2=8190。

这是规率,如果不知道原因就先记规率,以后会明白的。255.255.224.0/19这个19代表是19位16进制的1由于是一个B类的地址,所有前16位是网络位。而后16位才包括子网为和主机位。要记住几个公式主机数是2的N次幂-2这里的N是代表这16位0的个数。255.255.224.0他的十六进制就是11111111.11111111.11100000.00000000后面的0的数量就是N,也就是主机数。所以该掩码的主机数是2的13次幂-2等于8192个

子网数后16位中1个个数就是2的3次幂8个子网数

可用的子网号分别是0,32,64,96,128,160,192,224这八个。(是用256-224=32然后依次递加32直到224)

所以他们的可用的子网地址就是172.16.0.0172.16.32.0以此类推到172.16.224.0这8个。

每个子网可用主机地址的范围是172.16.0.1~172.16.31.254172.16.32.1172.16.63.254以此类推直到172.16.192.1~172.16.223.254

新安装的Linux系统,建议安装好后,运行3个bench测试命令。

wget-qO-bench.sh|bash或者

curl-Lso-bench.sh|bash命令2:

wget-qO-86.re/bench.sh|bash或者

curl-so-86.re/bench.sh|bash备注:bench.sh既是脚本名,同时又是域名。

同时最好做一下Unixbench。

UnixBench是一个类unix系(Unix,BSD,Linux)统下的性能测试工具,一个开源工具,被广泛用与测试linux系统主机的性能。Unixbench的主要测试项目有:系统调用、读写、进程、图形化测试、2D、3D、管道、运算、C库等系统基准性能提供测试数据。

测试方法:

Double-PrecisionWhetstone这一项测试浮点数操作的速度和效率。这一测试包括几个模块,每个模块都包括一组用于科学计算的操作。覆盖面很广的一系列c函数:sin,cos,sqrt,exp,log被用于整数和浮点数的数学运算、数组访问、条件分支(conditionalbranch)和程序调用。此测试同时测试了整数和浮点数算术运算。

ExeclThroughput此测试考察每秒钟可以执行的execl系统调用的次数。execl系统调用是exec函数族的一员。它和其他一些与之相似的命令一样是execve()函数的前端。

PipeThroughput管道(pipe)是进程间交流的最简单方式,这里的Pipethroughtput指的是一秒钟内一个进程可以向一个管道写512字节数据然后再读回的次数。需要注意的是,pipethroughtput在实际编程中没有对应的真实存在。

Pipe-basedContextSwitching这个测试两个进程(每秒钟)通过一个管道交换一个不断增长的整数的次数。这一点很向现实编程中的一些应用,这个测试程序首先创建一个子进程,再和这个子进程进行双向的管道传输。

SystemCallOverhead测试进入和离开操作系统内核的代价,即一次系统调用的代价。它利用一个反复地调用getpid函数的小程序达到此目的。

ShellScripts测试一秒钟内一个进程可以并发地开始一个shell脚本的n个拷贝的次数,n一般取值1,2,4,8。(我在测试时取1,8)。这个脚本对一个数据文件进行一系列的变形操作(transformation)。

很有趣,家里有蒲公英的路由器,其实已经不怎么用了,因为有一些硬盘还没来得及放到nas里面,所以挂到了蒲公英的U盘共享里面。

目前碰到了一个问题是如何在Linux里面挂载这个硬盘。

红色部分非常关键,蒲公英共享如果不输入这部分是没有办法正常共享的。

WireGuard是由JasonDonenfeld等人用C语言编写的一个开源3层网络隧道工具,被视为下一代VPN协议,旨在解决许多困扰IPSec/IKEv2、OpenVPN或L2TP等其他VPN协议的问题。它与Tinc和MeshBird等现代VPN产品有一些相似之处,即加密技术先进、配置简单。从2020年1月开始,它已经并入了Linux内核的5.6版本,这意味着大多数Linux发行版的用户将拥有一个开箱即用的WireGuard。

无论你是想破墙而出,还是想在服务器之间组网,WireGuard都不会让你失望,它就是组网的『乐高积木』,就像ZFS是构建文件系统的『乐高积木』一样。

WireGuard与其他VPN协议的性能测试对比:

可以看到WireGuard直接碾压其他VPN协议。再来说说OpenVPN,大约有10万行代码,而WireGuard只有大概4000行代码,代码库相当精简。

WireGuard优点:

WireGuard不能做的事:

当然,你可以使用WireGuard作为底层协议来实现自己想要的功能,从而弥补上述这些缺憾。

注意

WireGuard的安装条件非常苛刻,对内核版本要求极高,不仅如此,在不同的系统中,内核,内核源码包,内核头文件必须存在且这三者版本要一致,RedHat、CentOS、Fedora等系统的内核,内核源码包,内核头文件包名分别为kernel、kernel-devel、kernel-headers;Debian、Ubuntu等系统的内核,内核源码包,内核头文件包名分别为kernel、linux-headers。果这三者任一条件不满足的话,则不管是从代码编译安装还是从repository直接安装,也只是安装了wireguard-tools而已。而WireGuard真正工作的部分,是wireguard-dkms,也就是动态内核模块支持(DKMS),是它将WireGuard编译到系统内核中。

目前WireGuard已经被合并到Linux5.6内核中了,如果你的内核版本>=5.6,就可以用上原生的WireGuard了,只需要安装wireguard-tools即可,内核版本<5.6,可能需要首先更新内核,否则可能会报错:Unabletoaccessinterface:Protocolnotsupported,如下为更新内核版本示例(CentOS)

了,只需要安装wireguard-tools即可,内核版本<5.6,可能需要首先更新内核,否则可能会报错:Unabletoaccessinterface:Protocolnotsupported,如下为更新内核版本示例(CentOS)

#重启reboot#查看升级后的内核版本uname--kernel-release牛刀小试最开始尝试可以在内网中进行,避开互联网不稳定或者防火墙等因素,节点可以是内网中的两台虚拟机或者跑两个docker容器进行尝试。

下面在docker容器中进行最简单的配置,环境信息如下:

创建两个容器wg1和wg2

#创建wg1dockerrun--rm-it--entrypoint=bash\--name=wg1\--cap-add=NET_ADMIN\--cap-add=SYS_MODULE\-ePUID=1000\-ePGID=1000\-v/lib/modules:/lib/modules\--sysctl="net.ipv4.conf.all.src_valid_mark=1"\linuxserver/wireguard#同样的方式,新开一个session创建wg2dockerrun--rm-it--entrypoint=bash\--name=wg2\--cap-add=NET_ADMIN\--cap-add=SYS_MODULE\-ePUID=1000\-ePGID=1000\-v/lib/modules:/lib/modules\--sysctl="net.ipv4.conf.all.src_valid_mark=1"\linuxserver/wireguard#在新开一个session查看wg1和wg2的ip,记住此IP,后续会用到dockerinspectwg1|grepIPAddress#假设是172.17.0.2dockerinspectwg2|grepIPAddress#假设是172.17.0.3配置生成在wg1上执行如下命令生成wg1和wg2的配置

注意IP地址的CIRD(ClasslessInter-DomainRouting)表示法:

wg1.conf:

$ping5.5.5.2PING5.5.5.2(5.5.5.2)56(84)bytesofdata.From5.5.5.1icmp_seq=1DestinationHostUnreachableping:sendmsg:Destinationaddressrequired...但是在wg2上pingwg1的内网IP5.5.5.1是可以ping通的,因为配置了相应的endpoint

$ping5.5.5.1PING5.5.5.1(5.5.5.1)56(84)bytesofdata.64bytesfrom5.5.5.1:icmp_seq=1ttl=64time=0.493ms64bytesfrom5.5.5.1:icmp_seq=2ttl=64time=0.195ms此时wg1和wg2peer已经配对,再在wg1上pingwg2可以ping通,至此简单的隧道已搭建完毕。

所谓直连,是指peer的一端位于NAT后,没有公网IP地址,另一端位于公网中,有独立的不变IP地址,通过位于NAT后的peer主动加入位于公网的peer达到组网的目的,假设位于NAT后的peer提供了局域网服务,那么位于公网的peer就可以直接访问NAT后的局域网服务,如下图所示:

假设位于公网主机的IP为3.68.156.128,称为peer2,位于NAT后的主机称为peer1,那么peer2的配置应该如下,注意,以下配置私钥只是举例,请勿照搬,应参考牛刀小试中自行修改。

#放开udp43155端口iptables-AINPUT-pudp--destination-port43155-jACCEPT#关闭该端口#iptables-DINPUT-pudp--destination-port43155-jACCEPTpeer1配置peer1的配置应该如下:

$wginterface:wg10publickey:1yrnzlpVNhpQyyBj0oehVqCaL/06RjK/tcd3icMuZ0Q=privatekey:(hidden)listeningport:43155在peer1中启动服务,输出如下信息,可以观察到

$wginterface:wg10publickey:451o6In0DqSTyg1GE4WzrK4Z0BLuFXTrjdqjBJ/RLwc=privatekey:(hidden)listeningport:33807peer:1yrnzlpVNhpQyyBj0oehVqCaL/06RjK/tcd3icMuZ0Q=endpoint:3.68.156.128:43155allowedips:5.5.5.1/32latesthandshake:3secondsagotransfer:92Breceived,180Bsentpersistentkeepalive:every15seconds此时,再去peer2中查看wg信息,可以看到peer1的endpoint自动加上了,该endpoint和端口会根据NAT进行变化,这就是所谓IP漫游,而这一点是用户感知不到的,无需关心。

$wginterface:wg10publickey:1yrnzlpVNhpQyyBj0oehVqCaL/06RjK/tcd3icMuZ0Q=privatekey:(hidden)listeningport:43155peer:451o6In0DqSTyg1GE4WzrK4Z0BLuFXTrjdqjBJ/RLwc=endpoint:5.20.222.65:33807allowedips:5.5.5.2/32,192.168.2.0/24latesthandshake:26secondsagotransfer:212Breceived,92Bsent尝试在peer2上访问peer1上的内网服务

如下为测试直连场景时的截图说明

注意,应该先看直连方案后在看中转方案,中转方案是基于直连方案之上的。且对wireguard配置文件有一定了解

在现实情况中更多的场景是中转,如两台设备都处于NAT中,一台设备需要访问另外一台设备所处的内网,假设是peer1,peer2仍然是处于公网中的主机(假设IP为3.68.156.128),peer3则是需要访问peer1中内网服务的主机,如下图所示:

本地使用iptables进行家庭内网转发,指定peer为中转服务器peer2,并配置peer2的endpoint

#放开udp43155端口iptables-AINPUT-pudp--destination-port43155-jACCEPT#关闭该端口#iptables-DINPUT-pudp--destination-port43155-jACCEPTpeer3配置peer3配置最简单,只作为流量接收,不做转发,需要配置peer2的endpoint

$ping192.168.2.5PING192.168.2.5(192.168.2.5)56(84)bytesofdata.64bytesfrom192.168.2.5:icmp_seq=1ttl=127time=213ms64bytesfrom192.168.2.5:icmp_seq=2ttl=127time=213ms...如下为测试中转(网关)场景时的截图说明

iptables注意事项

如果发现主机peer3去ping主机peer1能成功,但是telnet端口不通有可能是iptables规则顺序问题,wireguard中有如下几条规则

(该情况可能发生在peer1或peer2,主要看规则是不是加在丢弃所有包的规则之后!)

PostUp=iptables-AFORWARD-i%i-jACCEPTPostUp=iptables-AFORWARD-o%i-jACCEPTPostUp=iptables-tnat-APOSTROUTING-oeth0-jMASQUERADE这几条规则其实会在FORWARD链中末尾追加内容,如下所示(使用iptables-nvLFORWARD可查看)

ChainFORWARD(policyDROP0packets,0bytes)pktsbytestargetprotoptinoutsourcedestination...#该规则会舍弃掉所有包00DROPall--**0.0.0.0/00.0.0.0/07448REJECTall--**0.0.0.0/00.0.0.0/0...#如下为追加的规则00ACCEPTall--wg21*0.0.0.0/00.0.0.0/000ACCEPTall--*wg210.0.0.0/00.0.0.0/0仔细观察一下上面的规则其实是有问题的,因为iptables会从上往下匹配,发现有DROP和REJECT两条规则,规则都是所有丢弃所有包,我们自己添加的规则由于顺序问题导致优先级更低,所以其实没生效,因此只要将PostUp中的追加(-A)该为插入(-I),如下所示

PostUp=iptables-IFORWARD-i%i-jACCEPTPostUp=iptables-IFORWARD-o%i-jACCEPTPostUp=iptables-tnat-IPOSTROUTING-oeth0-jMASQUERADE改完之后规则顺序如下

在弹出来的窗口中填写连接信息,名称任意,主机填写路由器的地址,认证方法选择【密码】,用户名和密码填写进入路由器的Web管理界面的用户名和密码,也就是路由器的管理员账号和密码,填写完成后点击【确当】按钮添加

在主页面中就可以看到刚刚添加的路由器了,点击路由器名称进行连接,弹出是否保存密钥,点击【接受并保存】

连接到路由器之后,我们需要在root文件夹下新建一个文件夹用来存储WireGuard的信息,输入一下命令新建文件夹

复制代码输入完以上命令后输入ls然后回车就可以看到刚刚新建的文件夹了

使用cd命令进入刚刚新建的文件夹

输入一下命令对文件夹设置权限

为路由器端创建公钥和私钥,sprivatekey为私钥,spublickey为公钥

复制代码输入完上面的命令后输入ls就可以看到创建的公钥和私钥了,在使用cat命令查看公钥和私钥的内容并且记录下来

在浏览器打开路由器的Web管理界面,点击【网络】>【接口】>【添加新接口】

接口名称任意,我自己填写的是WG0,新接口的协议选【WireGuardvirtual**】,然后点击【提交】

在【基本设置】中,把刚刚记录下来的私钥填写上去,监听端口自己指定一个,IP地址填写一个私有IP,不能与自己的局域网冲突就可以

【高级设置】保持默认

【防火墙设置】悬着【virtual**】,如果没有【virtual**】选项的就选【LAN】,我这个就没有【virtual**】选项,选好了之后点击【保持&应用】

在接口里面就可以看到刚刚新增的WG0接口了

接口新建完了之后还需要设置防火墙规则,点击【网络】>【防火墙】>【自定义规则】,把下面的命令粘贴进去,注意:192.168.5.0/24是WireGuard的网段,就是刚刚在接口里面填写的那个IP地址的网段,-o参数如果路由器的LAN口没有取消桥接就是br-lan,如果取消桥接了就是网口,例如eth0或者eth1等,如果不清楚自己的是什么可以在【网络】下的【接口】里面查看【LAN】口的名称或者网口,添加完成后点击【重启防火墙】

防火墙规则自定义完成后还需要开放端口,点击【网络】>【防火墙】>【通信规则】,滑倒最下面,在名称处填写一个名称,名称自定义,协议选【UDP】,外部端口填刚刚添加新端口时填写的监听端口,填写完成后点击【添加】,然后点击【保存&应用】,如果OpenWrt是旁路有,那么需要在主路由上做端口转发,外部端口和内部端口都填刚刚新建端口时填写的监听端口,IP地址填旁路有的IP地址,协议填UDP协议。

二、创建以及配置其他用户端回到命令模式,在WireGuard文件夹下在新建一个文件夹,这样的目的是方便管理,一个用户一个文件夹,我这里创建了一个01文件夹,创建完成后使用cd命令进入文件夹

先给01这个用户创建一个预共享密钥并查看记录下来,这个预共享密钥不是必须的,但是有这个可以提升访问的速度,使用以下命令

在使用创建01用户的私钥和公钥并且查看记录下来

公钥和私钥都生成后返回路由器的Web管理界面,点击【网络】>【接口】并找到刚刚创建的接口然后点击【修改】

找到Peers这一项,点击【添加】,在公钥那个地方填写刚刚01用户的公钥,允许的IP填写一个IP,要和刚刚创建的新接口在同一个网段上的,但是不能冲突,勾选上路由允许的IP,最下面的【更多选项】选泽【预共享密钥】,然后点击旁边的【添加】

点击【预共享密钥】旁边的【添加】之后,就可以看到预共享密钥这个填写框了,把刚刚创建的01用户的预共享密钥填写进去,填写完成后点击【保存&应用】按钮

这样路由器这端就设置好了,只需要生成配置文件然后再其他端导入配置文件就可以使用了,如果需要外网访问的话可以做一个端口映射,如果自己没有公网地址的话可以使用FRP进行穿透,配置文件是不能自动生成的,所以需要自己用文本文档填写好然后改成conf格式的文件,配置文件的格式如下,把对应的部分替换成自己的就可以,最后一行保持默认就可以。

复制代码下面这个是我配置好的文件,可以做一个参考

配置完成后点击【文件】>【另存为】,文件名为:xxx.conf,保持类型为:所有文件(*.*)

最后把这个文件导入到用户端使用就可以了。

本期视频给大家介绍两种方法搭建FRP内网穿透服务器,一种方法是使用Docker,另外一种方法是直接创建服务。视频的最后会讲一下防火墙的设置,这也是萌新经常遇到的一个坑。

本教程需求:RaspberryPi4ModelB(内存2GB或以上)、拥有宽带连接的2.4GHz或5GHz的WLAN(SSID不可带有下划线(_)、DHCP服务器能够给指定的MAC地址分配固定的IP地址功能、需要能够顺畅连接raw.githubusercontent.com)、一台显示器、USB接口的键盘以及一张容量至少为16GB且速度等级为C10或以上的MicroSD卡。

清华大学TUNA源的速度还是很不错的。此外,阿里云镜像站(mirrors.aliyun.com)也提供相同的镜像。系统镜像下载完成后,解压之,得到ISO文件。

使用SDCardFormatter格式化MicroSD卡。

格式化完成后,打开Win32DiskImager,向MicroSD卡写入系统镜像。

步骤1.1.2刷写完成后,MicroSD卡的boot分区会被分配一个盘符,进入此分区,新建文件wpa_supplicant.conf和SSH。使用编辑器(不得使用Window记事本)编辑wpa_supplicant.conf文件,填入以下内容:

ctrl_interface=DIR=/var/run/wpa_supplicantGROUP=netdevupdate_config=1network={ssid="WiFi的SSID"psk="WiFi密码"}保存即可,SSH文件则保持空白。拔出MicroSD卡,将其插入树莓派。

执行echo"PermitRootLoginyes">>/etc/ssh/sshd_config&&echo"PasswordAuthenticationyes">>/etc/ssh/sshd_config后执行systemctlrestartsshd,使用root用户重新SSH连接至树莓派即可。

执行rm/etc/apt/sources.list.d/*.list清除不必要的源。编辑/etc/apt/sources.list文件,将deb.debian.org和security.debian.org尽数替换为mirrors.cloud.tencent.com并在下方添加以下两行内容:

其中,前3行的mirrors.cloud.tencent.com可以替换为其他支持Debian11的源,第5行的mirrors.cloud.tencent.com可以替换为其他支持RaspberryPiOS的源。部分源并不同时支持两者。

执行aptupdate&&sudoaptdist-upgrade-y&&aptinstall-yraspberrypi-kernel-headers以更新软件包数据库、更新软件包和安装raspberrypi内核头文件。

编辑/etc/network/interfaces文件,清除原有内容后填入以下内容:

autoloifaceloinetloopbackautowlan0ifacewlan0inetstaticaddress192.168.1.233/24gateway192.168.1.1其中,192.168.1.233/24和192.168.1.1分别为步骤1.2.1中提到的树莓派被分配到的IP地址和网关。修改完成后保存。

执行hostnamectlset-hostnameRPi4-PVE-01,其中RPi4-PVE-01请自定义。编辑/etc/hosts文件,清除原有内容后填入以下内容:

127.0.0.1localhost192.168.1.233RPi4-PVE-01其中,192.168.1.233和RPi4-PVE-01分别为步骤1.2.1中提到的树莓派被分配到的IP地址和主机名。

树莓派默认的SWAP大小只有100M,非常不适合本文场景,故请编辑/etc/dphys-swapfile文件,将原先CONF_SWAPSIZE的值从100改为2048;执行/etc/init.d/dphys-swapfilestop&&/etc/init.d/dphys-swapfilestart以应用更改。

一切完成后,重新启动系统。

将树莓派连接至显示器,插入键盘,执行aptinstall-yproxmox-ve。因安装过程中将重置网络,故请勿直接在SSH中直接执行aptinstall-yproxmox-ve。

弹出配置Postfix时,请选择Localsystem。

安装需要半个小时左右,建议耐心等待;安装完成后,请重新启动设备。

编辑/etc/network/interfaces文件,在source-directory/etc/network/interfaces.d此行上方插入以下内容:

autowlan0ifacewlan0inetdhcpwpa-ssid114514wpa-pskqweasdzxc123autovmbr0ifacevmbr0inetstaticaddress10.154.46.1netmask255.255.255.0bridge-portsnonebridge-stpoffbridge-fd0post-upiptables-tnat-APOSTROUTING-s'10.154.46.0/24'-owlan0-jMASQUERADEpost-downiptables-tnat-DPOSTROUTING-s'10.154.46.0/24'-owlan0-jMASQUERADE其中,wpa-ssid后为WLAN的SSID,wpa-psk后为WLAN的密码。其他内容请按需修改。执行systemctlrestartnetworking以重启网络设备。

编辑/etc/sysctl.conf文件,添加以下内容:

vm.overcommit_memory=1net.ipv4.ip_forward=1net.ipv4.conf.all.rp_filter=1net.ipv4.icmp_echo_ignore_broadcasts=1net.ipv4.conf.default.forwarding=1net.ipv4.conf.default.proxy_arp=0net.ipv4.conf.default.send_redirects=1net.ipv4.conf.all.send_redirects=0保存后执行sysctl-p使其生效。

用户名和密码与步骤2.1中设置的系统用户名和密码一致;语言可选Chinese(Simplified)。

单击本机唯一的节点,选择“凭证”,单击上方的“上传自定义凭证”按钮上传自定义的证书。此操作会让ProxmoxVE用户界面在重载时使用自定义的证书,在主机名对应的情况下提供基于TLS的身份验证和加密的安全性。(把pve.iks.moe解析到步骤1.2.1中提到的192.168.1.233然后再传证书,刷新即可。)

单击节点下的local,选择ISO映像,单击上方的“上传”(如果本地有镜像的话)或“从URL下载”下载相应的镜像。

将镜像的URL粘贴到文本框后单击右边的“查询网址”,待文件名成功显示后即可单击下方的“立即下载”按钮。下载过程将在后台进行,进度将被实时打印。

名称请自定义,其他内容请留空;在单击对话框底部的“下一步”前,请勾选左边的“高级”。

此处“操作系统”选择“不使用任何介质”。

勾选“QEMU代理”,并将BIOS改为OVMF(UEFI),“添加EFI磁盘”下的“存储”选择local。

随后的“磁盘大小(GiB)”和“内存(MiB)”请按需选择,其他配置建议默认。

单击“完成”以开始创建虚拟机。

单击刚刚创建的虚拟机,选择“硬件”,单击选中CD/DVD驱动器(ide2)后点击上方的“删除”按钮。

单击上方的“添加”,选择“CD/DVD驱动器”。

“总线/设备”选择SCSI,顺序为2;使用“存储”为local,“ISO映像”为步骤4.1下载的Debian11.1ARM64镜像;单击对话框底部的“创建“按钮。

单击“选项”,双击右方的“引导顺序”,将scsi2改为如图在scsi0后、在net0前的顺序,单击对话框下方的“OK”保存之。

单击右上角的“启动”按钮,再单击右方的“控制台”进入noKVM,稍等片刻即可进入Debian安装程序。

请按照默认值进行安装。

当出现Networkautoconfigurationfails时请不要惊慌,因为我们在步骤3.2配置的网桥vmbr0没有DHCP功能,故自动DHCP无法生效,此时我们需要指定网络配置。

此处选择Configurenetworkmanually,在后续页面输入步骤3.2中提到的10.154.46.2/24。

此处的Nameserveraddress应该为步骤1.2.1中提到的192.168.1.1。

后续配置不是特别复杂,在此按下不表。(注意:需要手动配置软件包源为China以加快后续的安装速度)

KVM虚拟机安装大功告成。

单击节点下的local,选择CT模板,单击上方的“上传”(如果本地有镜像的话)或“从URL下载”下载相应的镜像。

将镜像的URL粘贴到文本框后单击右边的“查询网址”,待文件名成功显示后修改文件名为方便辨识发行版名称和版本的格式,然后单击下方的“立即下载”按钮。下载过程同样将在后台进行,进度也将被实时打印。

“密码”(需要“确认密码”)和“SSH公钥”(可以通过下方的“加载SSH密钥文件”按钮载入)任选其一设置即可。

“存储”选择local,“模板”选择在步骤5.1中下载的模板;单击对话框底部的“下一步”;随后的“磁盘大小(GiB)”和“内存(MiB)”请按需选择,其他配置建议默认。

“IPv4/CIDR”填写步骤3.2中提到的10.154.46.3/24,“网关(IPv4)”填写步骤3.2中提到的10.154.46.1,其他内容保持默认;单击在步骤“确认”下方的“完成”按钮以开始创建LXC容器。

开机方法与KVM相同,单击右上角的“启动”按钮,再单击右方的“控制台”即可直接进入已经安装完成的容器。

THE END
1.重庆大学开源软件镜像站重庆大学开源软件镜像站,致力于为国内和校内用户提供高质量的开源软件镜像、Linux 镜像源服务,帮助用户更方便地获取开源软件。本镜像站由重庆大学蓝盟负责维护。http://mirrors.cqu.edu.cn/
2.ChatGPTClaude国内中文版镜像网站整理合集(2025年版)Claude镜像站 :clade.top 提供了与官网相同或几乎相同的内容,包括Claude 3、Claude 2以及chatgpt3.5等大模型,支持文本和语言处理、图片和文档上传、多文档对话、逻辑推理等功能。 镜像站的优势在于可直接访问,提供与官网一致的对话服务。 国内的ChatGPT和Claude中文版镜像网站为用户提供了便捷的访问途径,尤其适合那些无https://www.bilibili.com/opus/1012097936524312585
3.zlibrary网址入口,最新镜像地址及国内可用官网网站(持续更新)zlibrary电脑客户端/安卓App zlibrary(windows/mac/安卓/ipad)安装包下载:https://pan.quark.cn/s/45d1c03ef62b(随时失效,先保存) 客户端每天可以下载20本电子书,比网页版多10本,防止丢失或失效,先转存。无需魔法就能正常使用,比镜像站稳定。 https://www.cnblogs.com/zlibrary-zlib/articles/18588675
4.Z本站实时自动检测并更新Z-Library镜像的可用网址链接,由于网络及国家(学校)的限制,不一定所有网址都能在您所在的位置访问。通常情况下,一半以上是有效的 本页面收集Z-Library镜像的新替代域…https://www.appmiu.com/15438.html
5.ZLibraryPro助手可以检测Zlibrary 最新可用地址镜像的在线工具https://openi.cn/sites/3147.html
6.PirateLibraryMirror盗版图书馆镜像项目放出31TB数据–书伴一个名为 Pirate Library Mirror 的盗版图书馆镜像项目最近释出了更多电子书资源,加上之前(2022 年 7 月 1 日)放出的 7T 资源,电子书总数量达 22,433,982 本,文件总大小达 31TB。 Pirate Library Mirror 是一个匿名的盗版图书馆镜像项目,声称项目的目标是致力于保存和解放人类知识。其团队博客 Anna’s https://bookfere.com/post/1018.html
7.Docker最新超详细版教程通俗易懂(基础版)docker镜像就好比是一个目标,可以通过这个目标来创建容器服务,tomcat镜像==>run==>容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。 容器(container): Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的. https://blog.csdn.net/qq_38140292/article/details/123256877
8.LibraryGenesis图书馆创世纪中文(中国)Library Genesis 的“替代”下载屏幕 在这里,您可以单击镜像 1-5(请注意,尽管名称不同,但 URL 与镜像指南中的相同)。还有一些 torrent 链接,但它们似乎效果不太好。 该过程与下面相同 – 只是要经过另一个屏幕。 步骤5从镜像下载(2024年4月更新) https://www.librarygenesis.net/
9.记住这58条Allegro使用技巧,秒变大神!29. Z_COPY命令在shape symbol和flash symbol格式中不能使用: 在setup>drawing size>type去变换工作平臺2)如何镜像摆放到底层? 方法一:先在option选mirror,在选器件; 方法二:先选器件,然后右键 –> mirror4)添加信号仿真模型库:Analyze –> SI/EMI Sim –> Library 添加模型库 –> Add existing librarhttps://www.eet-china.com/mp/a12446.html
10.OpenHarmony3.2Beta5更新一览ScenSmart一站式智能制造平台从镜像站点获取 表2 获取源码路径 版本源码版本信息下载站点SHA256校验码软件包容量 全量代码(标准、轻I683Z1 【新增功能】ArkUI适配根据资源名称获取资源 I68DBH 【基础能力】提供多级菜单和分组菜单能力 文件管理 文件管理 本示例主要展示了文件管理相关的功能,使用mediaLibrary、userFileManager、fileio等接口https://www.scensmart.com/?p=10176
11.7Packing / unpacking: 7z, XZ, BZIP2, GZIP, TAR, ZIP and WIM Unpacking only: APFS, AR, ARJ, CAB, CHM, CPIO, CramFS, DMG, EXT, FAT, GPT, HFS, IHEX, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, QCOW2, RAR, RPM, SquashFS, UDF, UEFI, VDI, VHD, VHDX, VMDK, XAR and Z. http://www.7-zip.org/
12.Allegro操作说明中文文档.docx3、定义routekeepin区域(可使用Z-copy操作)4、定义packagekeepin区域5、添加定位孔28、Allegro定义层叠4、添加信号仿真模型库:Analyze–>SI/EMISim–>Library添加模型库–>Addexistinglibrary–>locallibraryhttps://m.renrendoc.com/paper/268347658.html
13.civitai镜像站镜像站原理mob64ca13fae001的技术博客拉取镜像(保证本地没有该镜像): [root@server1 docker]# docker pull nginx Using default tag: latest latest: Pulling from library/nginx fc7181108d40: Pull complete d2e987ca2267: Pull complete 0b760b431b11: Pull complete Digest: sha256:48cbeee0cb0a3b5e885e36222f969e0a2f41819a68e07aeb6631cahttps://blog.51cto.com/u_16213594/10973810
14.跟曉龍學Linux–LearningLinux大部分的 Mac apps 都是镜像文件(后缀为.dmg ),这些软件大部分都需要安装过才能使用,以前使用过 Linux 的用户对此不会感到陌生。从网上下载一个软件镜像,然后双击,安装界面就会弹出来了。 还有部分的 Mac Apps,只需要把软件的图标拖到 Applications 目录下就算完成安装了。删除也很简单,把图标拖到垃圾桶里就好了https://xlongh.wordpress.com/
15.教程教你用服务器一键搭建谷歌镜像站–爱玩吧cuber在github分享了他的谷歌镜像73站搭建代码,使镜像73站点搭建非常简单。如果你部署了镜像站,可以提交这里70来分享给更多人。 代码:https://github.com/cuber/ngx_http_google_filter_module258 Nginx Google 扩展 扯两句 很多朋友通过各种方式问过我: “你丫怎么不开源啊…” https://www.aiwanba.net/post/3151.html
16.Docker超详细讲解镜像操作dockerdocker.io/library/ubuntu:16.04 如果从非官方的仓库下载,则需要在仓库名称前指定完整的仓库地址,例如: 1 $ docker pull hub.c.163.com/public/ubuntu:16.04 另外,有时需要使用镜像代理服务来加速Docker 镜像获取 过程 ,在前面《Docker安装及加速》一文中已经讲述。 3. 查看镜像信息 使用docker images或docker imaghttps://www.jb51.net/article/258984.htm
17.ebscoazEBSCO is the leading provider of research databases, e-journals, magazine subscriptions, ebooks and discovery service for academic libraries, public libraries, corporations, schools, government and medical institutionshttps://www.ebsco.com/
18.“照片”的搜索结果–Mac玩儿法然后我每周都会定时在周末找个时间把 Photo Library 里的重复图片找出来,因为我的 iPhone 和 iCloud 看到了腾讯云的技术文档提到了对站内图片的 WebP 转化,毕竟全部 CDN 化已经是一个基础工作,剩下的优化并且在下方提供了截屏保存到本地/系统剪贴板、屏幕镜像的功能。右侧就是待管理项目列表,可以对 iPhonehttps://www.waerfa.com/search/%E7%85%A7%E7%89%87/feed/rss2/
19.Docker入门Hub官方仓库使用及搭建本地私有仓库(CentOS7)登录容器镜像服务控制台(需要注册账号):https://cr.console.aliyun.com/?spm=a2c4g.11186623.2.15.19e611beo3Fhq5,在左侧的镜像中心->镜像加速器页面会显示为您独立分配的加速地址: https://z6pn1lmd.mirror.aliyuncs.com CentOS 7系统配置方式: 1)将默认的配置文件(/lib/systemd/system/docker.service)复制到http://cdn.modb.pro/db/443202
20.Docker入门Hub官方仓库使用及搭建本地私有仓库(CentOS7)登录容器镜像服务控制台(需要注册账号):https://cr.console.aliyun.com/?spm=a2c4g.11186623.2.15.19e611beo3Fhq5,在左侧的镜像中心->镜像加速器页面会显示为您独立分配的加速地址: https://z6pn1lmd.mirror.aliyuncs.com CentOS 7系统配置方式: 1)将默认的配置文件(/lib/systemd/system/docker.service)复制到https://www.ucloud.cn/yun/129382.html
21.欢迎访问网易开源镜像站镜像名上次更新时间使用帮助 archlinux/2024-12-22 01:45archlinux使用帮助 archlinux-cn/2024-12-21 11:51archlinux-cn使用帮助 archlinuxarm/2024-12-22 02:03- centos/2024-12-22 00:14centos使用帮助 centos-vault/2024-12-17 19:52- ceph/2024-12-21 18:18ceph使用帮助 http://mirrors.163.com/
22.设计之镜–消隐的实验,上海/上海交通大学设计学院奥默默工作先锋事务所◎Nilcraftz塑形乌托邦:◎QZY:Model Masters◎RAC·深耕建筑+交互留学◎一卜川施工图深化镜面上三角形的“裂口”是大会时尚馆的入口, 三角的内部利用不同角度的小三角镜面塑造空间的镜像折叠,充满了力量感,白色的材质纯净整洁,悬挑12米的楼梯直插云霄,人登顶的那一刻仿佛能够感受到站在云端之https://www.gooood.cn/the-mirror-of-design-an-experiment-about-disappearance-by-oumoumou-studio.htm
23.GitHub上超赞的Linux软件合集SD分享导航站SD分享导航站它在一个包里集成了 Percona Server 和 Percona XtraBackup,带 Codership Galera library of MySQL Clonezilla –Clonezilla 是一款分区以及磁盘镜像/克隆程序,类似 True Image? 或 Norton Ghost?。 本站所有素材均来自网络或用户分享,版权归属原作者,如果侵犯了您的版权,就随时联系我们的客服(邮箱:https://home.designshidai.com/8454.html
24.LibraryGenesisGuide我经常更新这个指南,并定期测试所有链接和镜像,以确保您总是可以访问这个资源。当然,如果您有任何问题或问题-与我联系在这里。 How to download books from Library Genesis and libgen: 如何从图书馆创世纪和 libgen 下载图书: Step 1 第一步 Goto the Library Genesis website 去图书馆创世纪网站 https://www.douban.com/note/797027905/
25.>第4章管理OracleSolarisZFS存储池有关创建镜像存储池的信息,请参见创建镜像存储池。 RAID-Z 存储池配置 除镜像存储池配置外,ZFS 还提供具有单/双/三奇偶校验容错性的 RAID-Z 配置。单奇偶校验 RAID-Z (raidz或raidz1) 与 RAID-5 类似。双奇偶校验 RAID-Z (raidz2) 与 RAID-6 类似。 https://docs.oracle.com/cd/E19253-01/819-7065/6n91mt18p/index.html
26.MavenCentralOfficial search by the maintainers of Maven Central Repository.https://search.maven.org/
27.theinternetarchive七色猫视频Please add this domain to one of your websites. Whoops, looks like this domain isn't yet set up correctly. If you're the site owner, please check your site management tools to verify your domain settings.http://archive.org/
28.[译]如何成为“海盗”存档者?–同和故事匯提示:本文“收藏collect(~ion)”“存档archive”“镜像mirror”含义相似,且均可作动词和名词。 注:「Pirate Library Mirror」 是一个匿名盗版图书馆镜像项目,声称致力于人类知识的保存和解放,即长期保存。该项目镜像的第一个图书馆是 Z-library,2022年7月1日首次发布 7T 的电子书资源,9月25日再次发布 24TB 数https://hocassian.cn/archives/reprint/10895/
29.best它为每台安卓手机都配备了线路规划和驾驶导航,完全的交通网络覆盖,查看驾驶时间,搜寻附近加油站,它甚至Foobar2000 is minimal and customizable, MediaMonkey is an library-organizing monster, and Winamp 感谢 seyaki, 黄飘逸@Zhxstud, mikelong, zhexen, 天毅, myparamita, baggio1987 翻译为中文。感谢https://xbeta.info/tag/best-list/feed
30.centso7简单方便安装安装ansible–蓝队云(采用国内镜像) Windows远程桌面(mstsc)不能复制粘贴的解决办法 Memcached介绍和详解 linux重启mysql失败ctrl+z挂起的进程恢复与杀死 如何查看云服务器的mac地址 Linux使用tcpdump命令抓包并使用wireshark分析 控制权限 单网卡多 IP 怎么指定出站 IP [Docker] 错误之“docker build“ requires exactly 1 https://www.landui.com/docs-7929
31.Ubuntu桌面操作系统综合贴镜像站一般同时提供了各个版本的BT下载种子,大家自由选择下载方式。下载完成后最好校验一下哈希值,镜像站的目录里都有相应的文本文件标明了各文件的校验值。 小知识: 1)32位windows操作系统只能支持最多3G的内存,但是Linux32位系统对内存的支持无此限制,完美支持大内存。这是Linux内核的一点小优势(为什么说是小优势http://it.en369.cn/jiaocheng/1729037710a928503.html