style:add_highlight

This commit is contained in:
dichgrem
2025-11-21 18:43:00 +08:00
parent f59ce84988
commit 845850871a
31 changed files with 429 additions and 428 deletions

View File

@@ -120,7 +120,7 @@ DKIM (DomainKeys Identified Mail) 的缩写,允许发送者通过在邮件的
经过了 SPF 和 DKIM 的保证,是不是就可以完美的发送接收邮件了?其实并不能,我们通过邮件后台来看一下邮件的原始文本。 经过了 SPF 和 DKIM 的保证,是不是就可以完美的发送接收邮件了?其实并不能,我们通过邮件后台来看一下邮件的原始文本。
```` ````bash
MIME-Version: 1.0 MIME-Version: 1.0
Return-Path: xxx@fake.com Return-Path: xxx@fake.com
DKIM-Signature: d=fake.com,b=adceabkekd12 DKIM-Signature: d=fake.com,b=adceabkekd12

View File

@@ -13,15 +13,15 @@ tags = ["Network"]
## VPS上的配置 ## VPS上的配置
### 修改VPS hostname ### 修改VPS hostname
``` ```bash
hostnamectl set-hostname mail.your-domain.com hostnamectl set-hostname mail.your-domain.com
``` ```
### 修改hosts文件 ### 修改hosts文件
``` ```bash
vim /etc/hosts vim /etc/hosts
``` ```
添加一行 添加一行
``` ```bash
127.0.1.1 localhost.localdomain mail.your-domain.com 127.0.1.1 localhost.localdomain mail.your-domain.com
``` ```
@@ -30,7 +30,7 @@ vim /etc/hosts
docker compose文件示例 docker compose文件示例
``` ```yaml
version: '3.7' version: '3.7'
services: services:

View File

@@ -68,7 +68,7 @@ nexttrace --queries 3 --parallel-requests 4 example.com
nexttrace --table --no-rdns www.example.org nexttrace --table --no-rdns www.example.org
``` ```
### 示例 ### 示例
``` ```bash
nexttrace 38.207.170.5x nexttrace 38.207.170.5x
NextTrace v1.4.0 2025-04-16T01:10:07Z dccc41b NextTrace v1.4.0 2025-04-16T01:10:07Z dccc41b
[NextTrace API] preferred API IP - 198.18.0.61 - 601.41ms - 🐠 (Relay) → Misaka.HKG [NextTrace API] preferred API IP - 198.18.0.61 - 601.41ms - 🐠 (Relay) → Misaka.HKG

View File

@@ -36,7 +36,7 @@ Aria2 有以下几个特点:
首先下载[aria2-1.37.0-win-64bit-build1.zip](https://github.com/aria2/aria2/releases/tag/release-1.37.0),将下载好的文件解压并放到你喜欢的目录下,设置系统环境变量,类似``D:\DATA\Data\AriaNg-1.3.10-AllInOne``,随后即可在 CMD 中使用``aria2c -v``查看Aria2 。 首先下载[aria2-1.37.0-win-64bit-build1.zip](https://github.com/aria2/aria2/releases/tag/release-1.37.0),将下载好的文件解压并放到你喜欢的目录下,设置系统环境变量,类似``D:\DATA\Data\AriaNg-1.3.10-AllInOne``,随后即可在 CMD 中使用``aria2c -v``查看Aria2 。
然后创建一个配置文件``C:\Users\<你>\.aria2\aria2.conf``,内容如下: 然后创建一个配置文件``C:\Users\<你>\.aria2\aria2.conf``,内容如下:
``` ```conf
# 下载目录 # 下载目录
dir=C:/Users/<你>/Downloads dir=C:/Users/<你>/Downloads
@@ -53,7 +53,7 @@ rpc-secret=<你的密码>
``` ```
随后在这个项目中[winsw](https://github.com/winsw/winsw)下载 WinSW-x64.exe到一个目录并重命名为 aria2-service.exe并在同目录下创建``aria2-service.xml``,内容如下: 随后在这个项目中[winsw](https://github.com/winsw/winsw)下载 WinSW-x64.exe到一个目录并重命名为 aria2-service.exe并在同目录下创建``aria2-service.xml``,内容如下:
``` ```xml
<service> <service>
<id>aria2</id> <id>aria2</id>
<name>Aria2 Service</name> <name>Aria2 Service</name>
@@ -71,16 +71,16 @@ rpc-secret=<你的密码>
Arch linux 和大部分常规发行版可以适用此方法。 Arch linux 和大部分常规发行版可以适用此方法。
首先安装aria2本体: 首先安装aria2本体:
``` ```bash
paru -S aria2 paru -S aria2
``` ```
随后创建配置文件 随后创建配置文件
``` ```bash
nano /home/<you-username>/.config/aria2/aria2.conf nano /home/<you-username>/.config/aria2/aria2.conf
``` ```
内容为 内容为
``` ```conf
enable-rpc=true enable-rpc=true
rpc-listen-all=true rpc-listen-all=true
rpc-allow-origin-all=true rpc-allow-origin-all=true
@@ -92,11 +92,11 @@ save-session=/home/<you-username>/.config/aria2/aria2.session
save-session-interval=60 save-session-interval=60
``` ```
保存退出;随后创建守护进程以便开机自启动: 保存退出;随后创建守护进程以便开机自启动:
``` ```bash
nano ~/.config/systemd/user/aria2.service nano ~/.config/systemd/user/aria2.service
``` ```
写入: 写入:
``` ```conf
[Unit] [Unit]
Description=Aria2 Daemon Description=Aria2 Daemon
After=network.target After=network.target
@@ -110,18 +110,18 @@ WantedBy=default.target
``` ```
在更新配置文件和服务文件后,执行以下命令以重启服务: 在更新配置文件和服务文件后,执行以下命令以重启服务:
``` ```bash
systemctl --user daemon-reload systemctl --user daemon-reload
systemctl --user enable aria2.service systemctl --user enable aria2.service
systemctl --user start aria2.service systemctl --user start aria2.service
``` ```
使用以下命令检查服务状态: 使用以下命令检查服务状态:
``` ```bash
systemctl --user status aria2.service systemctl --user status aria2.service
``` ```
### Nixos ### Nixos
``` ```nix
{ lib, pkgs, username, ... }: { lib, pkgs, username, ... }:
{ {
services.aria2.enable = false; services.aria2.enable = false;
@@ -151,6 +151,7 @@ systemctl --user status aria2.service
}; };
} }
``` ```
## 命令行用法 ## 命令行用法
如果你不想用浏览器插件或者面板,也可以直接使用命令行操作: 如果你不想用浏览器插件或者面板,也可以直接使用命令行操作:

View File

@@ -182,7 +182,7 @@ Netlify在考虑到CDN成本以及可用性的情况下选择了以下这些地
> 需要注意的是有些CDN的回源IP并不用作节点IP比如Cloudflare的回源IP仅作回源IP使用如果要获取Cloudflare的节点IP可前往https://bgp.tools/as/13335#prefixes。而有些CDN的回源IP同时被用作CDN节点比如BunnyCDN和Gcore CDN。 > 需要注意的是有些CDN的回源IP并不用作节点IP比如Cloudflare的回源IP仅作回源IP使用如果要获取Cloudflare的节点IP可前往https://bgp.tools/as/13335#prefixes。而有些CDN的回源IP同时被用作CDN节点比如BunnyCDN和Gcore CDN。
Cloudflare Cloudflare
``` ```bash
# https://www.cloudflare.com/ips-v4 # https://www.cloudflare.com/ips-v4
103.21.244.0/22 103.21.244.0/22
103.22.200.0/22 103.22.200.0/22
@@ -210,45 +210,45 @@ Cloudflare
2c0f:f248::/32 2c0f:f248::/32
``` ```
Gcore Gcore
``` ```bash
https://api.gcore.com/cdn/public-ip-list https://api.gcore.com/cdn/public-ip-list
``` ```
BunnyCDN BunnyCDN
``` ```bash
https://api.bunny.net/system/edgeserverlist https://api.bunny.net/system/edgeserverlist
https://api.bunny.net/system/edgeserverlist/plain https://api.bunny.net/system/edgeserverlist/plain
``` ```
Cloudfront Cloudfront
``` ```bash
https://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips https://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips
https://files.imunify360.com/static/whitelist/v2/cloudfront-cdn.txt https://files.imunify360.com/static/whitelist/v2/cloudfront-cdn.txt
``` ```
CDN77 CDN77
``` ```bash
https://files.imunify360.com/static/whitelist/v2/cdn77.txt https://files.imunify360.com/static/whitelist/v2/cdn77.txt
``` ```
Fastly Fastly
``` ```bash
https://api.fastly.com/public-ip-list https://api.fastly.com/public-ip-list
``` ```
Keycdn Keycdn
``` ```bash
https://www.keycdn.com/shield-prefixes.json https://www.keycdn.com/shield-prefixes.json
``` ```
quic.cloud quic.cloud
``` ```bash
https://quic.cloud/ips https://quic.cloud/ips
``` ```
Google CDN Google CDN
``` ```bash
https://files.imunify360.com/static/whitelist/v2/google-cdn.txt https://files.imunify360.com/static/whitelist/v2/google-cdn.txt
``` ```
CacheFly CacheFly
``` ```bash
https://cachefly.cachefly.net/ips/cdn.txt https://cachefly.cachefly.net/ips/cdn.txt
``` ```
Akaima Akaima
``` ```bash
https://techdocs.akamai.com/origin-ip-acl/docs/update-your-origin-server https://techdocs.akamai.com/origin-ip-acl/docs/update-your-origin-server
``` ```
--- ---

View File

@@ -13,7 +13,7 @@ tags = ["Network"]
这里以Debian12为例 这里以Debian12为例
- 官方安装脚本: - 官方安装脚本:
``` ```bash
curl -fsSL https://get.docker.com -o get-docker.sh curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh sudo sh get-docker.sh
``` ```
@@ -21,31 +21,31 @@ sudo sh get-docker.sh
使用以下命令安装此方法的先决条件: 使用以下命令安装此方法的先决条件:
```` ````bash
sudo apt update && sudo apt install ca-certificates curl gnupg sudo apt update && sudo apt install ca-certificates curl gnupg
```` ````
创建一个目录来存储密钥环: 创建一个目录来存储密钥环:
```` ````bash
sudo install -m 0755 -d /etc/apt/keyrings sudo install -m 0755 -d /etc/apt/keyrings
```` ````
使用给定的命令下载 GPG 密钥并将其存储在 `/etc/apt/keyrings/etc/apt/keyrings` 目录中: 使用给定的命令下载 GPG 密钥并将其存储在 `/etc/apt/keyrings/etc/apt/keyrings` 目录中:
```` ````bash
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
```` ````
使用 chmod 命令更改 docker.gpg 文件的权限: 使用 chmod 命令更改 docker.gpg 文件的权限:
```` ````bash
sudo chmod a+r /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg
```` ````
使用以下命令为 Docker 设置存储库: 使用以下命令为 Docker 设置存储库:
```` ````bash
echo \ echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
@@ -53,7 +53,7 @@ echo \
```` ````
现在可以使用以下命令更新存储库索引并安装 Docker 现在可以使用以下命令更新存储库索引并安装 Docker
```` ````bash
sudo apt update && sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo apt update && sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```` ````
@@ -177,34 +177,34 @@ sudo apt update && sudo apt-get install docker-ce docker-ce-cli containerd.io do
> 删除所有 Docker 容器和 Docker 本身 > 删除所有 Docker 容器和 Docker 本身
1. 首先停止所有正在运行的容器: 1. 首先停止所有正在运行的容器:
``` ```bash
docker stop $(docker ps -aq) docker stop $(docker ps -aq)
``` ```
2. 删除所有容器 2. 删除所有容器
删除所有容器(包括停止的容器): 删除所有容器(包括停止的容器):
``` ```bash
docker rm $(docker ps -aq) docker rm $(docker ps -aq)
``` ```
3. 删除所有镜像 3. 删除所有镜像
``` ```bash
docker rmi $(docker images -q) docker rmi $(docker images -q)
``` ```
4. 删除所有网络 4. 删除所有网络
``` ```bash
docker network prune -f docker network prune -f
``` ```
5. 删除所有未使用的卷 5. 删除所有未使用的卷
``` ```bash
docker volume prune -f docker volume prune -f
``` ```
6. 卸载 Docker 6. 卸载 Docker
如果您希望完全删除 Docker 本身,可以执行以下命令: 如果您希望完全删除 Docker 本身,可以执行以下命令:
``` ```bash
sudo apt-get purge docker-ce docker-ce-cli containerd.io sudo apt-get purge docker-ce docker-ce-cli containerd.io
sudo apt-get autoremove --purge sudo apt-get autoremove --purge
sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/docker
@@ -221,7 +221,7 @@ sudo rm -rf /etc/docker
- 方法:创建两个 docker-compose 文件,并``使用同一个外部 Docker 网络``使两个服务互联。 - 方法:创建两个 docker-compose 文件,并``使用同一个外部 Docker 网络``使两个服务互联。
0. 首先``创建好工作目录``,例如: 0. 首先``创建好工作目录``,例如:
``` ```bash
. .
└── docker └── docker
├── docker-compose.nginx.yml ├── docker-compose.nginx.yml
@@ -234,13 +234,13 @@ sudo rm -rf /etc/docker
``` ```
1. 在启动服务前,首先创建一个 Docker 外部网络(例如命名为 nginx 1. 在启动服务前,首先创建一个 Docker 外部网络(例如命名为 nginx
``` ```bash
docker network create nginx docker network create nginx
``` ```
这样,无论是哪个 docker-compose 项目中的容器,只要加入此网络,就能直接通信。 这样,无论是哪个 docker-compose 项目中的容器,只要加入此网络,就能直接通信。
2. 编写 searxng 的 docker-compose 文件 2. 编写 searxng 的 docker-compose 文件
``` ```yaml
version: '3' version: '3'
services: services:
@@ -268,7 +268,7 @@ networks:
3. 编写 Nginx 的 docker-compose 文件 3. 编写 Nginx 的 docker-compose 文件
创建 nginx 的 docker-compose 文件,例如: 创建 nginx 的 docker-compose 文件,例如:
``` ```yaml
version: '3' version: '3'
services: services:
@@ -291,7 +291,7 @@ networks:
external: true external: true
``` ```
4. 编写 Nginx 配置文件 4. 编写 Nginx 配置文件
``` ```conf
server { server {
listen 80; listen 80;
server_name searxng.dich.bid; server_name searxng.dich.bid;
@@ -320,11 +320,11 @@ server {
5. 启动服务 5. 启动服务
- 启动 searxng 服务: - 启动 searxng 服务:
``` ```bash
docker-compose -f docker-compose.searxng.yml up -d docker-compose -f docker-compose.searxng.yml up -d
``` ```
- 启动 nginx 服务: - 启动 nginx 服务:
``` ```bash
docker-compose -f docker-compose.nginx.yml up -d docker-compose -f docker-compose.nginx.yml up -d
``` ```
由于两者都加入了外部网络 nginxnginx 内的``proxy_pass http://searxng:8080``就能解析到 searxng 容器,实现反向代理效果。现在,访问``http://ip:18080``就可以访问Searxng搜索引擎。 由于两者都加入了外部网络 nginxnginx 内的``proxy_pass http://searxng:8080``就能解析到 searxng 容器,实现反向代理效果。现在,访问``http://ip:18080``就可以访问Searxng搜索引擎。
@@ -337,7 +337,7 @@ docker-compose -f docker-compose.nginx.yml up -d
1. 证书生成 1. 证书生成
- 如果只是用于测试可以生成自签名证书: - 如果只是用于测试可以生成自签名证书:
``` ```bash
mkdir -p /home/dich/docker/nginx/certs mkdir -p /home/dich/docker/nginx/certs
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /home/dich/docker/nginx/certs/privkey.pem \ -keyout /home/dich/docker/nginx/certs/privkey.pem \
@@ -346,7 +346,7 @@ openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
``` ```
2. 更改searxng.conf: 2. 更改searxng.conf:
``` ```conf
server { server {
listen 443 ssl; listen 443 ssl;
server_name searxng.dich.bid; server_name searxng.dich.bid;
@@ -385,7 +385,7 @@ server {
``` ```
3. 更改docker-compose.nginx.yml 3. 更改docker-compose.nginx.yml
``` ```yaml
version: '3' version: '3'
services: services:
@@ -412,11 +412,11 @@ networks:
4. 启动新配置 4. 启动新配置
- 重启容器 - 重启容器
``` ```bash
sudo docker compose -f docker-compose.nginx.yml up -d sudo docker compose -f docker-compose.nginx.yml up -d
``` ```
- 查看日志 - 查看日志
``` ```bash
sudo docker logs searxng sudo docker logs searxng
``` ```
## Caddy ## Caddy
@@ -424,7 +424,7 @@ sudo docker logs searxng
> Caddy 自 2015 年起用 Go 语言重写,定位为“开箱即用”的现代 Web 服务器,内置自动 Lets Encrypt 证书管理和续期,默认支持 HTTP/2 及 HTTP/3QUIC并通过简洁明了的 Caddyfile 语法极大降低配置成本. > Caddy 自 2015 年起用 Go 语言重写,定位为“开箱即用”的现代 Web 服务器,内置自动 Lets Encrypt 证书管理和续期,默认支持 HTTP/2 及 HTTP/3QUIC并通过简洁明了的 Caddyfile 语法极大降低配置成本.
0. 示例结构: 0. 示例结构:
``` ```bash
. .
└── compose └── compose
├── certs ├── certs
@@ -437,11 +437,11 @@ sudo docker logs searxng
└── Caddyfile └── Caddyfile
``` ```
1. 同样创建名为Caddy的docker网络 1. 同样创建名为Caddy的docker网络
``` ```bash
docker network create caddy docker network create caddy
``` ```
2. 编写Caddy的compose可以看到caddy可以自带签发证书 2. 编写Caddy的compose可以看到caddy可以自带签发证书
``` ```yaml
version: '3.7' version: '3.7'
# 自动签发模式 # 自动签发模式
@@ -498,7 +498,7 @@ networks:
external: true external: true
``` ```
3. 编写Caddyfile可以看到自动开启HTTPS模式 3. 编写Caddyfile可以看到自动开启HTTPS模式
``` ```conf
# 自动签发模式 # 自动签发模式
searxng.dich.bid { searxng.dich.bid {
reverse_proxy searxng:8080 { reverse_proxy searxng:8080 {

View File

@@ -28,7 +28,7 @@ SSH 1 协议存在一些安全漏洞,所以``1996年又提出了 SSH 2 协议
李华是一个大学生现在他买了一台服务器公网IPv4为114.514.114.514,李华打算连到上面看看: 李华是一个大学生现在他买了一台服务器公网IPv4为114.514.114.514,李华打算连到上面看看:
``` ```bash
ssh -p 22 root@114.514.114.514 ssh -p 22 root@114.514.114.514
``` ```
随后命令行弹出了密码输入李华输入了初始密码114514,成功登录了进去;现在每次登录只要输入一行命令就可以,大功告成! 随后命令行弹出了密码输入李华输入了初始密码114514,成功登录了进去;现在每次登录只要输入一行命令就可以,大功告成!
@@ -39,7 +39,7 @@ ssh -p 22 root@114.514.114.514
于是,李华查阅了资料,发现有一篇博客[乱七八糟:服务器初始化与安全设置](https://blog.dich.bid/about-server-set/)于是他将openssh-server的端口改成了2333,并开启了fail2ban这下应该安全了 于是,李华查阅了资料,发现有一篇博客[乱七八糟:服务器初始化与安全设置](https://blog.dich.bid/about-server-set/)于是他将openssh-server的端口改成了2333,并开启了fail2ban这下应该安全了
``` ```bash
### 更换SSH端口 ### 更换SSH端口
使用root账户或已经有sudo权限的用户登录到系统。 使用root账户或已经有sudo权限的用户登录到系统。
@@ -88,7 +88,7 @@ sudo systemctl status fail2ban
但是服务器依然在被爆破,李华又又研究了以下教程,决定将自己的服务器由密码登录改为密钥登录,这下没有牛马来爆破了! 但是服务器依然在被爆破,李华又又研究了以下教程,决定将自己的服务器由密码登录改为密钥登录,这下没有牛马来爆破了!
``` ```bash
#### 执行以下命令生成.pub后缀的公钥和无后缀的密钥 #### 执行以下命令生成.pub后缀的公钥和无后缀的密钥
ssh-keygen ssh-keygen
@@ -140,7 +140,7 @@ sudo cat /etc/ssh/sshd_config | grep -E 'PasswordAuthentication|PubkeyAuthentica
随后,李华在.ssh文件夹下创建了一个文件名为``config``,并在其中写入以下内容: 随后,李华在.ssh文件夹下创建了一个文件名为``config``,并在其中写入以下内容:
``` ```bash
Host US Host US
HostName 114.514.114.514 HostName 114.514.114.514
User root User root
@@ -167,7 +167,7 @@ Host US
首先,将.ssh文件夹中的config进行修改,把私钥文件改为公钥文件,同时创建对应的``~/.ssh/US.pub``公钥文件里面是以ssh-ed25519或者ssh-rsa开头的公钥. 首先,将.ssh文件夹中的config进行修改,把私钥文件改为公钥文件,同时创建对应的``~/.ssh/US.pub``公钥文件里面是以ssh-ed25519或者ssh-rsa开头的公钥.
``` ```bash
Host US Host US
HostName 114.514.114.514 HostName 114.514.114.514
User root User root

View File

@@ -54,7 +54,7 @@ python3 -m pip install -U yt-dlp
- Arch / Manjaro`sudo pacman -S yt-dlp` - Arch / Manjaro`sudo pacman -S yt-dlp`
- Fedora`sudo dnf install yt-dlp` - Fedora`sudo dnf install yt-dlp`
- Nixos: - Nixos:
``` ```nix
{pkgs, ...}: { {pkgs, ...}: {
home.packages = with pkgs; [ home.packages = with pkgs; [
peazip peazip
@@ -74,7 +74,7 @@ python3 -m pip install -U yt-dlp
- **下载B站带字幕视频**: - **下载B站带字幕视频**:
``` ```bash
yt-dlp "https://www.bilibili.com/video/BVxxxxx" --write-subs --embed-subs --sub-langs all,-live_chat yt-dlp "https://www.bilibili.com/video/BVxxxxx" --write-subs --embed-subs --sub-langs all,-live_chat
--write-subs: 将字幕文件下载为单独文件 (如 .vtt 或 .ass) --write-subs: 将字幕文件下载为单独文件 (如 .vtt 或 .ass)
@@ -87,11 +87,11 @@ yt-dlp "https://www.bilibili.com/video/BVxxxxx" --write-subs --embed-subs --sub-
- **下载YouTube视频** - **下载YouTube视频**
先使用这个命令查看可用格式: 先使用这个命令查看可用格式:
``` ```bash
yt-dlp -F https://www.youtube.com/watch?v=xxxxxxxxxxxx yt-dlp -F https://www.youtube.com/watch?v=xxxxxxxxxxxx
``` ```
然后它会列举出所有可用的格式,如下: 然后它会列举出所有可用的格式,如下:
``` ```bash
[youtube] MgtOAVOXBWo: Downloading webpage [youtube] MgtOAVOXBWo: Downloading webpage
[youtube] MgtOAVOXBWo: Downloading tv client config [youtube] MgtOAVOXBWo: Downloading tv client config
[youtube] MgtOAVOXBWo: Downloading tv player API JSON [youtube] MgtOAVOXBWo: Downloading tv player API JSON
@@ -121,13 +121,13 @@ sb0 mhtml 160x90 0 │ mhtml │ images
623 mp4 2560x1440 60 │ ~ 1.00GiB 8945k m3u8 │ vp09.00.50.08 8945k video only Untested 623 mp4 2560x1440 60 │ ~ 1.00GiB 8945k m3u8 │ vp09.00.50.08 8945k video only Untested
``` ```
我们下载312和233,即视频和音频,使用以下命令: 我们下载312和233,即视频和音频,使用以下命令:
``` ```bash
yt-dlp -f "312+233" -o "<新视频的名字,要短一点>.%(ext)s" https://www.youtube.com/watch?v=xxxxxxxxxxxx yt-dlp -f "312+233" -o "<新视频的名字,要短一点>.%(ext)s" https://www.youtube.com/watch?v=xxxxxxxxxxxx
``` ```
这行命令会自动将下载的312的1080p/H.264的视频和233的音频合并为一个mp4视频注意新的名称不能太长否则会下载失败。 这行命令会自动将下载的312的1080p/H.264的视频和233的音频合并为一个mp4视频注意新的名称不能太长否则会下载失败。
如果要下载带字幕的视频,则使用 如果要下载带字幕的视频,则使用
``` ```bash
yt-dlp -f "312+233" --write-subs --write-auto-subs --embed-subs --sub-langs "zh.*,en.*" -o "<新视频的名字,要短一点>.%(ext)s" https://www.youtube.com/watch?v=xxxxxxxxxxx yt-dlp -f "312+233" --write-subs --write-auto-subs --embed-subs --sub-langs "zh.*,en.*" -o "<新视频的名字,要短一点>.%(ext)s" https://www.youtube.com/watch?v=xxxxxxxxxxx
``` ```
这个命令会: 这个命令会:
@@ -139,7 +139,7 @@ yt-dlp -f "312+233" --write-subs --write-auto-subs --embed-subs --sub-langs "zh.
- 参数说明 - 参数说明
``` ```bash
--write-subs: 下载手动字幕 --write-subs: 下载手动字幕
--write-auto-subs: 下载自动生成的字幕 --write-auto-subs: 下载自动生成的字幕
--embed-subs: 将字幕嵌入到视频中 --embed-subs: 将字幕嵌入到视频中

View File

@@ -103,35 +103,35 @@ tags = ["乱七八糟"]
8. **Docker日志文件**: 8. **Docker日志文件**:
使用 `docker ps -a` 命令查找你感兴趣的容器的 ID。 使用 `docker ps -a` 命令查找你感兴趣的容器的 ID。
```` ````bash
docker ps -a docker ps -a
```` ````
进入容器的日志目录,路径类似于 `/var/lib/docker/containers/<container-id>/`。 进入容器的日志目录,路径类似于 `/var/lib/docker/containers/<container-id>/`。
```` ````bash
cd /var/lib/docker/containers/<container-id>/ cd /var/lib/docker/containers/<container-id>/
```` ````
使用命令清理或删除日志文件。你可以删除所有日志文件,或者只删除特定的日志文件。 使用命令清理或删除日志文件。你可以删除所有日志文件,或者只删除特定的日志文件。
```` ````bash
# 删除所有日志文件 # 删除所有日志文件
rm *.log rm *.log
# 删除特定日志文件(例如 stdout 和 stderr # 删除特定日志文件(例如 stdout 和 stderr
rm *-json.log rm *-json.log
```` ````
## **Arch Linux 安装备份** ## **Arch Linux 安装备份**
你可以定期备份 Arch Linux 安装的软件列表,以便在需要时轻松还原。 你可以定期备份 Arch Linux 安装的软件列表,以便在需要时轻松还原。
```` ````bash
pacman -Qqe > package-list.txt pacman -Qqe > package-list.txt
```` ````
这将列出所有已安装的软件包,并将其保存到文件 `package-list.txt` 中。在还原系统时,你可以使用以下命令: 这将列出所有已安装的软件包,并将其保存到文件 `package-list.txt` 中。在还原系统时,你可以使用以下命令:
```` ````bash
sudo pacman -S --needed - < package-list.txt sudo pacman -S --needed - < package-list.txt
```` ````

View File

@@ -141,7 +141,7 @@ RSS客户端非常丰富包括 Android 端IOS 端Windows 端linux
3在文件中写入以下内容并保存 3在文件中写入以下内容并保存
``` ```yaml
version: '3.4' version: '3.4'
services: services:

View File

@@ -18,7 +18,7 @@ tags = ["乱七八糟"]
> 作者Bill Bynum/Tracy Camp 威廉玛丽学院/科罗拉多矿业学院 2002年11月5日 > 作者Bill Bynum/Tracy Camp 威廉玛丽学院/科罗拉多矿业学院 2002年11月5日
## 目录 ## 目录
``` ```bash
1. 引言 1. 引言
2. C-- 编译器语法 2. C-- 编译器语法
3. 并发结构 3. 并发结构
@@ -238,7 +238,7 @@ v(sem);
为帮助解释信号量的使用,我们提供以下简短示例: 为帮助解释信号量的使用,我们提供以下简短示例:
``` ```java
BACI System: C-- to PCODE Compiler, 09:24 2 May 2002 BACI System: C-- to PCODE Compiler, 09:24 2 May 2002
Source file: semexample.cm Sun Apr 28 20:40:12 2002 Source file: semexample.cm Sun Apr 28 20:40:12 2002
line pc line pc
@@ -277,7 +277,7 @@ line pc
我们使用以下命令生成上述编译器列表: 我们使用以下命令生成上述编译器列表:
``` ```bash
prompt% bacc semexample prompt% bacc semexample
Pcode and tables are stored in semexample.pco Pcode and tables are stored in semexample.pco
Compilation listing is stored in semexample.lst Compilation listing is stored in semexample.lst
@@ -285,7 +285,7 @@ Compilation listing is stored in semexample.lst
然后可以使用 BACI PCODE 解释器执行 semexample.pco 文件: 然后可以使用 BACI PCODE 解释器执行 semexample.pco 文件:
``` ```bash
prompt% bainterp semexample prompt% bainterp semexample
Source file: semexample.cm Sun Apr 28 20:40:12 2002 Source file: semexample.cm Sun Apr 28 20:40:12 2002
Executing PCODE ... Executing PCODE ...
@@ -295,7 +295,7 @@ before p(count) value of count is 1
这是程序可能产生的三种可能输出之一。另外两种可能的程序输出是: 这是程序可能产生的三种可能输出之一。另外两种可能的程序输出是:
``` ```bash
prompt% bainterp semexample prompt% bainterp semexample
Source file: semexample.cm Sun Apr 28 20:40:12 2002 Source file: semexample.cm Sun Apr 28 20:40:12 2002
Executing PCODE ... Executing PCODE ...
@@ -303,7 +303,7 @@ before p(count) value of count is 0
before v(count) value of count is 0 before v(count) value of count is 0
``` ```
``` ```bash
prompt% bainterp semexample prompt% bainterp semexample
Source file: semexample.cm Sun Apr 28 20:40:12 2002 Source file: semexample.cm Sun Apr 28 20:40:12 2002
Executing PCODE ... Executing PCODE ...
@@ -534,7 +534,7 @@ sprintf(x,".%12d. .%-20s. .%q. .%08X.",202,y,z,0x3c03);
以下列表由 C-- BACI 编译器生成。行号右侧的数字是开始该行的指令的 PCODE 偏移量。BACI 编译器从文件 "incremen.cm" 创建此列表。该列表被放置在文件 "incremen.lst" 中。还创建了一个 "incremen.pco" 文件;此文件由解释器使用。 以下列表由 C-- BACI 编译器生成。行号右侧的数字是开始该行的指令的 PCODE 偏移量。BACI 编译器从文件 "incremen.cm" 创建此列表。该列表被放置在文件 "incremen.lst" 中。还创建了一个 "incremen.pco" 文件;此文件由解释器使用。
``` ```java
BACI System: C-- to PCODE Compiler, 09:24 2 May 2002 BACI System: C-- to PCODE Compiler, 09:24 2 May 2002
Source file: incremen.cm Wed Oct 22 21:18:02 1997 Source file: incremen.cm Wed Oct 22 21:18:02 1997
line pc line pc
@@ -566,7 +566,7 @@ line pc
以下列表由 BACI 解释器生成。解释器执行编译到文件 "incremen.pco" 中的程序。 以下列表由 BACI 解释器生成。解释器执行编译到文件 "incremen.pco" 中的程序。
``` ```java
Source file: incremen.cm Wed Oct 22 21:18:02 1997 Source file: incremen.cm Wed Oct 22 21:18:02 1997
Executing PCODE ... Executing PCODE ...
C n =1 i =A n =1 C2 i = C n =1 i =A n =1 C2 i =
@@ -600,7 +600,7 @@ dos2unix ~/Git/java/baci/scripts/baci
``` ```
- 编写baci脚本 - 编写baci脚本
``` ```bash
#!/usr/bin/env bash #!/usr/bin/env bash
# 定位到项目根目录(包含 javabaci 子目录的目录) # 定位到项目根目录(包含 javabaci 子目录的目录)
BASEDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" BASEDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
@@ -613,19 +613,19 @@ exec java -cp "$CLASSPATH" "$@"
``` ```
- 给baci授予可执行权限 - 给baci授予可执行权限
``` ```bash
chmod +x ~/Git/java/baci/scripts/baci chmod +x ~/Git/java/baci/scripts/baci
``` ```
- 添加系统环境变量 - 添加系统环境变量
``` ```bash
fish_add_path ~/Git/java/baci/scripts fish_add_path ~/Git/java/baci/scripts
``` ```
- 查看baci是否存在 - 查看baci是否存在
``` ```bash
which baci which baci
``` ```
- 现在即可编译运行 - 现在即可编译运行
``` ```bash
baci bacc ex3_1.cm baci bacc ex3_1.cm
baci bainterp ex3_1 baci bainterp ex3_1
``` ```

View File

@@ -24,7 +24,7 @@ tags = ["乱七八糟"]
- 首先你需要有一台自己的云服务器建议在1核1G以上配置并安装Debian系统 - 首先你需要有一台自己的云服务器建议在1核1G以上配置并安装Debian系统
- 随后我们安装1panel执行以下命令一键安装 - 随后我们安装1panel执行以下命令一键安装
``` ```bash
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
``` ```
> 1panel依赖于docker如果实现没有安装docker脚本会帮你安装。 > 1panel依赖于docker如果实现没有安装docker脚本会帮你安装。
@@ -54,33 +54,33 @@ curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_
1. **安装Hugo**:选择好你的框架与主题后这里以hugo为例子随后安装hugo以及对应的依赖 1. **安装Hugo**:选择好你的框架与主题后这里以hugo为例子随后安装hugo以及对应的依赖
- **Windows** - **Windows**
``` ```bash
# 打开以管理员模式运行的PowerShell,输入命令安装 Hugo Extended # 打开以管理员模式运行的PowerShell,输入命令安装 Hugo Extended
winget install Hugo.Hugo.Extended winget install Hugo.Hugo.Extended
``` ```
- **Arch linux** - **Arch linux**
``` ```bash
paru -S hugo paru -S hugo
``` ```
- **检查版本** - **检查版本**
``` ```bash
hugo version hugo version
``` ```
2. **创建新的 Hugo 站点**:选择一个文件夹打开命令行,执行: 2. **创建新的 Hugo 站点**:选择一个文件夹打开命令行,执行:
``` ```bash
hugo new site myblog hugo new site myblog
``` ```
该命令会在``myblog``文件夹下生成hugo的基础目录。 该命令会在``myblog``文件夹下生成hugo的基础目录。
3. **安装主题**,这里以[hugo-blog-awesome](https://jamstackthemes.dev/theme/hugo-blog-awesome/)主题为例: 3. **安装主题**,这里以[hugo-blog-awesome](https://jamstackthemes.dev/theme/hugo-blog-awesome/)主题为例:
``` ```bash
cd myblog cd myblog
git clone https://github.com/hugo-sid/hugo-blog-awesome.git themes/hugo-blog-awesome git clone https://github.com/hugo-sid/hugo-blog-awesome.git themes/hugo-blog-awesome
``` ```
并在``hugo.toml``顶层添加: 并在``hugo.toml``顶层添加:
``` ```bash
theme = "hugo-blog-awesome" theme = "hugo-blog-awesome"
``` ```
这样 Hugo 在构建时会从 themes/ 目录加载主题文件。后续可使用``git pull``获取主题更新。 这样 Hugo 在构建时会从 themes/ 目录加载主题文件。后续可使用``git pull``获取主题更新。
@@ -88,7 +88,7 @@ theme = "hugo-blog-awesome"
> 你也可以直接用theme中的文件夹替换掉项目根目录下的同名文件夹并再次修改。 > 你也可以直接用theme中的文件夹替换掉项目根目录下的同名文件夹并再次修改。
4. **写入文章**:使用 Hugo 提供的命令创建新文章: 4. **写入文章**:使用 Hugo 提供的命令创建新文章:
``` ```bash
hugo new posts/hello-world.md hugo new posts/hello-world.md
``` ```
该命令会在``content/posts/``下生成 Markdown 文件,打开后修改``title、date、tags``等前缀然后撰写 Markdown 正文, Markdown 编辑器参考[前文](https://blog.dich.bid/about-markdown/)。 该命令会在``content/posts/``下生成 Markdown 文件,打开后修改``title、date、tags``等前缀然后撰写 Markdown 正文, Markdown 编辑器参考[前文](https://blog.dich.bid/about-markdown/)。
@@ -96,7 +96,7 @@ hugo new posts/hello-world.md
> 注意md文章头部和正文之间得使用``<!-- more -->``隔断 > 注意md文章头部和正文之间得使用``<!-- more -->``隔断
5. **本地测试**:在项目根目录运行: 5. **本地测试**:在项目根目录运行:
``` ```bash
hugo server -D hugo server -D
``` ```
然后在浏览器访问``http://localhost:1313``即可实时预览并查看更新效果。 然后在浏览器访问``http://localhost:1313``即可实时预览并查看更新效果。
@@ -136,7 +136,7 @@ hugo server -D
由于我所使用的平台不支持zola因此我直接在本地编译public并推送这样时间久了.git文件夹大小会非常大记录public的变化我又不想将zola的二进制包放入目录下因此有了这个办法 由于我所使用的平台不支持zola因此我直接在本地编译public并推送这样时间久了.git文件夹大小会非常大记录public的变化我又不想将zola的二进制包放入目录下因此有了这个办法
``` ```bash
# 安装git-filter-repo工具 # 安装git-filter-repo工具
paru git-filter-repo paru git-filter-repo
# 清理public相关的历史 # 清理public相关的历史

View File

@@ -26,19 +26,19 @@ tags = ["乱七八糟"]
## 免密码运行TUN模式: ## 免密码运行TUN模式:
- 检查 polkit 服务是否正在运行 - 检查 polkit 服务是否正在运行
``` ```bash
systemctl status polkit systemctl status polkit
``` ```
- 若返回状态为除 active (running) 之外的结果,运行 - 若返回状态为除 active (running) 之外的结果,运行
``` ```bash
sudo systemctl enable --now polkit sudo systemctl enable --now polkit
``` ```
- 创建 polkit 策略 - 创建 polkit 策略
``` ```bash
sudo vi /etc/polkit-1/rules.d/99-nopassword.rules sudo vi /etc/polkit-1/rules.d/99-nopassword.rules
``` ```
- 添加以下内容并保存退出 - 添加以下内容并保存退出
``` ```bash
polkit.addRule(function (action, subject) { polkit.addRule(function (action, subject) {
if ( if (
(action.id == "org.freedesktop.resolve1.set-domains" || (action.id == "org.freedesktop.resolve1.set-domains" ||
@@ -53,11 +53,11 @@ polkit.addRule(function (action, subject) {
}); });
``` ```
- 将当前用户添加至 wheel 组中,注意Debian 与衍生系统需要先创建 wheel 组,然后运行: - 将当前用户添加至 wheel 组中,注意Debian 与衍生系统需要先创建 wheel 组,然后运行:
``` ```bash
sudo usermod -G wheel 当前用户 sudo usermod -G wheel 当前用户
``` ```
- 重新加载 polkit 使更改生效 - 重新加载 polkit 使更改生效
``` ```bash
sudo systemctl restart polkit sudo systemctl restart polkit
``` ```

View File

@@ -32,13 +32,13 @@ tags = ["乱七八糟"]
**方法一** **方法一**
创建新文件夹,在你的项目目录中运行以下命令: 创建新文件夹,在你的项目目录中运行以下命令:
``` ```bash
git init --initial-branch=main git init --initial-branch=main
``` ```
这里设置默认仓库主分支名称为 main,避免因为 main/master 名称不同导致的推送问题。 这里设置默认仓库主分支名称为 main,避免因为 main/master 名称不同导致的推送问题。
> Git目前默认的主分支为 master和 github 默认分支 main 不同,这使得默认配置下 git 往往连接失败。除了创建的时候设定外还可以通过以下方法改变默认分支。 > Git目前默认的主分支为 master和 github 默认分支 main 不同,这使得默认配置下 git 往往连接失败。除了创建的时候设定外还可以通过以下方法改变默认分支。
``` ```bash
git config --global init.defaultBranch main //将默认分支修改成main git config --global init.defaultBranch main //将默认分支修改成main
``` ```
**方法二** **方法二**
@@ -55,25 +55,25 @@ git config --global init.defaultBranch main //将默认分支修改成main
Git的设置文件为.gitconfig它可以在用户主目录下全局配置也可以在项目目录下项目配置 Git的设置文件为.gitconfig它可以在用户主目录下全局配置也可以在项目目录下项目配置
- 显示当前的Git配置 - 显示当前的Git配置
``` ```bash
git config --list git config --list
``` ```
- 编辑Git配置文件 - 编辑Git配置文件
``` ```bash
git config -e [--global] git config -e [--global]
``` ```
- 设置提交代码时的用户信息 - 设置提交代码时的用户信息
``` ```bash
git config [--global] user.name "[name]" git config [--global] user.name "[name]"
git config [--global] user.email "[email address]" git config [--global] user.email "[email address]"
``` ```
- 设置大小写敏感windows不区分大小写的解决办法 - 设置大小写敏感windows不区分大小写的解决办法
``` ```bash
git config core.ignorecase false git config core.ignorecase false
``` ```
- 配置git默认使用的编辑器 - 配置git默认使用的编辑器
``` ```bash
git config --global core.editor "nvim" git config --global core.editor "nvim"
``` ```
@@ -82,18 +82,18 @@ git config --global core.editor "nvim"
连接到远程仓库并推送需要证明你有权写入仓库。早期Github可以使用密码认证现在则使用密钥认证。 连接到远程仓库并推送需要证明你有权写入仓库。早期Github可以使用密码认证现在则使用密钥认证。
- 生成密钥: - 生成密钥:
``` ```bash
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
``` ```
- 生成的文件位于``~/.ssh/config``路径下,带.pub后缀的文件为公钥不带.pub后缀的为私钥使用``cat ~/.ssh/id_rsa.pub``将公钥添加到github/gitee的设置-SSH中。 - 生成的文件位于``~/.ssh/config``路径下,带.pub后缀的文件为公钥不带.pub后缀的为私钥使用``cat ~/.ssh/id_rsa.pub``将公钥添加到github/gitee的设置-SSH中。
- 随后使用 `ssh-add` 命令将生成的密钥添加到 SSH 代理中。 - 随后使用 `ssh-add` 命令将生成的密钥添加到 SSH 代理中。
``` ```bash
ssh-add ~/.ssh/github_key ssh-add ~/.ssh/github_key
ssh-add ~/.ssh/gitee_key ssh-add ~/.ssh/gitee_key
``` ```
- 在 `~/.ssh/config` 文件中配置不同的主机别名以及相应的密钥文件。编辑该文件并添加内容,例如: - 在 `~/.ssh/config` 文件中配置不同的主机别名以及相应的密钥文件。编辑该文件并添加内容,例如:
``` ```bash
# GitHub repository 1 # GitHub repository 1
Host github1 Host github1
@@ -116,32 +116,32 @@ Host github2
``` ```
- 连接到github - 连接到github
``` ```bash
ssh -T git@github.com ssh -T git@github.com
``` ```
- 添加远程仓库: - 添加远程仓库:
``` ```bash
git remote add origin <remote_repository_url> git remote add origin <remote_repository_url>
# 例如git remote add origin git@github.com:Dichgrem/dichos.git # 例如git remote add origin git@github.com:Dichgrem/dichos.git
``` ```
> 如果你运行``git remote -v``发现URL为HTTP格式则可以用下面的命令改为Git格式 > 如果你运行``git remote -v``发现URL为HTTP格式则可以用下面的命令改为Git格式
``` ```bash
# 例如git remote set-url origin git@github.com:Dichgrem/dichos.git # 例如git remote set-url origin git@github.com:Dichgrem/dichos.git
``` ```
## 创建分支 ## 创建分支
``` ```bash
git branch main git branch main
``` ```
这将创建一个名为 main 的分支。 这将创建一个名为 main 的分支。
- 删除分支 - 删除分支
``` ```bash
git branch -d master git branch -d master
``` ```
- 使用大写强制删除 - 使用大写强制删除
``` ```bash
git branch -D master git branch -D master
``` ```
@@ -149,56 +149,56 @@ git branch -D master
## 添加和提交 ## 添加和提交
你可以提出更改(把它们添加到暂存区),使用如下命令: 你可以提出更改(把它们添加到暂存区),使用如下命令:
``` ```bash
git add <filename> git add <filename>
git add * git add *
``` ```
这是 git 基本工作流程的第一步;使用如下命令以实际提交改动: 这是 git 基本工作流程的第一步;使用如下命令以实际提交改动:
``` ```bash
git commit -m "代码提交信息" git commit -m "代码提交信息"
# 例如git commit -m "Initial commit" # 例如git commit -m "Initial commit"
``` ```
现在,你的改动已经提交到了 **HEAD**,但是还没到你的远端仓库。 现在,你的改动已经提交到了 **HEAD**,但是还没到你的远端仓库。
- 添加指定文件到暂存区 - 添加指定文件到暂存区
``` ```bash
git add [file1] [file2] ... git add [file1] [file2] ...
``` ```
- 添加指定目录到暂存区,包括子目录 - 添加指定目录到暂存区,包括子目录
``` ```bash
git add [dir] git add [dir]
``` ```
- 添加当前目录的所有文件到暂存区 - 添加当前目录的所有文件到暂存区
``` ```bash
git add . git add .
``` ```
添加每个变化前,都会要求确认 添加每个变化前,都会要求确认
- 对于同一个文件的多处变化,可以实现分次提交 - 对于同一个文件的多处变化,可以实现分次提交
``` ```bash
git add -p git add -p
``` ```
- 删除工作区文件,并且将这次删除放入暂存区 - 删除工作区文件,并且将这次删除放入暂存区
``` ```bash
git rm [file1] [file2] ... git rm [file1] [file2] ...
``` ```
- 停止追踪指定文件,但该文件会保留在工作区 - 停止追踪指定文件,但该文件会保留在工作区
``` ```bash
git rm --cached [file] git rm --cached [file]
``` ```
- 改名文件,并且将这个改名放入暂存区 - 改名文件,并且将这个改名放入暂存区
``` ```bash
git mv [file-original] [file-renamed] git mv [file-original] [file-renamed]
``` ```
## 推送改动 ## 推送改动
你的改动现在已经在本地仓库的 **HEAD** 中了。执行如下命令以将这些改动提交到远端仓库: 你的改动现在已经在本地仓库的 **HEAD** 中了。执行如下命令以将这些改动提交到远端仓库:
``` ```bash
git push origin main git push origin main
``` ```
可以把 **main** 换成你想要推送的任何分支,如**master**或者**test** 可以把 **main** 换成你想要推送的任何分支,如**master**或者**test**
如果你的远程仓库是最新的,可以使用以下命令更新本地仓库: 如果你的远程仓库是最新的,可以使用以下命令更新本地仓库:
``` ```bash
git pull git pull
``` ```
@@ -208,7 +208,7 @@ git pull
- GPG方式 - GPG方式
``` ```bash
sudo pacman -S gnupg //安装 GPG sudo pacman -S gnupg //安装 GPG
gpg --full-generate-key //生成 GPG 密钥 gpg --full-generate-key //生成 GPG 密钥
gpg --list-secret-keys --keyid-format=long //查看你生成的密钥 ID gpg --list-secret-keys --keyid-format=long //查看你生成的密钥 ID
@@ -221,7 +221,7 @@ gpg --armor --export ABCDEF1234567890 //导出公钥并添加到 GitHub
- SSH方式 - SSH方式
可以用你平时登录 GitHub 的同一个 SSH 密钥: 可以用你平时登录 GitHub 的同一个 SSH 密钥:
``` ```bash
git config --global gpg.format ssh //让 Git 使用 SSH 格式签名 git config --global gpg.format ssh //让 Git 使用 SSH 格式签名
git config --global user.signingkey ~/.ssh/Github.pub //指定使用的 SSH 公钥 git config --global user.signingkey ~/.ssh/Github.pub //指定使用的 SSH 公钥
git config --global commit.gpgsign true //表示自动签名所有提交 git config --global commit.gpgsign true //表示自动签名所有提交
@@ -231,17 +231,17 @@ git config --global commit.gpgsign true //表示自动签名所有提交
- 本地查看 - 本地查看
首先创建这个文件: 首先创建这个文件:
``` ```bash
mkdir -p ~/.ssh mkdir -p ~/.ssh
nano ~/.ssh/allowed_signers nano ~/.ssh/allowed_signers
``` ```
写入你的 ``test@mail.com ssh-ed25519 AAAABBBBBBBBBBBBBBBBxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx``并保存。 写入你的 ``test@mail.com ssh-ed25519 AAAABBBBBBBBBBBBBBBBxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx``并保存。
随后配置Git信任该文件 随后配置Git信任该文件
``` ```bash
git config --global gpg.ssh.allowedSignersFile ~/.ssh/allowed_signers git config --global gpg.ssh.allowedSignersFile ~/.ssh/allowed_signers
``` ```
随后使用``git log --show-signature``即可查看本地log中的 随后使用``git log --show-signature``即可查看本地log中的
``` ```bash
Good "git" signature for test@mail.com with ED25519 key SHA256:ssh-ed25519 AAAABBBBBBBBBBBBBBBBBBBBB Good "git" signature for test@mail.com with ED25519 key SHA256:ssh-ed25519 AAAABBBBBBBBBBBBBBBBBBBBB
``` ```
@@ -250,24 +250,24 @@ Good "git" signature for test@mail.com with ED25519 key SHA256:ssh-ed25519 AAAAB
分支是用来将特性开发绝缘开来的。比如你在本地的test分支新增了一个功能想要合并到主分支中。 分支是用来将特性开发绝缘开来的。比如你在本地的test分支新增了一个功能想要合并到主分支中。
创建一个叫做“test”的分支并切换过去 创建一个叫做“test”的分支并切换过去
``` ```bash
git checkout -b test git checkout -b test
``` ```
新增某些功能后切换回主分支: 新增某些功能后切换回主分支:
``` ```bash
git checkout master git checkout master
``` ```
在主分支上执行合并操作,将 test 分支的改动合并到主分支: 在主分支上执行合并操作,将 test 分支的改动合并到主分支:
``` ```bash
git merge test git merge test
``` ```
推送完成后可以把新建的分支删掉: 推送完成后可以把新建的分支删掉:
``` ```bash
git branch -d test git branch -d test
``` ```
### 分支常用操作 ### 分支常用操作
``` ```bash
- 列出所有本地分支 - 列出所有本地分支
git branch git branch
@@ -351,36 +351,36 @@ Git 提供两种类型的标签:
- 创建附注标签 - 创建附注标签
使用 -a 参数表示“annotated”并用 -m 提供标签说明。例如,给当前提交创建一个名为 v1.0 的附注标签: 使用 -a 参数表示“annotated”并用 -m 提供标签说明。例如,给当前提交创建一个名为 v1.0 的附注标签:
``` ```bash
git tag -a v1.0 -m "发布版本 v1.0" git tag -a v1.0 -m "发布版本 v1.0"
``` ```
这会在 Git 数据库中生成一个完整的标签对象,可通过 git show v1.0 查看标签信息和对应的提交详情。 这会在 Git 数据库中生成一个完整的标签对象,可通过 git show v1.0 查看标签信息和对应的提交详情。
如果需要给旧提交贴标签,可以在命令末尾指定提交的 SHA 值(部分 SHA 也可): 如果需要给旧提交贴标签,可以在命令末尾指定提交的 SHA 值(部分 SHA 也可):
``` ```bash
git tag -a v1.0 <commit-sha> -m "发布版本 v1.0" git tag -a v1.0 <commit-sha> -m "发布版本 v1.0"
``` ```
- 创建轻量标签 - 创建轻量标签
直接指定标签名即可,不加任何参数: 直接指定标签名即可,不加任何参数:
``` ```bash
git tag v1.0-light git tag v1.0-light
``` ```
轻量标签仅仅是一个提交引用,因此查看时不会显示附加信息。 轻量标签仅仅是一个提交引用,因此查看时不会显示附加信息。
### 列出标签 ### 列出标签
- 列出所有标签 - 列出所有标签
``` ```bash
git tag git tag
``` ```
- 还可以使用通配符过滤: - 还可以使用通配符过滤:
``` ```bash
git tag -l "v1.*" git tag -l "v1.*"
``` ```
这样便于管理和筛选大量标签。 这样便于管理和筛选大量标签。
- 查看标签详细信息 - 查看标签详细信息
``` ```bash
git show v1.0 git show v1.0
``` ```
这会显示标签对象的元数据以及对应的提交记录。 这会显示标签对象的元数据以及对应的提交记录。
@@ -388,45 +388,45 @@ git show v1.0
### 推送标签 ### 推送标签
``默认情况下git push 不会将本地标签推送到远程仓库。推送标签有两种方式:`` ``默认情况下git push 不会将本地标签推送到远程仓库。推送标签有两种方式:``
- 推送单个标签 - 推送单个标签
``` ```bash
git push origin v1.0 git push origin v1.0
``` ```
- 一次性推送所有标签 - 一次性推送所有标签
``` ```bash
git push origin --tags git push origin --tags
``` ```
### 删除标签 ### 删除标签
- 删除本地标签 - 删除本地标签
``` ```bash
git tag -d v1.0 git tag -d v1.0
``` ```
- 删除远程标签 - 删除远程标签
``` ```bash
git push origin --delete v1.0 git push origin --delete v1.0
``` ```
## 日志 ## 日志
如果你想了解本地仓库的历史记录,最简单的命令就是使用: 如果你想了解本地仓库的历史记录,最简单的命令就是使用:
``` ```bash
git log git log
``` ```
- 只看某一个人的提交记录: - 只看某一个人的提交记录:
``` ```bash
git log --author=bob git log --author=bob
``` ```
- 一个压缩后的每一条提交记录只占一行的输出: - 一个压缩后的每一条提交记录只占一行的输出:
``` ```bash
git log --pretty=oneline git log --pretty=oneline
``` ```
- 看看哪些文件改变了: - 看看哪些文件改变了:
``` ```bash
git log --name-status git log --name-status
``` ```
## 生成补丁 ## 生成补丁
比如你修改了项目中的``fs/proc/base.c``,然后 比如你修改了项目中的``fs/proc/base.c``,然后
``` ```bash
git add fs/proc/base.c git add fs/proc/base.c
git commit -m "fix:base" git commit -m "fix:base"
git format-patch origin/16.0 git format-patch origin/16.0
@@ -435,13 +435,13 @@ git format-patch origin/16.0
## 删除前一个提交记录 ## 删除前一个提交记录
有时候手滑或者不想使用一个commit说明可以用以下命令撤销上一个 commit 有时候手滑或者不想使用一个commit说明可以用以下命令撤销上一个 commit
``` ```bash
git reset --soft HEAD~1 git reset --soft HEAD~1
``` ```
这个命令会撤销上一个 commit但保留文件修改代码仍然在工作区。适用于 想要重新提交amend或调整 commit 的情况。 这个命令会撤销上一个 commit但保留文件修改代码仍然在工作区。适用于 想要重新提交amend或调整 commit 的情况。
如果你想彻底删除更改(不保留代码修改),可以使用: 如果你想彻底删除更改(不保留代码修改),可以使用:
``` ```bash
git reset --hard HEAD~1 git reset --hard HEAD~1
``` ```
> 注意:--hard 会清除未提交的更改,无法恢复。 > 注意:--hard 会清除未提交的更改,无法恢复。
@@ -450,7 +450,7 @@ git reset --hard HEAD~1
### 📁 `.git` 目录结构概览 ### 📁 `.git` 目录结构概览
``` ```bash
.git/ .git/
├── HEAD ├── HEAD
├── config ├── config
@@ -527,7 +527,7 @@ Fixes #123
这可以在提交后自动关闭相关问题。 这可以在提交后自动关闭相关问题。
### 常见的 Commit 类型 ### 常见的 Commit 类型
``` ```bash
- feat新功能的添加 - feat新功能的添加
示例feat(user): 添加用户注册功能 示例feat(user): 添加用户注册功能

View File

@@ -52,19 +52,19 @@ tags = ["乱七八糟"]
## 安装 GnuPG ## 安装 GnuPG
``` ```bash
paru -S gnupg paru -S gnupg
``` ```
## 生成公钥与私钥 ## 生成公钥与私钥
使用如下命令: 使用如下命令:
``` ```bash
gpg --full-generate-key gpg --full-generate-key
``` ```
生成流程: 生成流程:
``` ```bash
gpg (GnuPG) 2.4.7; Copyright (C) 2024 g10 Code GmbH gpg (GnuPG) 2.4.7; Copyright (C) 2024 g10 Code GmbH
This is free software: you are free to change and redistribute it. This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. There is NO WARRANTY, to the extent permitted by law.
@@ -116,7 +116,7 @@ generator a better chance to gain enough entropy.
``` ```
## 列出密钥 ## 列出密钥
``` ```bash
gpg --list-secret-keys --keyid-format long gpg --list-secret-keys --keyid-format long
``` ```
@@ -126,18 +126,18 @@ gpg --list-secret-keys --keyid-format long
例如上传你的 key 例如上传你的 key
``` ```bash
gpg --send-keys <你的LongKeyID> gpg --send-keys <你的LongKeyID>
``` ```
默认为你的 gpg.conf 中配置的 keyserver也可以显式指定 默认为你的 gpg.conf 中配置的 keyserver也可以显式指定
``` ```bash
gpg --keyserver hkps://keys.openpgp.org --send-keys <KeyID> gpg --keyserver hkps://keys.openpgp.org --send-keys <KeyID>
``` ```
也可以使用如下命令导出公钥为可读 ASCII 格式类似ssh-keys随后即可发布在个人博客上等等。 也可以使用如下命令导出公钥为可读 ASCII 格式类似ssh-keys随后即可发布在个人博客上等等。
``` ```bash
gpg --armor --export <KeyID> > mypubkey.asc gpg --armor --export <KeyID> > mypubkey.asc
``` ```
@@ -145,7 +145,7 @@ gpg --armor --export <KeyID> > mypubkey.asc
如果怀疑密钥被泄露或被中间人替换立即发布“撤销证书”revocation certificate并上传到 keyserver。 如果怀疑密钥被泄露或被中间人替换立即发布“撤销证书”revocation certificate并上传到 keyserver。
``` ```bash
gpg --gen-revoke <KeyID> > revoke.asc gpg --gen-revoke <KeyID> > revoke.asc
``` ```
上传撤销证书后,所有人都能知道该公钥已不再可信。 上传撤销证书后,所有人都能知道该公钥已不再可信。

View File

@@ -19,27 +19,27 @@ tags = ["乱七八糟"]
## 安装 ## 安装
首先安装neovim,在arch linux上是 首先安装neovim,在arch linux上是
``` ```bash
paru -S neovim paru -S neovim
``` ```
在Ubuntu上是 在Ubuntu上是
``` ```bash
sudo add-apt-repository ppa:neovim-ppa/unstable sudo add-apt-repository ppa:neovim-ppa/unstable
sudo apt update sudo apt update
sudo apt install -y \ neovim git curl unzip build-essential ripgrep fd-find sudo apt install -y \ neovim git curl unzip build-essential ripgrep fd-find
``` ```
备份现有配置: 备份现有配置:
``` ```bash
mv ~/.config/nvim ~/.config/nvim.bak mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak mv ~/.local/share/nvim ~/.local/share/nvim.bak
``` ```
克隆 LazyVim Starter 模板: 克隆 LazyVim Starter 模板:
``` ```bash
git clone https://github.com/LazyVim/starter ~/.config/nvim git clone https://github.com/LazyVim/starter ~/.config/nvim
``` ```
启动 Neovim 启动 Neovim
``` ```bash
nvim nvim
``` ```
首次启动时LazyVim 会自动安装并配置所需的插件。 首次启动时LazyVim 会自动安装并配置所需的插件。
@@ -47,7 +47,7 @@ nvim
## 结构 ## 结构
LazyVim 的配置目录通常位于``~/.config/nvim/``中: LazyVim 的配置目录通常位于``~/.config/nvim/``中:
``` ``` bash
~/.config/nvim ~/.config/nvim
tree tree
. .
@@ -231,7 +231,7 @@ LazyVim 默认使用``<space> 作为 <leader>``\ 作为``<localleader>``
在``~/config/nvim/lua/plugins/``下新建一个mp.lua写入如下配置 在``~/config/nvim/lua/plugins/``下新建一个mp.lua写入如下配置
``` ```lua
return { return {
{ {
"iamcco/markdown-preview.nvim", "iamcco/markdown-preview.nvim",
@@ -243,7 +243,7 @@ return {
``` ```
随后即可在 Neovim 中打开一个 Markdown 文件,执行以下命令启动预览:​ 随后即可在 Neovim 中打开一个 Markdown 文件,执行以下命令启动预览:​
``` ```bash
:MarkdownPreview :MarkdownPreview
``` ```

View File

@@ -19,7 +19,7 @@ tags = ["乱七八糟"]
## 三.解决方法 ## 三.解决方法
既然是高低电平表述的错误那么我们只需建立DSDT 表副本,将其修改,然后让它优先启动,从而让键盘配置正常;另外还存在 BIOS 修复,内核编译的方法,比较复杂,这里不做说明。 既然是高低电平表述的错误那么我们只需建立DSDT 表副本,将其修改,然后让它优先启动,从而让键盘配置正常;另外还存在 BIOS 修复,内核编译的方法,比较复杂,这里不做说明。
``` ```bash
首先建立一个DSDT文件夹 首先建立一个DSDT文件夹
sudo su sudo su
mkdir -p /home/dsdt mkdir -p /home/dsdt
@@ -75,7 +75,7 @@ reboot
### 修复wifi驱动 ### 修复wifi驱动
``` ```bash
# 内核小于5.18的 # 内核小于5.18的
git clone https://github.com/HRex39/rtl8852be.git git clone https://github.com/HRex39/rtl8852be.git
# 内核大于等于5.18的 # 内核大于等于5.18的
@@ -89,7 +89,7 @@ sudo modprobe 8852be
### 修复蓝牙驱动 ### 修复蓝牙驱动
``` ```bash
# 内核=5.15 # 内核=5.15
git clone https://github.com/HRex39/rtl8852be_bt.git -b 5.15 git clone https://github.com/HRex39/rtl8852be_bt.git -b 5.15
# 内核=5.18 # 内核=5.18
@@ -104,13 +104,13 @@ sudo make install
首先去amd官网下载最新的linux-amd驱动 首先去amd官网下载最新的linux-amd驱动
```` ````bash
https://www.amd.com/zh-hans/support/linux-drivers // 22.20 for Ubuntu 20.04.5 HWE https://www.amd.com/zh-hans/support/linux-drivers // 22.20 for Ubuntu 20.04.5 HWE
```` ````
修改Deepin为ubuntu 修改Deepin为ubuntu
```` ````bash
sudo vim /etc/os-release // ID=Deepin => ID=ubuntu sudo vim /etc/os-release // ID=Deepin => ID=ubuntu
sudo apt install ./amdgpu-install_22.20.50200-1_all.deb sudo apt install ./amdgpu-install_22.20.50200-1_all.deb
@@ -128,7 +128,7 @@ sudo apt install inxi clinfo
`inxi -G` `inxi -G`
```` ````bash
Graphics: Device-1: AMD Rembrandt driver: amdgpu v: kernel Graphics: Device-1: AMD Rembrandt driver: amdgpu v: kernel
Display: x11 server: X.Org 1.20.11 driver: amdgpu,ati unloaded: fbdev,modesetting,vesa Display: x11 server: X.Org 1.20.11 driver: amdgpu,ati unloaded: fbdev,modesetting,vesa
resolution: 1920x1080~60Hz resolution: 1920x1080~60Hz
@@ -138,14 +138,14 @@ Graphics: Device-1: AMD Rembrandt driver: amdgpu v: kernel
最后还原最初的修改: 最后还原最初的修改:
```` ````bash
sudo vim /etc/os-release // ID=ubuntu => ID=Deepin sudo vim /etc/os-release // ID=ubuntu => ID=Deepin
sudo apt purge amdgpu-install sudo apt purge amdgpu-install
```` ````
看下效果图: 看下效果图:
```` ````bash
➜ ~ glxinfo -B ➜ ~ glxinfo -B
name of display: :0 name of display: :0
display: :0 screen: 0 display: :0 screen: 0
@@ -193,7 +193,7 @@ OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
安装下面的三方电源管理工具 `Boost Changer`,选择 `Performance`策略即可 安装下面的三方电源管理工具 `Boost Changer`,选择 `Performance`策略即可
```` ````bash
wget https://github.com/nbebaw/boostchanger/releases/download/v4.4.0/boostchanger_4.4.0_amd64.deb wget https://github.com/nbebaw/boostchanger/releases/download/v4.4.0/boostchanger_4.4.0_amd64.deb
```` ````
## 参考 ## 参考

View File

@@ -22,7 +22,7 @@ tags = ["乱七八糟"]
- **cn 域名有被停用的风险**。2008 年,有人以跳水奥运冠军吴敏霞拼音注册了 wuminxia.cn[结果被中国互联网络信息中心CNNIC回收了域名](https://www.cnbeta.com/articles/tech/62209.htm),并转交给国家体育总局。此域名在 2021 年 2 月 28 日被优视科技[注册](https://whois.cnnic.cn/WhoisServlet?queryType=Domain&domain=wuminxia.cn)呵呵。2009 年,牛博网被域名注册商万网停止解析。 - **cn 域名有被停用的风险**。2008 年,有人以跳水奥运冠军吴敏霞拼音注册了 wuminxia.cn[结果被中国互联网络信息中心CNNIC回收了域名](https://www.cnbeta.com/articles/tech/62209.htm),并转交给国家体育总局。此域名在 2021 年 2 月 28 日被优视科技[注册](https://whois.cnnic.cn/WhoisServlet?queryType=Domain&domain=wuminxia.cn)呵呵。2009 年,牛博网被域名注册商万网停止解析。
## VPS ## VPS
``` ```bash
# 更新系统 # 更新系统
apt update && apt upgrade -y apt update && apt upgrade -y
apt install wget curl vim sudo neofetch apt install wget curl vim sudo neofetch
@@ -33,15 +33,15 @@ sudo usermod -aG sudo xxx
## BBR ## BBR
- 查询系统所支持的拥塞控制算法 - 查询系统所支持的拥塞控制算法
```` ````bash
sysctl net.ipv4.tcp_available_congestion_control sysctl net.ipv4.tcp_available_congestion_control
```` ````
- 查询正在使用中的拥塞控制算法Linux 绝大部分系统默认为 Cubic 算法) - 查询正在使用中的拥塞控制算法Linux 绝大部分系统默认为 Cubic 算法)
```` ````bash
sysctl net.ipv4.tcp_congestion_control sysctl net.ipv4.tcp_congestion_control
```` ````
- 指定拥塞控制算法为 bbr - 指定拥塞控制算法为 bbr
```` ````bash
echo net.ipv4.tcp_congestion_control=bbr >> /etc/sysctl.conf && sysctl -p echo net.ipv4.tcp_congestion_control=bbr >> /etc/sysctl.conf && sysctl -p
```` ````
@@ -56,43 +56,43 @@ echo net.ipv4.tcp_congestion_control=bbr >> /etc/sysctl.conf && sysctl -p
打开SSH配置文件`sshd_config`可以使用文本编辑器如nano或vi。以下是使用nano编辑器的示例 打开SSH配置文件`sshd_config`可以使用文本编辑器如nano或vi。以下是使用nano编辑器的示例
```` ````bash
sudo vim /etc/ssh/sshd_config sudo vim /etc/ssh/sshd_config
```` ````
在配置文件中找到以下行: 在配置文件中找到以下行:
```` ````bash
Port 22 Port 22
```` ````
这是SSH默认的端口号你可以将其更改为你想要的任何未被占用的端口号。例如将端口更改为2222 这是SSH默认的端口号你可以将其更改为你想要的任何未被占用的端口号。例如将端口更改为2222
```` ````bash
Port 2222 Port 2222
```` ````
保存并关闭文本编辑器。重新启动SSH服务以应用更改 保存并关闭文本编辑器。重新启动SSH服务以应用更改
```` ````bash
sudo service ssh restart sudo service ssh restart
```` ````
或者如果你的系统使用systemd可以使用以下命令 或者如果你的系统使用systemd可以使用以下命令
```` ````bash
sudo systemctl restart ssh sudo systemctl restart ssh
```` ````
### 安装 UFW ### 安装 UFW
```` ````bash
sudo apt install ufw sudo apt install ufw
```` ````
**如果你在远程位置连接你的服务器,在启用 UFW 防火墙之前,你必须显式允许进来的 SSH 连接。否则,你将永远都无法连接到机器上。** **如果你在远程位置连接你的服务器,在启用 UFW 防火墙之前,你必须显式允许进来的 SSH 连接。否则,你将永远都无法连接到机器上。**
```` ````bash
sudo ufw allow 22/tcp sudo ufw allow 22/tcp
```` ````
@@ -100,37 +100,37 @@ sudo ufw allow 22/tcp
**启动 UFW** **启动 UFW**
```` ````bash
sudo ufw enable sudo ufw enable
```` ````
### 安装 Fail2ban ### 安装 Fail2ban
```` ````bash
sudo apt-get install fail2ban sudo apt-get install fail2ban
```` ````
**2、Debian 12 及以上的版本需要手动安装 rsyslog** **2、Debian 12 及以上的版本需要手动安装 rsyslog**
```` ````bash
sudo apt-get install rsyslog sudo apt-get install rsyslog
```` ````
**3、启动 Fail2ban 服务** **3、启动 Fail2ban 服务**
```` ````bash
sudo systemctl start fail2ban sudo systemctl start fail2ban
```` ````
**4、开机自启动** **4、开机自启动**
```` ````bash
sudo systemctl enable fail2ban sudo systemctl enable fail2ban
```` ````
**5、查看 Fail2ban 服务状态。** **5、查看 Fail2ban 服务状态。**
```` ````bash
sudo systemctl status fail2ban sudo systemctl status fail2ban
```` ````
@@ -139,7 +139,7 @@ sudo systemctl status fail2ban
### 改为密钥登录 ### 改为密钥登录
- 执行以下命令生成.pub后缀的公钥和无后缀的密钥 - 执行以下命令生成.pub后缀的公钥和无后缀的密钥
``` ```bash
ssh-keygen ssh-keygen
``` ```
注意不同密钥对名称不能相同;同时可以为这两个文件用密码加密; 注意不同密钥对名称不能相同;同时可以为这两个文件用密码加密;
@@ -147,11 +147,11 @@ ssh-keygen
- 随后将.pub后缀的公钥中的内容写入服务器的``~/.ssh/authorized_keys``中; - 随后将.pub后缀的公钥中的内容写入服务器的``~/.ssh/authorized_keys``中;
- 使用以下命令编译服务器的SSH配置 - 使用以下命令编译服务器的SSH配置
``` ```bash
vim /etc/ssh/sshd_config vim /etc/ssh/sshd_config
``` ```
将其中的该行改为``PasswordAuthentication no``,保存退出;随后使用 将其中的该行改为``PasswordAuthentication no``,保存退出;随后使用
``` ```bash
sudo systemctl restart sshd sudo systemctl restart sshd
``` ```
重启SSH即可禁用密码登录 重启SSH即可禁用密码登录
@@ -159,7 +159,7 @@ sudo systemctl restart sshd
- 将**PermitRootLogin**一栏改为**PermitRootLogin prohibit-password**即可实现仅root用户密钥登录 - 将**PermitRootLogin**一栏改为**PermitRootLogin prohibit-password**即可实现仅root用户密钥登录
- 使用以下命令查看输出, - 使用以下命令查看输出,
``` ```bash
sudo cat /etc/ssh/sshd_config | grep -E 'PasswordAuthentication|PubkeyAuthentication' sudo cat /etc/ssh/sshd_config | grep -E 'PasswordAuthentication|PubkeyAuthentication'
``` ```
如有**PasswordAuthentication no → 禁用密码登录**以及**PubkeyAuthentication yes → 允许密钥登录**则成功。 如有**PasswordAuthentication no → 禁用密码登录**以及**PubkeyAuthentication yes → 允许密钥登录**则成功。
@@ -170,33 +170,33 @@ sudo cat /etc/ssh/sshd_config | grep -E 'PasswordAuthentication|PubkeyAuthentica
- ALL - ALL
``` ```bash
apt install curl wget gpg vim nano sudo neofetch openssh-server apt install curl wget gpg vim nano sudo neofetch openssh-server
``` ```
- C/C++ - C/C++
``` ```bash
sudo apt install build-essential gdb cmake clangd clang-format libstdc++-dev sudo apt install build-essential gdb cmake clangd clang-format libstdc++-dev
``` ```
- Miniconda - Miniconda
``` ```bash
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh
``` ```
- UV - UV
``` ```bash
curl -LsSf https://astral.sh/uv/install.sh | sh curl -LsSf https://astral.sh/uv/install.sh | sh
``` ```
- Docker - Docker
``` ```bash
curl -fsSL https://get.docker.com -o get-docker.sh curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh sudo sh get-docker.sh
``` ```
- OpenCV - OpenCV
``` ```bash
sudo apt install tree libx11-dev libgtk-3-dev freeglut3-dev libopencv-dev libdlib-dev sudo apt install tree libx11-dev libgtk-3-dev freeglut3-dev libopencv-dev libdlib-dev
``` ```
- Vmware - Vmware
``` ```bash
sudo apt install open-vm-tools sudo apt install open-vm-tools
sudo apt install open-vm-tools-desktop sudo apt install open-vm-tools-desktop
``` ```
@@ -211,7 +211,7 @@ Set-Content "$env:USERPROFILE\.ssh\known_hosts"
执行如下命令一键安装 1Panel: 执行如下命令一键安装 1Panel:
```` ````bash
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
```` ````
@@ -220,27 +220,27 @@ curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_
### 禁用 IPv6 ### 禁用 IPv6
手动 禁用 VPS 的 IPv6 命令: 手动 禁用 VPS 的 IPv6 命令:
``` ```bash
sysctl -w net.ipv6.conf.all.disable_ipv6=1 sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1 sysctl -w net.ipv6.conf.default.disable_ipv6=1
``` ```
如果想重启系统也生效, 执行: 如果想重启系统也生效, 执行:
``` ```bash
echo 'net.ipv6.conf.all.disable_ipv6=1' >> /etc/sysctl.conf echo 'net.ipv6.conf.all.disable_ipv6=1' >> /etc/sysctl.conf
echo 'net.ipv6.conf.default.disable_ipv6=1' >> /etc/sysctl.conf echo 'net.ipv6.conf.default.disable_ipv6=1' >> /etc/sysctl.conf
``` ```
手动 启用 VPS 的 IPv6 命令: 手动 启用 VPS 的 IPv6 命令:
``` ```bash
sysctl -w net.ipv6.conf.all.disable_ipv6=0 sysctl -w net.ipv6.conf.all.disable_ipv6=0
sysctl -w net.ipv6.conf.default.disable_ipv6=0 sysctl -w net.ipv6.conf.default.disable_ipv6=0
``` ```
重新载入 sysctl 配置 重新载入 sysctl 配置
``` ```bash
sysctl --system # reload sysctl sysctl --system # reload sysctl
``` ```
如果重载, 还无效果, 可能要 reboot 重启下. 如果重载, 还无效果, 可能要 reboot 重启下.
查看 VPS 的 IPv6 信息 查看 VPS 的 IPv6 信息
``` ```bash
ip -6 addr show scope global ip -6 addr show scope global
或者 curl ipv6.ip.sb 或者 curl ipv6.ip.sb
@@ -253,13 +253,13 @@ ip -6 addr show scope global
- 然后在VPS上输入以下命令 - 然后在VPS上输入以下命令
``` ```bash
mkdir -p ./.well-known/pki-validation mkdir -p ./.well-known/pki-validation
``` ```
- 随后在ZeroSSL中将所给出的类似**B992F08CB46748D02E4C553A4038BC.txt**复制; - 随后在ZeroSSL中将所给出的类似**B992F08CB46748D02E4C553A4038BC.txt**复制;
- 将从ZeroSSL下载得到的文件打开复制里面的东西形成以下的格式:``将pki-validation/之后EOF之前的内容``替换为你自己的。 - 将从ZeroSSL下载得到的文件打开复制里面的东西形成以下的格式:``将pki-validation/之后EOF之前的内容``替换为你自己的。
``` ```bash
cat << EOF | sudo tee ./.well-known/pki-validation/B992F08CB46748D02E4C553A4038BC.txt cat << EOF | sudo tee ./.well-known/pki-validation/B992F08CB46748D02E4C553A4038BC.txt
254563C20918258D661E7D43D6A43A2A258857E191977DD5F740FBB9ABD25279 254563C20918258D661E7D43D6A43A2A258857E191977DD5F740FBB9ABD25279
comodoca.com comodoca.com
@@ -268,7 +268,7 @@ EOF
``` ```
随后在VPS上运行该命令。 随后在VPS上运行该命令。
- 开启一个临时HTTP服务器 - 开启一个临时HTTP服务器
``` ```bash
python3 -m http.server 80 python3 -m http.server 80
``` ```
- 随后即可在ZeroSSL中验证证书并开启SSL。 - 随后即可在ZeroSSL中验证证书并开启SSL。
@@ -285,15 +285,15 @@ python3 -m http.server 80
- 进入恢复模式后,选择`root Drop to root shell prompt`进入 root shell不需要密码 - 进入恢复模式后,选择`root Drop to root shell prompt`进入 root shell不需要密码
- 挂载文件系统为可写模式: - 挂载文件系统为可写模式:
``` ```bash
mount -o remount,rw / mount -o remount,rw /
``` ```
- 将用户添加到 sudo 组: - 将用户添加到 sudo 组:
``` ```bash
usermod -aG sudo 用户名 usermod -aG sudo 用户名
``` ```
- 重启计算机: - 重启计算机:
``` ```bash
reboot reboot
``` ```
@@ -315,7 +315,7 @@ sudo apt update
``` ```
3. 搜索可用内核 3. 搜索可用内核
``` ```bash
apt search xanmod apt search xanmod
sudo apt install linux-image-6.8.6-x64v3-xanmod1 linux-headers-6.8.6-x64v3-xanmod1 sudo apt install linux-image-6.8.6-x64v3-xanmod1 linux-headers-6.8.6-x64v3-xanmod1
``` ```

View File

@@ -72,13 +72,13 @@ Hyper-V 是微软内建的虚拟化平台native hypervisor。开启后
* PowerShell以管理员权限运行 * PowerShell以管理员权限运行
``` ```bash
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
``` ```
* DISM部署映像服务和管理工具 * DISM部署映像服务和管理工具
``` ```bash
DISM /Online /Enable-Feature /All /FeatureName:Microsoft-Hyper-V DISM /Online /Enable-Feature /All /FeatureName:Microsoft-Hyper-V
``` ```
@@ -90,23 +90,23 @@ DISM /Online /Enable-Feature /All /FeatureName:Microsoft-Hyper-V
## 关闭 Hyper-V ## 关闭 Hyper-V
* PowerShell管理员权限 * PowerShell管理员权限
``` ```bash
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
``` ```
* DISM * DISM
``` ```bash
DISM /Online /Disable-Feature:Microsoft-Hyper-V DISM /Online /Disable-Feature:Microsoft-Hyper-V
``` ```
* 用 bcdedit 修改启动配置,使系统启动时不加载 HypervisorHyper-V 的虚拟化内核)但保留功能安装: * 用 bcdedit 修改启动配置,使系统启动时不加载 HypervisorHyper-V 的虚拟化内核)但保留功能安装:
``` ```bash
bcdedit /set hypervisorlaunchtype off bcdedit /set hypervisorlaunchtype off
``` ```
若要恢复加载,则: 若要恢复加载,则:
``` ```bash
bcdedit /set hypervisorlaunchtype auto bcdedit /set hypervisorlaunchtype auto
``` ```
* Windows 功能 GUI 中,取消勾选 Hyper-V 相应项。 * Windows 功能 GUI 中,取消勾选 Hyper-V 相应项。
@@ -118,21 +118,21 @@ bcdedit /set hypervisorlaunchtype auto
1. **给 VMware 或 VirtualBox 使用环境临时关闭 Hyper-V** 1. **给 VMware 或 VirtualBox 使用环境临时关闭 Hyper-V**
``` ```bash
bcdedit /set hypervisorlaunchtype off bcdedit /set hypervisorlaunchtype off
``` ```
然后重启 Windows就能让这些软件正常启动虚拟机。要还原 Hyper-V改为 `auto` 或 `on`: 然后重启 Windows就能让这些软件正常启动虚拟机。要还原 Hyper-V改为 `auto` 或 `on`:
``` ```bash
bcdedit /set hypervisorlaunchtype auto bcdedit /set hypervisorlaunchtype auto
``` ```
2. **从命令行完全关闭 Hyper-V 功能** 2. **从命令行完全关闭 Hyper-V 功能**
```powershell ```bash
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
``` ```
或者用 DISM 或者用 DISM
``` ```bash
DISM /Online /Disable-Feature:Microsoft-Hyper-V DISM /Online /Disable-Feature:Microsoft-Hyper-V
``` ```

View File

@@ -52,14 +52,14 @@ MCSManager 面板简称MCSM 面板)是一款全中文,轻量级,开
## 换源 ## 换源
**禁用 Ceph 企业仓库:** **禁用 Ceph 企业仓库:**
``` ```bash
nano /etc/apt/sources.list.d/ceph.list nano /etc/apt/sources.list.d/ceph.list
``` ```
将文件内容注释掉或删除。 将文件内容注释掉或删除。
**编辑仓库源文件:** **编辑仓库源文件:**
``` ```bash
nano /etc/apt/sources.list.d/pve-enterprise.list nano /etc/apt/sources.list.d/pve-enterprise.list
``` ```
将文件内容注释掉或删除; 将文件内容注释掉或删除;
@@ -67,11 +67,11 @@ nano /etc/apt/sources.list.d/pve-enterprise.list
**启用社区仓库:** **启用社区仓库:**
确保社区仓库已启用。编辑社区仓库文件: 确保社区仓库已启用。编辑社区仓库文件:
``` ```bash
nano /etc/apt/sources.list.d/pve-no-subscription.list nano /etc/apt/sources.list.d/pve-no-subscription.list
``` ```
确保文件内容如下: 确保文件内容如下:
``` ```bash
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
``` ```
## 二.新建虚拟机并安装Debian ## 二.新建虚拟机并安装Debian
@@ -95,12 +95,12 @@ deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
在安装步骤进入到选择安装的桌面环境和软件时, 键入 Ctrl+Alt+F2 可以看到从图形界面转到了tty命令终端, 键入 Enter 在安装步骤进入到选择安装的桌面环境和软件时, 键入 Ctrl+Alt+F2 可以看到从图形界面转到了tty命令终端, 键入 Enter
这里修改软件源配置文件 这里修改软件源配置文件
``` ```bash
nano /target/etc/apt/sources.list nano /target/etc/apt/sources.list
``` ```
修改debian-security源地址  `http://mirrors.ustc.edu.cn ` 目测最快 修改debian-security源地址  `http://mirrors.ustc.edu.cn ` 目测最快
``` ```bash
deb http://mirrors.ustc.edu.cn/debian-security bullseye-security main deb http://mirrors.ustc.edu.cn/debian-security bullseye-security main
``` ```
修改后 Ctrl+X 退出保存,然后退出终端重新进入界面继续安装,键入 Ctrl+Alt+F5。 修改后 Ctrl+X 退出保存,然后退出终端重新进入界面继续安装,键入 Ctrl+Alt+F5。
@@ -144,7 +144,7 @@ deb http://mirrors.ustc.edu.cn/debian-security bullseye-security main
在 PVE-防火墙中打开它们。如果还是不行,执行如下命令: 在 PVE-防火墙中打开它们。如果还是不行,执行如下命令:
``` ```bash
systemctl stop firewalld systemctl stop firewalld
systemctl disable firewalld systemctl disable firewalld

View File

@@ -79,7 +79,7 @@ X86还是Arm两者之间各有优点截止到今天各种Arm电视盒子
- 随后在设置 > 设备首选项 > 关于 > 状态中找到并记下IP 地址然后用ADB连接上去这里使用命令``adb connect <IP 地址>:<端口> ``随后在ATV端授权连接例如 - 随后在设置 > 设备首选项 > 关于 > 状态中找到并记下IP 地址然后用ADB连接上去这里使用命令``adb connect <IP 地址>:<端口> ``随后在ATV端授权连接例如
``` ```bash
adb connect 192.168.1.666:9527 adb connect 192.168.1.666:9527
connected to 192.168.1.666:9527 connected to 192.168.1.666:9527
@@ -93,7 +93,7 @@ xxxxxxxxx sideload
**一些 ADB 常用命令** **一些 ADB 常用命令**
``` ```bash
adb reboot #将重启 Android 设备。 adb reboot #将重启 Android 设备。
adb reboot recovery #将设备重新启动到恢复模式。 adb reboot recovery #将设备重新启动到恢复模式。
@@ -136,13 +136,13 @@ adb kill server #切断 PC 和 Android TV 之间的连接。
1. ADB连接连接到ADB成功后我们使用``adb shell``进入shell随后使用命令``pm list packages``列出所有软件包; 1. ADB连接连接到ADB成功后我们使用``adb shell``进入shell随后使用命令``pm list packages``列出所有软件包;
``` ```bash
pm list packages -s 列出系统软件包 pm list packages -s 列出系统软件包
pm list packages -3 列出第三方软件包 pm list packages -3 列出第三方软件包
``` ```
2. 获取包名:对于暂时无法确定包名的软件,可以先打开,再使用 2. 获取包名:对于暂时无法确定包名的软件,可以先打开,再使用
``` ```bash
adb shell dumpsys activity activities | grep mResumedActivity adb shell dumpsys activity activities | grep mResumedActivity
``` ```
@@ -150,13 +150,13 @@ adb shell dumpsys activity activities | grep mResumedActivity
3. 删除软件:可以先使用 3. 删除软件:可以先使用
``` ```bash
pm disable-user --user 0 com.dangbei1.tvlauncher pm disable-user --user 0 com.dangbei1.tvlauncher
``` ```
禁用软件,确认没有问题之后再用 禁用软件,确认没有问题之后再用
``` ```bash
pm uninstall -k --user 0 com.dangbei1.tvlauncher pm uninstall -k --user 0 com.dangbei1.tvlauncher
``` ```
@@ -164,20 +164,20 @@ pm uninstall -k --user 0 com.dangbei1.tvlauncher
4. 备份软件对于想要备份的软件可以使用1和2中的方法获取软件包名然后使用例如以下命令 4. 备份软件对于想要备份的软件可以使用1和2中的方法获取软件包名然后使用例如以下命令
``` ```bash
adb shell pm path org.videolan.vlc adb shell pm path org.videolan.vlc
package:/data/app/~~hY2Y0_PdaDlasfVwkUNcoQ==/org.videolan.vlc-WnNhCJLQUJdZYYzUxzBNBA==/base.apk package:/data/app/~~hY2Y0_PdaDlasfVwkUNcoQ==/org.videolan.vlc-WnNhCJLQUJdZYYzUxzBNBA==/base.apk
``` ```
获取到安装路径随后将apk包拿走就可以 获取到安装路径随后将apk包拿走就可以
``` ```bash
adb pull /data/app/~~hY2Y0_PdaDlasfVwkUNcoQ==/org.videolan.vlc-WnNhCJLQUJdZYYzUxzBNBA==/base.apk ./Downloads/ adb pull /data/app/~~hY2Y0_PdaDlasfVwkUNcoQ==/org.videolan.vlc-WnNhCJLQUJdZYYzUxzBNBA==/base.apk ./Downloads/
``` ```
5. 备份分区如果你想要修改当前系统的img可以用adb提取并导出 5. 备份分区如果你想要修改当前系统的img可以用adb提取并导出
``` ```bash
# 确定分区对应关系 # 确定分区对应关系
ls -l /dev/block ls -l /dev/block
ls -l /dev/block/platform ls -l /dev/block/platform
@@ -202,7 +202,7 @@ adb pull /sdcard/odm.img
``` ```
5. 修改桌面可以进入安卓原生设置里面将默认主屏幕应用改为ATV代替掉自带的桌面,并使用 5. 修改桌面可以进入安卓原生设置里面将默认主屏幕应用改为ATV代替掉自带的桌面,并使用
``` ```bash
adb shell pm disable-user --user 0 com.google.android.tvlauncher adb shell pm disable-user --user 0 com.google.android.tvlauncher
adb shell pm disable-user --user 0 com.google.android.tungsten.setupwraith adb shell pm disable-user --user 0 com.google.android.tungsten.setupwraith
``` ```

View File

@@ -140,12 +140,12 @@ tags = ["综合工程"]
**使用adb备份分区** **使用adb备份分区**
``` ```bash
adb shell ls -l /dev/block/bootdevice/by-name adb shell ls -l /dev/block/bootdevice/by-name
``` ```
可以看到有很多分区,例如这些 可以看到有很多分区,例如这些
``` ```bash
... ...
lrwxrwxrwx 1 root root 15 1970-12-24 11:30 frp -> /dev/block/sda5 lrwxrwxrwx 1 root root 15 1970-12-24 11:30 frp -> /dev/block/sda5
lrwxrwxrwx 1 root root 16 1970-12-24 11:30 fsc -> /dev/block/sdf13 lrwxrwxrwx 1 root root 16 1970-12-24 11:30 fsc -> /dev/block/sdf13
@@ -156,14 +156,14 @@ lrwxrwxrwx 1 root root 16 1970-12-24 11:30 hyp_b -> /dev/block/sde40
``` ```
随后使用root备份分区到手机上 随后使用root备份分区到手机上
``` ```bash
adb root adb root
adb shell "dd if=/dev/block/sda2 of=/sdcard/partition_backup/persist.img" adb shell "dd if=/dev/block/sda2 of=/sdcard/partition_backup/persist.img"
``` ```
然后可以上传到PC端 然后可以上传到PC端
``` ```bash
adb pull /sdcard/partition_backup/ ./backup/ adb pull /sdcard/partition_backup/ ./backup/
``` ```

View File

@@ -31,7 +31,7 @@ tags = ["综合工程"]
随后安装常用开源软件(KDE环境省略file和wayland) 随后安装常用开源软件(KDE环境省略file和wayland)
``` ```bash
# gui # gui
paru -S floorp-bin keepassxc qemu-full virt-manager materialgram-bin legcord-bin onlyoffice-bin localsend-bin kazumi-bin foliate vlc krita qtscrcpy strawberry oculante obs-studio paru -S floorp-bin keepassxc qemu-full virt-manager materialgram-bin legcord-bin onlyoffice-bin localsend-bin kazumi-bin foliate vlc krita qtscrcpy strawberry oculante obs-studio
@@ -90,7 +90,7 @@ paru -S hyprland waybar wofi network-manager-applet swww wl-gammarelay-rs bright
输入法我们采用雾凇拼音即前面我们安装的fcitx5系列软件包的一个输入方案这里我们使用[自动部署脚本](https://github.com/Mark24Code/rime-auto-deploy) 输入法我们采用雾凇拼音即前面我们安装的fcitx5系列软件包的一个输入方案这里我们使用[自动部署脚本](https://github.com/Mark24Code/rime-auto-deploy)
``` ```bash
# step1: 克隆/下载 latest 最新的稳定版到本地 # step1: 克隆/下载 latest 最新的稳定版到本地
git clone --depth=1 https://github.com/Mark24Code/rime-auto-deploy.git --branch latest git clone --depth=1 https://github.com/Mark24Code/rime-auto-deploy.git --branch latest
# step2: 进入项目目录 # step2: 进入项目目录
@@ -109,7 +109,7 @@ cd rime-auto-deploy
安装完毕后可以看到KDE的界面较为简陋这里给出笔者的美化配置 安装完毕后可以看到KDE的界面较为简陋这里给出笔者的美化配置
- 在设置中找到Colors&Themes分别设置为 - 在设置中找到Colors&Themes分别设置为
``` ```bash
- ColorBreeze Dark - ColorBreeze Dark
- Application StyleBreeze - Application StyleBreeze
- Plasma StyleSweet - Plasma StyleSweet
@@ -164,27 +164,27 @@ V2EX PolishV站美化
如果Grub引导菜单中没有windows选项可以通过以下方法添加 如果Grub引导菜单中没有windows选项可以通过以下方法添加
- 安装 os-prober首先确保系统中安装了 os-prober这是一个用于检测其他操作系统的工具。 - 安装 os-prober首先确保系统中安装了 os-prober这是一个用于检测其他操作系统的工具。
``` ```bash
sudo pacman -S os-prober sudo pacman -S os-prober
sudo os-prober sudo os-prober
``` ```
- 打开 /etc/default/grub 文件进行编辑: - 打开 /etc/default/grub 文件进行编辑:
``` ```bash
sudo nano /etc/default/grub sudo nano /etc/default/grub
# 确保 GRUB_DISABLE_OS_PROBER 设置为 false # 确保 GRUB_DISABLE_OS_PROBER 设置为 false
``` ```
- 保存文件并退出编辑器后,运行以下命令更新 GRUB 配置: - 保存文件并退出编辑器后,运行以下命令更新 GRUB 配置:
``` ```bash
sudo grub-mkconfig -o /boot/grub/grub.cfg sudo grub-mkconfig -o /boot/grub/grub.cfg
``` ```
或者``手动添加`` 或者``手动添加``
``` ```bash
nano /etc/grub.d/40_custom nano /etc/grub.d/40_custom
``` ```
``` ```bash
#!/bin/sh #!/bin/sh
exec tail -n +3 $0 exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the # This file provides an easy way to add custom menu entries. Simply type the
@@ -204,26 +204,26 @@ menuentry "Windows 11 (Manual)" {
如果virt-manager报错无法找到Qemu 如果virt-manager报错无法找到Qemu
- ​如果 libvirtd 服务未运行virt-manager 将无法连接到虚拟化环境。​ - ​如果 libvirtd 服务未运行virt-manager 将无法连接到虚拟化环境。​
``` ```bash
sudo systemctl start libvirtd sudo systemctl start libvirtd
sudo systemctl enable libvirtd sudo systemctl enable libvirtd
``` ```
- 用户权限问题:​​将当前用户添加到 libvirt 组,以获得必要的权限。​ - 用户权限问题:​​将当前用户添加到 libvirt 组,以获得必要的权限。​
``` ```bash
sudo usermod -aG libvirt $(whoami) sudo usermod -aG libvirt $(whoami)
``` ```
- 虚拟网络未激活virt-manager 可能无法连接到默认的虚拟网络。​ - 虚拟网络未激活virt-manager 可能无法连接到默认的虚拟网络。​
``` ```bash
sudo virsh net-start default sudo virsh net-start default
``` ```
默认网络在系统启动时自动启动,可以执行: 默认网络在系统启动时自动启动,可以执行:
``` ```bash
sudo virsh net-autostart default sudo virsh net-autostart default
``` ```
- 配置文件权限问题:​配置文件的权限设置可能导致访问问题。 - 配置文件权限问题:​配置文件的权限设置可能导致访问问题。
``` ```bash
sudo chown $(whoami):libvirt /var/run/libvirt/libvirt-sock sudo chown $(whoami):libvirt /var/run/libvirt/libvirt-sock
``` ```
随后安装虚拟机,流程大概为``选择镜像和系统类型--设置CPU/内存--设置空间大小--编辑配置项--开启UEFI引导和3D加速``. 随后安装虚拟机,流程大概为``选择镜像和系统类型--设置CPU/内存--设置空间大小--编辑配置项--开启UEFI引导和3D加速``.
@@ -231,7 +231,7 @@ sudo chown $(whoami):libvirt /var/run/libvirt/libvirt-sock
**开启3D加速** **开启3D加速**
- NIC - NIC
``` ```xml
<graphics type="spice"> <graphics type="spice">
<listen type="none"/> <listen type="none"/>
<image compression="off"/> <image compression="off"/>
@@ -240,7 +240,7 @@ sudo chown $(whoami):libvirt /var/run/libvirt/libvirt-sock
``` ```
- video virtio - video virtio
``` ```xml
<video> <video>
<model type="virtio" heads="1" primary="yes"> <model type="virtio" heads="1" primary="yes">
<acceleration accel3d="yes"/> <acceleration accel3d="yes"/>
@@ -255,17 +255,17 @@ sudo chown $(whoami):libvirt /var/run/libvirt/libvirt-sock
如果安装了多个linux内核可以使用以下方法调整启动顺序 如果安装了多个linux内核可以使用以下方法调整启动顺序
- 使用以下命令查看内核名称: - 使用以下命令查看内核名称:
``` ```bash
ls /boot/vmlinuz* ls /boot/vmlinuz*
``` ```
- 在 /etc/default/grub 中添加或修改如下行: - 在 /etc/default/grub 中添加或修改如下行:
``` ```bash
GRUB_TOP_LEVEL="/boot/vmlinuz-linux-cachyos" GRUB_TOP_LEVEL="/boot/vmlinuz-linux-cachyos"
``` ```
需要注意,这种方法会关闭 GRUB 的“记住上次启动项”的功能。 需要注意,这种方法会关闭 GRUB 的“记住上次启动项”的功能。
- 修改完 /etc/default/grub 后,记得重新生成 GRUB 配置文件: - 修改完 /etc/default/grub 后,记得重新生成 GRUB 配置文件:
``` ```bash
sudo grub-mkconfig -o /boot/grub/grub.cfg sudo grub-mkconfig -o /boot/grub/grub.cfg
``` ```
**图形界面更改方法:** **图形界面更改方法:**
@@ -273,12 +273,12 @@ sudo grub-mkconfig -o /boot/grub/grub.cfg
可以使用grub-customizer来修改Grub这里以ubuntu为例子 可以使用grub-customizer来修改Grub这里以ubuntu为例子
- 添加PPA源并更新软件列表 - 添加PPA源并更新软件列表
``` ```bash
sudo add-apt-repository ppa:danielrichter2007/grub-customizer sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt update sudo apt update
``` ```
- 安装GRUB Customizer - 安装GRUB Customizer
``` ```bash
sudo apt install grub-customizer sudo apt install grub-customizer
``` ```
随后在grub-customizer中将要默认启动的选项放在首位即可。 随后在grub-customizer中将要默认启动的选项放在首位即可。
@@ -286,13 +286,13 @@ sudo apt install grub-customizer
## 开机自启动 ## 开机自启动
**设置Syncthing开机自启动** **设置Syncthing开机自启动**
``` ```bash
sudo systemctl enable --now syncthing@<username>.service sudo systemctl enable --now syncthing@<username>.service
``` ```
**设置Aria2开机自启动** **设置Aria2开机自启动**
``` ```conf
[Unit] [Unit]
Description=Aria2c - lightweight multi-protocol & multi-source command-line download utility Description=Aria2c - lightweight multi-protocol & multi-source command-line download utility
After=network.target After=network.target
@@ -315,41 +315,41 @@ WantedBy=multi-user.target
## 开启BBR ## 开启BBR
- 确保你的内核版本 >= 4.9 - 确保你的内核版本 >= 4.9
``` ```bash
uname -r uname -r
``` ```
- 启用 BBR - 启用 BBR
你只需要设置两个 sysctl 参数即可: 你只需要设置两个 sysctl 参数即可:
``` ```bash
sudo sysctl -w net.core.default_qdisc=fq sudo sysctl -w net.core.default_qdisc=fq
sudo sysctl -w net.ipv4.tcp_congestion_control=bbr sudo sysctl -w net.ipv4.tcp_congestion_control=bbr
``` ```
要让它们永久生效,把它们写入配置文件: 要让它们永久生效,把它们写入配置文件:
``` ```bash
sudo nano /etc/sysctl.d/99-bbr.conf sudo nano /etc/sysctl.d/99-bbr.conf
``` ```
加入以下内容: 加入以下内容:
``` ```bash
net.core.default_qdisc = fq net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr net.ipv4.tcp_congestion_control = bbr
``` ```
然后重新加载配置: 然后重新加载配置:
``` ```bash
sudo sysctl --system sudo sysctl --system
``` ```
- 验证 BBR 是否启用 - 验证 BBR 是否启用
``` ```bash
sysctl net.ipv4.tcp_congestion_control sysctl net.ipv4.tcp_congestion_control
``` ```
应该输出: 应该输出:
``` ```bash
net.ipv4.tcp_congestion_control = bbr net.ipv4.tcp_congestion_control = bbr
``` ```
## 性能模式切换 ## 性能模式切换
需要安装``power-profiles-daemon`` 需要安装``power-profiles-daemon``
``` ```bash
# 查看可用的电源配置文件profiles # 查看可用的电源配置文件profiles
powerprofilesctl list powerprofilesctl list
@@ -367,7 +367,7 @@ sudo powerprofilesctl set power-saver
``` ```
## 其他性能优化 ## 其他性能优化
``` ```bash
Profilesyncdaemon Profilesyncdaemon
将浏览器配置文件和缓存挂载到内存,退出时再写回磁盘: 将浏览器配置文件和缓存挂载到内存,退出时再写回磁盘:
@@ -395,7 +395,7 @@ sudo systemctl enable --now ananicy-cpp
## 常用命令 ## 常用命令
``` ```bash
更新系统sudo pacman -Syu 更新系统sudo pacman -Syu
重新安装所有软件包sudo pacman -Qq | sudo pacman -S - 重新安装所有软件包sudo pacman -Qq | sudo pacman -S -
@@ -426,28 +426,28 @@ sudo reflector --latest 10 --sort rate --save /etc/pacman.d/mirrorlist
## 在Arch Linux上安装Docker ## 在Arch Linux上安装Docker
一般推荐在qemu虚拟机中安装这里仅做示例 一般推荐在qemu虚拟机中安装这里仅做示例
``` ```bash
sudo pacman -S docker sudo pacman -S docker
``` ```
安装完成后需要启动Docker服务并设置为开机自启 安装完成后需要启动Docker服务并设置为开机自启
``` ```bash
sudo systemctl start docker sudo systemctl start docker
sudo systemctl enable docker sudo systemctl enable docker
``` ```
运行以下命令来验证Docker是否正常工作 运行以下命令来验证Docker是否正常工作
``` ```bash
sudo docker run hello-world sudo docker run hello-world
``` ```
默认情况下只有root用户才能运行Docker命令。为了避免每次运行Docker命令时都需要使用sudo可以将当前用户添加到docker组 默认情况下只有root用户才能运行Docker命令。为了避免每次运行Docker命令时都需要使用sudo可以将当前用户添加到docker组
``` ```bash
sudo usermod -aG docker $USER sudo usermod -aG docker $USER
``` ```
之后,需要注销并重新登录,或者重启系统以使更改生效。 之后,需要注销并重新登录,或者重启系统以使更改生效。
安装Docker Compose 安装Docker Compose
``` ```bash
sudo pacman -S docker-compose sudo pacman -S docker-compose
``` ```
--- ---

View File

@@ -129,7 +129,7 @@ uci commit luci
- **编译依赖** - **编译依赖**
``` ```bash
sudo apt update sudo apt update
sudo apt install -y \ sudo apt install -y \
ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \ ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
@@ -147,32 +147,32 @@ sudo apt install -y \
``` ```
- **清理** - **清理**
``` ```bash
sudo apt autoremove --purge sudo apt autoremove --purge
sudo apt clean sudo apt clean
``` ```
- **新建一个用户,用于编译固件(可选)** - **新建一个用户,用于编译固件(可选)**
``` ```bash
useradd -m openwrt # 新建一个名为 openwrt 的用户 useradd -m openwrt # 新建一个名为 openwrt 的用户
``` ```
> 不可以使用Root用户进行编译!!! > 不可以使用Root用户进行编译!!!
- **修改用户默认的 Shell** - **修改用户默认的 Shell**
``` ```bash
apt install -y sudo apt install -y sudo
usermod -s /bin/bash openwrt usermod -s /bin/bash openwrt
``` ```
- **切换用户** - **切换用户**
``` ```bash
su openwrt su openwrt
cd ~ cd ~
``` ```
- **拉取源码,这里用的是 ImmortalWrt 24.10 分支源码:** - **拉取源码,这里用的是 ImmortalWrt 24.10 分支源码:**
``` ```bash
git clone https://github.com/immortalwrt/immortalwrt.git git clone https://github.com/immortalwrt/immortalwrt.git
cd immortalwrt cd immortalwrt
``` ```
@@ -180,11 +180,11 @@ cd immortalwrt
- **选择分支** - **选择分支**
如果你想要编译稳定版(stable),使用 如果你想要编译稳定版(stable),使用
``` ```bash
git checkout xxx #例如git checkout v24.10.2 git checkout xxx #例如git checkout v24.10.2
``` ```
如果你想要编译最新版(snapshot),使用 如果你想要编译最新版(snapshot),使用
``` ```bash
git switch xxx #例如git switch openwrt-24.10 git switch xxx #例如git switch openwrt-24.10
``` ```
@@ -211,19 +211,19 @@ git switch xxx #例如git switch openwrt-24.10
- **添加软件源,可自行添加软件源至 feeds.conf.default 文件** - **添加软件源,可自行添加软件源至 feeds.conf.default 文件**
``` ```bash
vim feeds.conf.default vim feeds.conf.default
``` ```
**常用源** **常用源**
``` ```bash
src-git kenzo https://github.com/kenzok8/openwrt-packages src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git small https://github.com/kenzok8/small src-git small https://github.com/kenzok8/small
src-git haibo https://github.com/haiibo/openwrt-packages src-git haibo https://github.com/haiibo/openwrt-packages
src-git liuran001 https://github.com/liuran001/openwrt-packages src-git liuran001 https://github.com/liuran001/openwrt-packages
``` ```
**常用仓库** **常用仓库**
``` ```bash
src/gz kwrt_core https://dl.openwrt.ai/releases/24.10/targets/x86/64/6.6.83 src/gz kwrt_core https://dl.openwrt.ai/releases/24.10/targets/x86/64/6.6.83
src/gz kwrt_base https://dl.openwrt.ai/releases/24.10/packages/x86_64/base src/gz kwrt_base https://dl.openwrt.ai/releases/24.10/packages/x86_64/base
src/gz kwrt_packages https://dl.openwrt.ai/releases/24.10/packages/x86_64/packages src/gz kwrt_packages https://dl.openwrt.ai/releases/24.10/packages/x86_64/packages
@@ -234,12 +234,12 @@ src/gz kwrt_kiddin9 https://dl.openwrt.ai/releases/24.10/packages/x86_64/kiddin9
- **单独添加**(在更新并安装插件之前执行)例如: - **单独添加**(在更新并安装插件之前执行)例如:
``` ```bash
git clone https://github.com/chenmozhijin/turboacc.git git clone https://github.com/chenmozhijin/turboacc.git
``` ```
- **更新并安装插件** - **更新并安装插件**
``` ```bash
./scripts/feeds clean ./scripts/feeds clean
./scripts/feeds update -a ./scripts/feeds update -a
./scripts/feeds install -a ./scripts/feeds install -a
@@ -251,7 +251,7 @@ git clone https://github.com/chenmozhijin/turboacc.git
- **自定义配置** - **自定义配置**
``` ```bash
#!/usr/bin/env bash #!/usr/bin/env bash
# diy-part2.sh — 在镜像生成时注入默认设置和定制 SSH 横幅及模型修复 # diy-part2.sh — 在镜像生成时注入默认设置和定制 SSH 横幅及模型修复
@@ -319,7 +319,7 @@ chmod +x package/base-files/files/etc/uci-defaults/99-model-fix
### **编译配置菜单说明(部分)** ### **编译配置菜单说明(部分)**
``` ```bash
Target System (x86) # 选择目标平台 Target System (x86) # 选择目标平台
└── Subtarget (x86_64) # 选择 64-bit 子架构 └── Subtarget (x86_64) # 选择 64-bit 子架构
└── Target Profile (Generic) # “Generic” 表示通用 x86_64 设备 └── Target Profile (Generic) # “Generic” 表示通用 x86_64 设备
@@ -369,21 +369,21 @@ Xorg # 桌面环境支持X11 图形系统)
``` ```
- **预下载编译所需的软件包** - **预下载编译所需的软件包**
``` ```bash
make download -j8 make download -j8
``` ```
- **检查文件完整性** - **检查文件完整性**
``` ```bash
find dl -size -1024c -exec ls -l {} \; find dl -size -1024c -exec ls -l {} \;
``` ```
检查文件完整性命令可以列出下载不完整的文件小于1k的文件属于下载不完整如果存在则用下面的命令删除然后重新下载编译所需的软件包再次检查.确认所有文件完整可大大提高编译成功率,避免浪费时间 检查文件完整性命令可以列出下载不完整的文件小于1k的文件属于下载不完整如果存在则用下面的命令删除然后重新下载编译所需的软件包再次检查.确认所有文件完整可大大提高编译成功率,避免浪费时间
``` ```bash
find dl -size -1024c -exec rm -f {} \; find dl -size -1024c -exec rm -f {} \;
``` ```
- **最后编译固件(-j 后面是线程数首次编译推荐用单线程编译完成后输出路径是bin/targets.** - **最后编译固件(-j 后面是线程数首次编译推荐用单线程编译完成后输出路径是bin/targets.**
``` ```bash
make V=s -j1 make V=s -j1
或者使用 make world -j1 V=s 2>&1 | tee world_debug.log 或者使用 make world -j1 V=s 2>&1 | tee world_debug.log
@@ -411,7 +411,7 @@ make V=s -j1
| `make distclean` | 删除 `make dirclean` 的所有内容 + feeds 下载文件 + `.config`、patch 等所有状态 | 只有源码目录保持不变 | 专用于回到一个“零配置、重做一切”的状态,完全从头开始构建。 | | `make distclean` | 删除 `make dirclean` 的所有内容 + feeds 下载文件 + `.config`、patch 等所有状态 | 只有源码目录保持不变 | 专用于回到一个“零配置、重做一切”的状态,完全从头开始构建。 |
恢复所有修改(包括未跟踪文件): 恢复所有修改(包括未跟踪文件):
``` ```bash
git clean -fd git clean -fd
git restore --source=v24.10.2 --staged --worktree . git restore --source=v24.10.2 --staged --worktree .
``` ```
@@ -437,26 +437,26 @@ git restore --source=v24.10.2 --staged --worktree .
要启用的软件包: 要启用的软件包:
**base** **base**
``` ```bash
autocore base-files bash block-mount ca-bundle coremark curl dnsmasq-full dropbear ds-lite e2fsprogs fdisk firewall4 fstools grub2-bios-setup htop kmod-8139cp kmod-8139too kmod-amazon-ena kmod-amd-xgbe kmod-atlantic kmod-bnx2 kmod-bnx2x kmod-button-hotplug kmod-drm-amdgpu kmod-drm-i915 kmod-dwmac-intel kmod-e1000 kmod-e1000e kmod-forcedeth kmod-fs-f2fs kmod-fs-vfat kmod-i40e kmod-iavf kmod-igb kmod-igbvf kmod-igc kmod-ixgbe kmod-ixgbevf kmod-lib-zstd kmod-mlx4-core kmod-mlx5-core kmod-mmc kmod-pcnet32 kmod-phy-broadcom kmod-r8101 kmod-r8125 kmod-r8126 kmod-r8168 kmod-sdhci kmod-tcp-bbr kmod-tg3 kmod-tulip kmod-usb-hid kmod-vmxnet3 libc libgcc libustream-mbedtls lm-sensors-detect logd lsblk luci-app-fan luci-app-filemanager luci-app-firewall luci-app-log-viewer luci-app-package-manager luci-app-syscontrol luci-app-upnp luci-base luci-compat luci-lib-fs luci-lib-ipkg mkf2fs mtd nano netifd odhcp6c odhcpd-ipv6only openssh-sftp-server opkg partx-utils pciutils ppp ppp-mod-pppoe resolveip swconfig uci uclient-fetch urandom-seed urngd usbutils wget-ssl zram-swap autocore base-files bash block-mount ca-bundle coremark curl dnsmasq-full dropbear ds-lite e2fsprogs fdisk firewall4 fstools grub2-bios-setup htop kmod-8139cp kmod-8139too kmod-amazon-ena kmod-amd-xgbe kmod-atlantic kmod-bnx2 kmod-bnx2x kmod-button-hotplug kmod-drm-amdgpu kmod-drm-i915 kmod-dwmac-intel kmod-e1000 kmod-e1000e kmod-forcedeth kmod-fs-f2fs kmod-fs-vfat kmod-i40e kmod-iavf kmod-igb kmod-igbvf kmod-igc kmod-ixgbe kmod-ixgbevf kmod-lib-zstd kmod-mlx4-core kmod-mlx5-core kmod-mmc kmod-pcnet32 kmod-phy-broadcom kmod-r8101 kmod-r8125 kmod-r8126 kmod-r8168 kmod-sdhci kmod-tcp-bbr kmod-tg3 kmod-tulip kmod-usb-hid kmod-vmxnet3 libc libgcc libustream-mbedtls lm-sensors-detect logd lsblk luci-app-fan luci-app-filemanager luci-app-firewall luci-app-log-viewer luci-app-package-manager luci-app-syscontrol luci-app-upnp luci-base luci-compat luci-lib-fs luci-lib-ipkg mkf2fs mtd nano netifd odhcp6c odhcpd-ipv6only openssh-sftp-server opkg partx-utils pciutils ppp ppp-mod-pppoe resolveip swconfig uci uclient-fetch urandom-seed urngd usbutils wget-ssl zram-swap
``` ```
**cli** **cli**
``` ```bash
btop iperf3 tcpdump btop iperf3 tcpdump
``` ```
**luci** **luci**
``` ```bash
luci-app-argon luci-app-upnp luci-app-ttyd luci-app-eqosplus luci-app-timecontrol luci-app-parentcontrol luci-app-homeproxy luci-app-daed luci-app-argon luci-app-upnp luci-app-ttyd luci-app-eqosplus luci-app-timecontrol luci-app-parentcontrol luci-app-homeproxy luci-app-daed
``` ```
**lib** **lib**
``` ```bash
kmod-ipt-conntrack kmod-ipt-nat kmod-nft-compat kmod-ipt-fullconenat kmod-ip6tables ca-certificates kmod-ipt-conntrack kmod-ipt-nat kmod-nft-compat kmod-ipt-fullconenat kmod-ip6tables ca-certificates
``` ```
## 使用SDK快速编译包 ## 使用SDK快速编译包
首先新建一个文件夹并将SDK克隆下来 首先新建一个文件夹并将SDK克隆下来
``` ```bash
mkdir imwrt-sdk mkdir imwrt-sdk
cd ./imwrt-sdk cd ./imwrt-sdk
wget https://downloads.immortalwrt.org/snapshots/targets/mediatek/filogic/immortalwrt-sdk-mediatek-filogic_gcc-14.3.0_musl.Linux-x86_64.tar.zst wget https://downloads.immortalwrt.org/snapshots/targets/mediatek/filogic/immortalwrt-sdk-mediatek-filogic_gcc-14.3.0_musl.Linux-x86_64.tar.zst
@@ -464,13 +464,13 @@ wget https://downloads.immortalwrt.org/snapshots/targets/mediatek/filogic/immort
新版本的SDK使用ZSTD压缩因此解压的命令为 新版本的SDK使用ZSTD压缩因此解压的命令为
``` ```bash
tar -I zstd -xvf ./immortalwrt-sdk-mediatek-filogic_gcc-14.3.0_musl.Linux-x86_64.tar.zst tar -I zstd -xvf ./immortalwrt-sdk-mediatek-filogic_gcc-14.3.0_musl.Linux-x86_64.tar.zst
``` ```
随后进入该目录并和一般流程一样更新Feeds 随后进入该目录并和一般流程一样更新Feeds
``` ```bash
cd ./immortalwrt-sdk-mediatek-filogic_gcc-14.3.0_musl.Linux-x86_64/ cd ./immortalwrt-sdk-mediatek-filogic_gcc-14.3.0_musl.Linux-x86_64/
./scripts/feeds update -a ./scripts/feeds update -a
./scripts/feeds install -a ./scripts/feeds install -a
@@ -478,7 +478,7 @@ cd ./immortalwrt-sdk-mediatek-filogic_gcc-14.3.0_musl.Linux-x86_64/
更新完成后克隆你要编译的包的源码到package下 更新完成后克隆你要编译的包的源码到package下
``` ```bash
cd ./package/ cd ./package/
git clone https://github.com/Dichgrem/luci-app-nyn.git git clone https://github.com/Dichgrem/luci-app-nyn.git
cp ./luci-app-nyn/luci-app-zzz ./ cp ./luci-app-nyn/luci-app-zzz ./
@@ -489,7 +489,7 @@ cd ../
随后开始编译编译结果在对应架构的base目录下 随后开始编译编译结果在对应架构的base目录下
``` ```bash
make package/luci-app-zzz/compile V=s make package/luci-app-zzz/compile V=s
~/imwrt-sdk/immortalwrt-sdk-24.10.3-x86-64_gcc-13.3.0_musl.Linux-x86_64 dich@uos ~/imwrt-sdk/immortalwrt-sdk-24.10.3-x86-64_gcc-13.3.0_musl.Linux-x86_64 dich@uos
@@ -498,7 +498,7 @@ make package/luci-app-zzz/compile V=s
``` ```
## 常用命令: ## 常用命令:
``` ```bash
# 更新软件列表 # 更新软件列表
opkg update opkg update

View File

@@ -28,21 +28,21 @@ Waydroid是Anbox配合Halium技术开发的LXC Android容器可在GNU/Linux
目前Waydroid只支持Intel和AMD的显卡对于 NVIDIA 显卡(除 Tegra 系列外Waydroid 不支持硬件加速推荐使用软件渲染或QEMU方案。 目前Waydroid只支持Intel和AMD的显卡对于 NVIDIA 显卡(除 Tegra 系列外Waydroid 不支持硬件加速推荐使用软件渲染或QEMU方案。
- Waydroid必须使用Wayland用此命令检查当前系统是否为Wayland - Waydroid必须使用Wayland用此命令检查当前系统是否为Wayland
``` ```bash
echo $XDG_SESSION_TYPE echo $XDG_SESSION_TYPE
``` ```
若显示X11代表不是Wayland。GNOME和KDE可在登入画面切换至Wayland工作阶段。 若显示X11代表不是Wayland。GNOME和KDE可在登入画面切换至Wayland工作阶段。
- Waydroid要求Linux核心支持binder核心模组但Arch Linux预设的linux核心並无开启此选项因此需要从AUR安装binder_linux-dkms补齐。 - Waydroid要求Linux核心支持binder核心模组但Arch Linux预设的linux核心並无开启此选项因此需要从AUR安装binder_linux-dkms补齐。
``` ```bash
paru -S binder_linux-dkms paru -S binder_linux-dkms
``` ```
- 安装后载入binder核心模组 - 安装后载入binder核心模组
``` ```bash
sudo modprobe binder-linux devices=binder,hwbinder,vndbinder sudo modprobe binder-linux devices=binder,hwbinder,vndbinder
``` ```
- 设定开机自动载入核心模组 - 设定开机自动载入核心模组
``` ```bash
echo "binder_linux" | sudo tee -a /etc/modules-load.d/binder_linux.conf echo "binder_linux" | sudo tee -a /etc/modules-load.d/binder_linux.conf
echo "options binder_linux devices=binder,hwbinder,vndbinder" | sudo tee -a /etc/modprobe.d/binder_linux.conf echo "options binder_linux devices=binder,hwbinder,vndbinder" | sudo tee -a /etc/modprobe.d/binder_linux.conf
@@ -51,36 +51,36 @@ echo "options binder_linux devices=binder,hwbinder,vndbinder" | sudo tee -a /etc
## 安装Waydroid ## 安装Waydroid
- 安装以下软件包让Linux与Waydroid共享剪切板 - 安装以下软件包让Linux与Waydroid共享剪切板
``` ```bash
paru -S wl-clipboard xclip paru -S wl-clipboard xclip
paru -S python-pyclip paru -S python-pyclip
``` ```
- 安装Waydroid - 安装Waydroid
``` ```bash
paru -S waydroid paru -S waydroid
``` ```
- 初始化Waydroid下载含有GAPPS的Android系统映像档 - 初始化Waydroid下载含有GAPPS的Android系统映像档
``` ```bash
sudo waydroid init -s GAPPS -f sudo waydroid init -s GAPPS -f
``` ```
- 启动Waydroid容器服务 - 启动Waydroid容器服务
``` ```bash
sudo systemctl start waydroid-container sudo systemctl start waydroid-container
``` ```
## 常用命令 ## 常用命令
- 开机自动启动 - 开机自动启动
``` ```bash
sudo systemctl enable waydroid-container sudo systemctl enable waydroid-container
``` ```
- 点选应用列表的「Waydroid」图示开启主画面或者使用命令 - 点选应用列表的「Waydroid」图示开启主画面或者使用命令
``` ```bash
waydroid show-full-ui waydroid show-full-ui
``` ```
- 若Waydroid无法连上网路开放UFW防火墙 - 若Waydroid无法连上网路开放UFW防火墙
``` ```bash
sudo ufw allow 53 sudo ufw allow 53
sudo ufw allow 67 sudo ufw allow 67
sudo ufw default allow FORWARD sudo ufw default allow FORWARD
@@ -88,21 +88,21 @@ sudo ufw reload
sudo systemctl restart waydroid-container sudo systemctl restart waydroid-container
``` ```
- 重启Waydroid - 重启Waydroid
``` ```bash
sudo systemctl restart waydroid-container sudo systemctl restart waydroid-container
``` ```
- 启动/停止Waydroid容器服务 - 启动/停止Waydroid容器服务
``` ```bash
sudo systemctl start waydroid-container sudo systemctl start waydroid-container
sudo systemctl stop waydroid-container sudo systemctl stop waydroid-container
``` ```
- 用命令开启Waydroid主画面 - 用命令开启Waydroid主画面
``` ```bash
waydroid show-full-ui waydroid show-full-ui
``` ```
- 查看系统错误讯息 - 查看系统错误讯息
``` ```bash
waydroid log waydroid log
sudo waydroid logcat sudo waydroid logcat
``` ```
@@ -116,35 +116,35 @@ sudo waydroid logcat
安装Package Manager用於查看APP的软件包名称。 安装Package Manager用於查看APP的软件包名称。
部份APP会要求开启Wifi才能上网那么就如它所愿开启fake wifi 部份APP会要求开启Wifi才能上网那么就如它所愿开启fake wifi
``` ```bash
waydroid prop set persist.waydroid.fake_wifi "软件包名称" waydroid prop set persist.waydroid.fake_wifi "软件包名称"
``` ```
例如给Fate/Go游戏开启模拟Wifi 例如给Fate/Go游戏开启模拟Wifi
``` ```bash
waydroid prop set persist.waydroid.fake_wifi "com.aniplex.fategrandorder" waydroid prop set persist.waydroid.fake_wifi "com.aniplex.fategrandorder"
``` ```
- 模拟触控功能 - 模拟触控功能
安装Package Manager用於查看APP的软件包名称。有些APP认不到鼠标点击需要启用模拟触控(fake touch) 安装Package Manager用於查看APP的软件包名称。有些APP认不到鼠标点击需要启用模拟触控(fake touch)
``` ```bash
waydroid prop set persist.waydroid.fake_touch "软件包名称" waydroid prop set persist.waydroid.fake_touch "软件包名称"
``` ```
例如给Fate/Go游戏开启模拟触控 例如给Fate/Go游戏开启模拟触控
``` ```bash
waydroid prop set persist.waydroid.fake_touch "com.aniplex.fategrandorder" waydroid prop set persist.waydroid.fake_touch "com.aniplex.fategrandorder"
``` ```
- 用命令安装APK - 用命令安装APK
``` ```bash
waydroid app install <APK档案路径>.apk waydroid app install <APK档案路径>.apk
``` ```
- 进入ADB Shell - 进入ADB Shell
``` ```bash
sudo waydroid shell sudo waydroid shell
``` ```
- 开启多视窗模式 - 开启多视窗模式
Waydroid的多视窗模式看起来像Linux的原生应用。启动后按F11改回来。 Waydroid的多视窗模式看起来像Linux的原生应用。启动后按F11改回来。
``` ```bash
waydroid prop set persist.waydroid.multi_windows true waydroid prop set persist.waydroid.multi_windows true
sudo systemctl restart waydroid-container sudo systemctl restart waydroid-container
``` ```
@@ -154,13 +154,13 @@ sudo systemctl restart waydroid-container
Waydroid第一次开机可能会收到``Device is not Play Protect certified``的通知无法登入Google账号。 Waydroid第一次开机可能会收到``Device is not Play Protect certified``的通知无法登入Google账号。
用以下命令取得Waydroid的装置ID。该命令会印出一长串数字。 用以下命令取得Waydroid的装置ID。该命令会印出一长串数字。
``` ```bash
sudo waydroid shell sudo waydroid shell
ANDROID_RUNTIME_ROOT=/apex/com.android.runtime ANDROID_DATA=/data ANDROID_TZDATA_ROOT=/apex/com.android.tzdata ANDROID_I18N_ROOT=/apex/com.android.i18n sqlite3 /data/data/com.google.android.gsf/databases/gservices.db "select * from main where name = \"android_id\";" ANDROID_RUNTIME_ROOT=/apex/com.android.runtime ANDROID_DATA=/data ANDROID_TZDATA_ROOT=/apex/com.android.tzdata ANDROID_I18N_ROOT=/apex/com.android.i18n sqlite3 /data/data/com.google.android.gsf/databases/gservices.db "select * from main where name = \"android_id\";"
``` ```
开启装置注册页面登入Google账号输入装置ID注册等个半小时应该就能登入Google账号了。如果还是不行就重新启动Waydroid容器服务 开启装置注册页面登入Google账号输入装置ID注册等个半小时应该就能登入Google账号了。如果还是不行就重新启动Waydroid容器服务
``` ```bash
sudo systemctl restart waydroid-container sudo systemctl restart waydroid-container
``` ```
现在可以安装APP了Google Play和F-Droid会自动筛出適合x86架构的APP。 现在可以安装APP了Google Play和F-Droid会自动筛出適合x86架构的APP。
@@ -267,18 +267,18 @@ ReDroidRemote-Android是一款开源的容器化 Android 解决方案,
## 日常使用 ## 日常使用
- **ADB 连接与屏幕镜像** - **ADB 连接与屏幕镜像**
```bash ```bash
adb connect localhost:5555 adb connect localhost:5555
scrcpy -s localhost:5555 --audio-codec=aac scrcpy -s localhost:5555 --audio-codec=aac
``` ```
- **安装 APK** - **安装 APK**
- 使用 `adb install your_app.apk` - 使用 `adb install your_app.apk`
- 或在 Scrcpy 界面中拖拽 APK 文件进行安装 - 或在 Scrcpy 界面中拖拽 APK 文件进行安装
- **停止与重启** - **停止与重启**
```bash ```bash
sudo docker compose down sudo docker compose down
sudo docker compose up -d sudo docker compose up -d
``` ```
- **数据持久化**:所有数据保存在 `~/redroid/redroid-11-data`,可备份或运行多实例。 - **数据持久化**:所有数据保存在 `~/redroid/redroid-11-data`,可备份或运行多实例。
## 高级操作与安全建议 ## 高级操作与安全建议

View File

@@ -211,7 +211,7 @@ Linux 的权限可以简单理解为``UGO+RWX``.
- Linux命令查询[linux-command](https://wangchujiang.com/linux-command/hot.html) - Linux命令查询[linux-command](https://wangchujiang.com/linux-command/hot.html)
- Linux常用命令表[Quick Reference](https://wangchujiang.com/reference/docs/linux-command.html) - Linux常用命令表[Quick Reference](https://wangchujiang.com/reference/docs/linux-command.html)
``` ```bash
date date
Sun Nov 16 09:16:15 PM +08 2025 Sun Nov 16 09:16:15 PM +08 2025
uname -a uname -a
@@ -243,7 +243,7 @@ which ls
- 在一些精简 Linux例如 Alpine、OpenWrt中命令不来自 GNU coreutils而来自一个叫 **BusyBox** 的单程序。BusyBox 只一个二进制文件,但内部包含了上百个命令,这种方式体积小,适用于嵌入式设备。 - 在一些精简 Linux例如 Alpine、OpenWrt中命令不来自 GNU coreutils而来自一个叫 **BusyBox** 的单程序。BusyBox 只一个二进制文件,但内部包含了上百个命令,这种方式体积小,适用于嵌入式设备。
``` ```bash
/bin/busybox ls /bin/busybox ls
/bin/busybox cp /bin/busybox cp
/bin/busybox tar /bin/busybox tar

View File

@@ -15,7 +15,7 @@ tags = ["Linux"]
- **Ubuntu** - **Ubuntu**
以ubuntu24.04为例,首先安装这些包,包括连接工具,工具链和调试器等等。 以ubuntu24.04为例,首先安装这些包,包括连接工具,工具链和调试器等等。
```shell ```bash
sudo apt update sudo apt update
sudo apt install -y git python3 scons openocd stlink-tools gcc-arm-none-eabi gdb-multiarch sudo apt install -y git python3 scons openocd stlink-tools gcc-arm-none-eabi gdb-multiarch
``` ```
@@ -58,7 +58,7 @@ sudo apt install -y git python3 scons openocd stlink-tools gcc-arm-none-eabi gdb
随后使用Git拉取项目源码 随后使用Git拉取项目源码
```shell ```bash
git clone https://github.com/RT-Thread-Studio/sdk-bsp-stm32f407-spark.git git clone https://github.com/RT-Thread-Studio/sdk-bsp-stm32f407-spark.git
``` ```
@@ -66,7 +66,7 @@ git clone https://github.com/RT-Thread-Studio/sdk-bsp-stm32f407-spark.git
使用Git拉取RT-Thread配套的linux开发环境并添加Shell变量。 使用Git拉取RT-Thread配套的linux开发环境并添加Shell变量。
```shell ```bash
# 克隆仓库 # 克隆仓库
git clone https://github.com/RT-Thread/env.git ~/env git clone https://github.com/RT-Thread/env.git ~/env
# 将 ~/env 添加到 PATH # 将 ~/env 添加到 PATH
@@ -79,7 +79,7 @@ type pkgs
随后可以使用PKG初始化并安装两个必要的包 随后可以使用PKG初始化并安装两个必要的包
```shell ```bash
pkgs --update pkgs --update
pip install kconfiglib pip install kconfiglib
pip install scons pip install scons
@@ -88,14 +88,14 @@ pip install scons
## 连接 ## 连接
使用USB线连接开发板和开发PC并使用lsusb命令查看是否出现 使用USB线连接开发板和开发PC并使用lsusb命令查看是否出现
```shell ```bash
lsusb lsusb
Bus 001 Device 004: ID 0483:374b STMicroelectronics ST-LINK/V2.1 Bus 001 Device 004: ID 0483:374b STMicroelectronics ST-LINK/V2.1
``` ```
添加成功后可以使用这个命令来检测是否连接成功: 添加成功后可以使用这个命令来检测是否连接成功:
```shell ```bash
st-info --probe st-info --probe
Found 1 stlink programmers Found 1 stlink programmers
version: V2J35S26 version: V2J35S26
@@ -149,11 +149,11 @@ elif CROSS_TOOL == 'llvm-arm':
## 编译 ## 编译
在完成以上设置之后我们可以开始编译。STM32使用scons编译系统同样是menuconfig命令 在完成以上设置之后我们可以开始编译。STM32使用scons编译系统同样是menuconfig命令
```shell ```bash
scons --menuconfig scons --menuconfig
``` ```
修改配置并保存退出后即可开始编译,$(nproc)代表使用全部CPU线程来编译 修改配置并保存退出后即可开始编译,$(nproc)代表使用全部CPU线程来编译
```shell ```bash
scons -j$(nproc) scons -j$(nproc)
``` ```
@@ -163,18 +163,18 @@ scons -j$(nproc)
在烧入之前,我们可以备份一下原来的系统: 在烧入之前,我们可以备份一下原来的系统:
```shell ```bash
st-flash read firmware_backup.bin 0x08000000 0x100001 st-flash read firmware_backup.bin 0x08000000 0x100001
``` ```
随后使用如下命令烧入系统: 随后使用如下命令烧入系统:
```shell ```bash
st-flash write rtthread.bin 0x08000000 st-flash write rtthread.bin 0x08000000
``` ```
## 串口 ## 串口
除了USB之外我们还可以使用串口连接 除了USB之外我们还可以使用串口连接
```shell ```bash
sudo apt install picocom sudo apt install picocom
picocom -b 115200 /dev/ttyACM0 picocom -b 115200 /dev/ttyACM0
``` ```

View File

@@ -113,7 +113,7 @@ keytool -genkey -v \
``` ```
- 修改app/build.gradle.kts - 修改app/build.gradle.kts
```bash ```java
signingConfigs { signingConfigs {
create("release") { create("release") {
storeFile = System.getenv("KEYSTORE_FILE")?.let { file(it) } storeFile = System.getenv("KEYSTORE_FILE")?.let { file(it) }

View File

@@ -13,11 +13,11 @@ tags = ["Windows"]
开机之前先断网然后输入Shift+F10会弹出命令行界面并输入 开机之前先断网然后输入Shift+F10会弹出命令行界面并输入
`` ``bash
oobe\BypassNRO.cmd oobe\BypassNRO.cmd
`` ``
回车之后会重启,之后就可以跳过联网了,选择 回车之后会重启,之后就可以跳过联网了,选择
`` ``bash
I don't have internet I don't have internet
`` ``
即可。 即可。
@@ -36,7 +36,7 @@ I don't have internet
## 激活windows ## 激活windows
这里使用MAS的脚本: 这里使用MAS的脚本:
``` ```bash
irm https://get.activated.win | iex irm https://get.activated.win | iex
``` ```
@@ -48,7 +48,7 @@ irm https://get.activated.win | iex
3.然后就可以使用脚本彻底关闭更新:将以下命令保存为.bat文件运行即可。 3.然后就可以使用脚本彻底关闭更新:将以下命令保存为.bat文件运行即可。
``` ```bat
::Windows auomatic updates ::Windows auomatic updates
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU /v AutoInstallMinorUpdates /t REG_DWORD /d 1 /f reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU /v AutoInstallMinorUpdates /t REG_DWORD /d 1 /f
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU /v NoAutoUpdate /t REG_DWORD /d 1 /f reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU /v NoAutoUpdate /t REG_DWORD /d 1 /f
@@ -71,7 +71,7 @@ reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings /v Pause
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings /v PauseQualityUpdatesEndTime /t REG_SZ /d "2100-01-01T00:00:00Z" /f reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings /v PauseQualityUpdatesEndTime /t REG_SZ /d "2100-01-01T00:00:00Z" /f
``` ```
如果要恢复更新,使用以下命令,同样保存为.bat运行 如果要恢复更新,使用以下命令,同样保存为.bat运行
``` ```bat
::Windows auomatic updates ::Windows auomatic updates
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU /v AutoInstallMinorUpdates /t REG_DWORD /d 0 /f reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU /v AutoInstallMinorUpdates /t REG_DWORD /d 0 /f
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU /v NoAutoUpdate /t REG_DWORD /d 0 /f reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU /v NoAutoUpdate /t REG_DWORD /d 0 /f
@@ -103,17 +103,17 @@ Win11的`显示更多选项`的二级菜单过于繁琐,怎么设置才能将
**步骤2.** 输入以下命令并按**Enter**键执行。 **步骤2.** 输入以下命令并按**Enter**键执行。
``` ```bash
reg add HKCU\Software\Classes\CLSID{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32 /ve /d “” /f reg add HKCU\Software\Classes\CLSID{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32 /ve /d “” /f
``` ```
或者 或者
``` ```bash
reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
taskkill /f /im explorer.exe taskkill /f /im explorer.exe
start explorer.exe start explorer.exe
``` ```
如果想要重新打开Win11新样式的右键菜单的话以同样的方式在命令提示符中执行此命令 如果想要重新打开Win11新样式的右键菜单的话以同样的方式在命令提示符中执行此命令
``` ```bash
reg delete "HKCU\Software\Classes\CLSID{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}" /f reg delete "HKCU\Software\Classes\CLSID{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}" /f
``` ```
## Win11关闭 Windows Defender ## Win11关闭 Windows Defender
@@ -151,7 +151,7 @@ pool.ntp.org一个公共的 NTP 时间服务器池)
应用更改:点击 "更新现在",然后 "确定" 保存设置。 应用更改:点击 "更新现在",然后 "确定" 保存设置。
- 如果有linux/win双系统可以让 Windows 使用 UTC 作为硬件时钟时间: - 如果有linux/win双系统可以让 Windows 使用 UTC 作为硬件时钟时间:
``` ```bash
# 在 Windows 中以管理员权限运行命令提示符,执行: # 在 Windows 中以管理员权限运行命令提示符,执行:
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /t REG_DWORD /d 1 /f reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /t REG_DWORD /d 1 /f
``` ```
@@ -159,11 +159,11 @@ reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation
## 调整网络优先级 ## 调整网络优先级
- 查看当前优先级PowerShell/管理员) - 查看当前优先级PowerShell/管理员)
``` ```bash
Get-NetIPInterface Get-NetIPInterface
``` ```
你会看到类似: 你会看到类似:
``` ```bash
IfIndex InterfaceMetric InterfaceAlias IfIndex InterfaceMetric InterfaceAlias
------- -------------- -------------- ------- -------------- --------------
15 25 Wi-Fi 15 25 Wi-Fi
@@ -174,15 +174,15 @@ IfIndex InterfaceMetric InterfaceAlias
- 修改网络优先级 - 修改网络优先级
将有线网络(以太网) 设为更高优先级(值更小): 将有线网络(以太网) 设为更高优先级(值更小):
``` ```bash
Set-NetIPInterface -InterfaceIndex 3 -InterfaceMetric 10 Set-NetIPInterface -InterfaceIndex 3 -InterfaceMetric 10
``` ```
- 将 WiFi 设为更低优先级: - 将 WiFi 设为更低优先级:
``` ```bash
Set-NetIPInterface -InterfaceIndex 15 -InterfaceMetric 25 Set-NetIPInterface -InterfaceIndex 15 -InterfaceMetric 25
``` ```
- 重启网络 - 重启网络
``` ```bash
Restart-NetAdapter -Name "以太网" Restart-NetAdapter -Name "以太网"
``` ```
这样当网线插入时Windows 会优先使用有线网络;断开网线后,自动切换到 WiFi。 这样当网线插入时Windows 会优先使用有线网络;断开网线后,自动切换到 WiFi。
@@ -191,7 +191,7 @@ Restart-NetAdapter -Name "以太网"
- 如需永久设置,可修改注册表: - 如需永久设置,可修改注册表:
Win + R 输入 regedit 打开注册表编辑器,进入路径: Win + R 输入 regedit 打开注册表编辑器,进入路径:
``` ```bash
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
``` ```
在 Interfaces 里找到你的有线网卡和无线网卡(可以根据 IP 或 MAC 地址确认)。 在 Interfaces 里找到你的有线网卡和无线网卡(可以根据 IP 或 MAC 地址确认)。
@@ -207,7 +207,7 @@ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
> 保存为.bat格式 > 保存为.bat格式
``` ```bat
@echo off @echo off
REM 清理代理设置 REM 清理代理设置
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /f REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /f
@@ -219,7 +219,7 @@ echo 代理设置已清除
> 保存为.reg格式 > 保存为.reg格式
开启3D加速 开启3D加速
``` ```bat
Windows Registry Editor Version 5.00 Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw] [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw]
"EmulationOnly"=dword:00000000 "EmulationOnly"=dword:00000000
@@ -232,7 +232,7 @@ Windows Registry Editor Version 5.00
``` ```
关闭3D加速 关闭3D加速
``` ```bat
Windows Registry Editor Version 5.00 Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw] [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw]
"EmulationOnly"=dword:00000001 "EmulationOnly"=dword:00000001

View File

@@ -28,7 +28,7 @@ Python是一种跨平台的编程语言,社区生态丰富,有许多现成的
安装好了Anaconda就相当于同时有了Python、环境管理器、包管理器以及一大堆开箱即用的科学计算工具包。 安装好了Anaconda就相当于同时有了Python、环境管理器、包管理器以及一大堆开箱即用的科学计算工具包。
> linux中安装Miniconda > linux中安装Miniconda
``` ```bash
# Miniconda安装脚本 # Miniconda安装脚本
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 执行以下命令启动安装程序: # 执行以下命令启动安装程序:
@@ -40,39 +40,39 @@ conda --version
## 使用 ## 使用
- 创建环境后面的python=3.6是指定python的版本 - 创建环境后面的python=3.6是指定python的版本
``` ```bash
conda create --name env_name python=3.6 conda create --name env_name python=3.6
``` ```
- 创建包含某些包的环境(也可以加上版本信息) - 创建包含某些包的环境(也可以加上版本信息)
``` ```bash
conda create --name env_name python=3.7 numpy scrapy conda create --name env_name python=3.7 numpy scrapy
``` ```
- 激活某个环境 - 激活某个环境
``` ```bash
conda activate env_name conda activate env_name
``` ```
- 关闭某个环境 - 关闭某个环境
``` ```bash
conda deactivate env_name conda deactivate env_name
``` ```
- 复制某个环境 - 复制某个环境
``` ```bash
conda create --name new_env_name --clone old_env_name conda create --name new_env_name --clone old_env_name
``` ```
- 删除某个环境 - 删除某个环境
``` ```bash
conda remove --name env_name --all conda remove --name env_name --all
``` ```
- 生成需要分享环境的yml文件需要在虚拟环境中执行 - 生成需要分享环境的yml文件需要在虚拟环境中执行
``` ```bash
conda env export > environment.yml conda env export > environment.yml
``` ```
- 在本地使用yml文件创建虚拟环境 - 在本地使用yml文件创建虚拟环境
``` ```bash
conda env create -f environment.yml conda env create -f environment.yml
``` ```
- 列出本机的所有环境如下可见当前有2个环境当前激活的是test环境 - 列出本机的所有环境如下可见当前有2个环境当前激活的是test环境
``` ```bash
(test) ➜ ~ conda info -e (test) ➜ ~ conda info -e
- conda environments: - conda environments:
# #
@@ -83,47 +83,47 @@ test * /Volumes/300g/opt/anaconda3/envs/test
### 包管理 ### 包管理
- 列出当前环境下所有安装的包 - 列出当前环境下所有安装的包
``` ```bash
conda list conda list
``` ```
- 列举一个指定环境下的所有包 - 列举一个指定环境下的所有包
``` ```bash
conda list -n env_name conda list -n env_name
``` ```
- 查询库 - 查询库
``` ```bash
conda search scrapys conda search scrapys
``` ```
- 安装库安装时可以指定版本例如scrapy=1.5.0 - 安装库安装时可以指定版本例如scrapy=1.5.0
``` ```bash
conda install scrapy conda install scrapy
``` ```
- 为指定环境安装某个包 - 为指定环境安装某个包
``` ```bash
conda install --name target_env_name package_name conda install --name target_env_name package_name
``` ```
- 更新安装的库 - 更新安装的库
``` ```bash
conda update scrapy conda update scrapy
``` ```
- 更新指定环境某个包 - 更新指定环境某个包
``` ```bash
conda update -n target_env_name package_name conda update -n target_env_name package_name
``` ```
- 更新所有包 - 更新所有包
``` ```bash
conda update --all conda update --all
``` ```
- 删除已经安装的库 - 删除已经安装的库
``` ```bash
conda remove scrapy conda remove scrapy
``` ```
- 删除指定环境某个包 - 删除指定环境某个包
``` ```bash
conda remove -n target_env_name package_name conda remove -n target_env_name package_name
``` ```
- 更多命令请查看官方文档或者查询帮助命令: - 更多命令请查看官方文档或者查询帮助命令:
``` ```bash
conda --help conda --help
conda install --help conda install --help
@@ -134,11 +134,11 @@ conda install --help
安装Anaconda并启动一个环境之后如何让Jupyter Notebook在我们要的环境中启动呢 安装Anaconda并启动一个环境之后如何让Jupyter Notebook在我们要的环境中启动呢
- 安装jupyter - 安装jupyter
``` ```bash
conda install jupyter notebook conda install jupyter notebook
``` ```
- 配置虚拟机中允许宿主机访问 - 配置虚拟机中允许宿主机访问
``` ```bash
# 生成配置 # 生成配置
jupyter notebook --generate-config jupyter notebook --generate-config
# 编辑配置 # 编辑配置
@@ -155,20 +155,20 @@ jupyter notebook
为了让 Jupyter Notebook 能识别该环境中的 Python 解释器,你需要在该环境中安装 ipykernel 为了让 Jupyter Notebook 能识别该环境中的 Python 解释器,你需要在该环境中安装 ipykernel
``` ```bash
conda install ipykernel conda install ipykernel
``` ```
- 注册环境内核 - 注册环境内核
将该环境注册为 Jupyter 的一个内核kernel这样启动 Jupyter Notebook 后就能选择这个内核: 将该环境注册为 Jupyter 的一个内核kernel这样启动 Jupyter Notebook 后就能选择这个内核:
``` ```bash
python -m ipykernel install --user --name myenv --display-name "Python (myenv)" python -m ipykernel install --user --name myenv --display-name "Python (myenv)"
``` ```
这里 --name 指定内核的名称,--display-name 是在 Jupyter Notebook 界面中显示的名称,你可以根据需要自定义。 这里 --name 指定内核的名称,--display-name 是在 Jupyter Notebook 界面中显示的名称,你可以根据需要自定义。
- 启动 Jupyter Notebook依然在激活后的环境中启动 Jupyter Notebook启动后你在新建 notebook 时可以选择刚刚注册的内核 “Python (myenv)” 来确保使用该环境的 Python 解释器。 - 启动 Jupyter Notebook依然在激活后的环境中启动 Jupyter Notebook启动后你在新建 notebook 时可以选择刚刚注册的内核 “Python (myenv)” 来确保使用该环境的 Python 解释器。
``` ```bash
jupyter notebook jupyter notebook
``` ```
@@ -176,7 +176,7 @@ jupyter notebook
Jupyter Notebook 本身没有官方语言包,但可以用第三方扩展 ``jupyter_contrib_nbextensions``和``notebook-translation``来实现部分汉化 Jupyter Notebook 本身没有官方语言包,但可以用第三方扩展 ``jupyter_contrib_nbextensions``和``notebook-translation``来实现部分汉化
``` ```bash
pip install jupyter_contrib_nbextensions pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user jupyter contrib nbextension install --user
pip install jupyter-notebook-translation pip install jupyter-notebook-translation
@@ -282,12 +282,12 @@ uv pip uninstall numpy
## ipynb转markdown ## ipynb转markdown
首先安装 nbformat 和 nbconvert包 首先安装 nbformat 和 nbconvert包
``` ```bash
conda install nbformat nbconvert -y conda install nbformat nbconvert -y
touch ipynb2md.py && nano ipynb2md.py touch ipynb2md.py && nano ipynb2md.py
``` ```
写入以下脚本: 写入以下脚本:
``` ```python
import nbformat import nbformat
from nbconvert import MarkdownExporter from nbconvert import MarkdownExporter
from pathlib import Path from pathlib import Path
@@ -319,7 +319,7 @@ if __name__ == "__main__":
batch_convert(input_dir=".") batch_convert(input_dir=".")
``` ```
运行脚本: 运行脚本:
``` ```bash
python ipynb2md.py python ipynb2md.py
``` ```
脚本会自动扫描当前目录下的所有 .ipynb 文件,并把 .md 文件输出到 markdown_output/ 文件夹。 脚本会自动扫描当前目录下的所有 .ipynb 文件,并把 .md 文件输出到 markdown_output/ 文件夹。

View File

@@ -44,7 +44,7 @@ tags = ["Windows"]
## 配置JSON ## 配置JSON
- 回到 Visual Studio Code 继续配置。点击左侧的资源管理器,点击打开文件夹,创建一个``.cpp``文件,里面代码可以是 - 回到 Visual Studio Code 继续配置。点击左侧的资源管理器,点击打开文件夹,创建一个``.cpp``文件,里面代码可以是
``` ```bash
#include <iostream> #include <iostream>
int main() { int main() {