Tutorial
-
521xueweihan/HelloGitHub[GitHub] - 分享 GitHub 上有趣、入门级的开源项目
-
krahets/hello-algo[GitHub] - 《Hello 算法》
-
ruanyf/weekly[GitHub] - 科技爱好者周刊,每周五发布
-
xuanli199/weekly[GitHub] - 玄离199每周科技补全中提到的各种软件和项目
-
tech-shrimp/me[GitHub] - 爬爬虾技术资源汇总
~ updateDate: 2025-01-22
Windows-Software
目录
- Windows
- Browser
- Compression
- Cloud Driver
- Develop
- Develop SSH
- Document
- Download
- ETC
- Watt Toolkit(Steam++)
- UsbEAm Hosts Editor
- IObit Driver Booster Pro
- CCleaner
- TrafficMonitor - 流量监控
- Domain Name Speed Benchmark - DNS测速
- Optimizer - Windows优化器
- Image
- FastStone Capture
- FastStone Image Viewer
- Final2x - 图像超分辨率
- Umi-OCR - 文字识别工具
- Media
- Media Processing
- Adobe Photoshop
- Adobe Collection
- FFmpeg
- Whisper - OpenAI's Whisper 自动语音识别
- video-subtitle-extractor - 视频硬字幕提取
- Messaging
- Platform
- Remote Control
- Recording
- Recording-etc
- Uninstaller
- Science
- Science-etc
- System
Windows
-
Browser
-
Edge
edge://flags/#enable-parallel-downloading - 多线程下载
-
Firefox 国际版
- AdBlocker Ultimate[Official][GitHub]
- Dark Reader[GitHub]
Proxy SwitchyOmega[GitHub] - 管理&切换多个代理设置v3问题
- SetupVPN - Lifetime Free VPN[Official]
- Tampermonkey[Official]
- TWP - Translate Web Pages - 使用 Google 或 Yandex 实时翻译您的页面
- WebRTC Leak Shield
- 视频弹出工具[GitHub]
- 沙拉查词-聚合词典划词翻译[Official][GitHub]
- 沉浸式翻译[Official][GitHub]
-
Google Chrome
chrome://flags/#enable-parallel-downloading - 多线程下载
- Adblock Plus[Official]
- Aria2 Explorer[GitHub]
- Dark Reader[GitHub]
- Floating Player - Picture-in-Picture Mode - 瀏覽器浮動視頻播放器
- IDM Integration Module
- Listen 1[GitHub]
Proxy SwitchyOmega[GitHub] - 管理&切换多个代理设置v3问题
- Reproductor M3U8 - HLS + DASH Player
- SetupVPN - Lifetime Free VPN[Official]
- Tampermonkey[Official]
- WebRTC Leak Shield
- 二维码生成器 (Quick QR)
- 扩展管理器(Extension Manager)
- 扩展管理器(Extension Manager)by ext.jgrass.cc [Official][GitHub]
- 捕捉网页截图 - FireShot的[Official]
- 沙拉查词-聚合词典划词翻译[Official][GitHub]
- 沉浸式翻译[Official][GitHub]
-
-
Compression
-
Cloud Driver
-
阿里云盘
阿里云盘小白羊版[GitHub]- 阿里云盘开放平台 - 文档
-
坚果云
-
Alist[GitHub]
- ykxVK8yL5L/alist[GitHub] -
ThunderX -> 离线下载 -> storage
alist proxy
set http_proxy=http://127.0.0.1:7897/ set https_proxy=http://127.0.0.1:7897/ set ftp_proxy=http://127.0.0.1:7897/ set no_proxy=localhost,127.0.0.1,::1 alist.exe server
- ykxVK8yL5L/alist[GitHub] -
-
Rclone[GitHub]
Rclone本地挂载
范:rclone mount <网盘名称:路径> <本地路径> --cache-dir <本地缓存路径> --network-mode --vfs-cache-mode <缓存模式> --header "Referer:" 例: rclone mount alist:/ Z: --cache-dir C:\Software\Rclone\cache --network-mode --vfs-cache-mode writes --header "Referer:" PS: --header "Referer:" 现象: IO error: vfs reader: failed to write to cache file: 403 Forbidden Why: WebDAV不支持重定向 Fix: 当WebDAV策略为302 Rclone加上 --header "Referer:" 或者 把WebDAV策略改为本地代理
- PS: rclone mount
-
-
Develop
-
Eclipse
-
Tomcat[GitHub]
-
JDK[GitHub]
-
MySQL
-
redis-windows[GitHub]
-
Maven[GitHub]
-
Navicat[果核]
-
Visual Studio Code
-
Nodejs[GitHub]
Develop SSH
-
-
Document
-
Office Tool Plus[GitHub] - 轻松部署Office
-
Typora[local] - Markdown 编辑器和阅读器
- local: 0.9.83(beta)
- https://github.com/DiamondHunters/NodeInject_Hook_example - Typora Activate
-
-
Download
-
Internet Download Manager[果核]
ef2 [GitHub] - IDM辅助下载工具,使用自定义ef2://协议,同时支持解析IDM导出文件(.ef2)
-
Aria2[GitHub]
- Aria2中文网 - 懒人版
- https://github.com/sjh0020/aria2/ - 懒人合集包
- aria2.conf[GitHub] - Aria2 完美配置
- Aria2 GUI
-
qBittorrent-Enhanced-Edition[GitHub]
-
Neat Download Manager
-
AB Download Manager[GitHub]
-
-
ETC
-
Watt Toolkit(Steam++)[GitHub]
-
UsbEAm Hosts Editor - 多平台hosts修改
- hosts
C:\Windows\System32\drivers\etc
- hosts
-
IObit Driver Booster Pro[果核] - 驱动管理
-
CCleaner[果核] - 清理
-
TrafficMonitor[GitHub] - 流量监控
-
Domain Name Speed Benchmark
-
Optimizer[GitHub] - Windows优化器
-
-
Image
-
FastStone Capture[果核] - 屏幕截图
-
FastStone Image Viewer[果核] - 图片查看工具
-
Final2x[GitHub] - 图像超分辨率
-
Umi-OCR[GitHub] - 文字识别工具
-
-
Media
-
PotPlayer[果核]
-
MPV[GitHub]
- mpv-lazy 懒人包
- copy-paste-URL.lua -
ctrl + v
到mpv
播放视频
PS:copy-paste-URL.lua 代码
function trim(s) return (s:gsub("^%s*(%S+)%s*", "%1")) end function openURL() subprocess = { name = "subprocess", args = { "powershell", "-Command", "Get-Clipboard", "-Raw" }, playback_only = false, capture_stdout = true, capture_stderr = true } mp.osd_message("Getting URL from clipboard...") r = mp.command_native(subprocess) --failed getting clipboard data for some reason if r.status < 0 then mp.osd_message("Failed getting clipboard data!") print("Error(string): "..r.error_string) print("Error(stderr): "..r.stderr) end url = r.stdout if not url then return end --trim whitespace from string url=trim(url) if not url then mp.osd_message("clipboard empty") return end --immediately resume playback after loading URL if mp.get_property_bool("core-idle") then if not mp.get_property_bool("idle-active") then mp.command("keypress space") end end --try opening url --will fail if url is not valid mp.osd_message("Try Opening URL:\n"..url) mp.commandv("loadfile", url, "replace") end mp.add_key_binding("ctrl+v", openURL)
-
Spotify[local][吾爱]
local:
Spotify for Windows 1.1.67.586.gbb5ef64e- Spotify Windows (32 bit) 版 1.2.13.661.ga588f749
SpotX [GitHub] - SpotX是一款Windows平台Spotify修改版客户端,具备广告屏蔽、隐藏播客和有声书、阻止自动更新等功能。此外,它还激活了多项实验性特性,支持快速安装和更新,并提供多种安装选项。SpotX旨在优化Spotify使用体验,使其更加流畅和功能丰富。
-
网易云
-
-
Media Processing
-
Adobe Photoshop[果核]
Adobe Photoshop 2020 v21.2.12.215 绿色精简版 - Windows 10 Enterprise LTSC 2019 (x64) - DVD (Chinese-Simplified)
-
Adobe Collection[vposy]
-
FFmpeg
.bat
- to[hevc_nvenc][qp18].bat
:softshare if "%~1"=="" goto:eof ffmpeg -hide_banner -i "%~1" -c:v hevc_nvenc -qp 18 -acodec copy "%~dpn1_[hevc_nvenc][qp18].mp4" shift&goto:softshare
- to[libx265][crf18].bat
:softshare if "%~1"=="" goto:eof ffmpeg -hide_banner -i "%~1" -c:v libx265 -crf 18 -acodec copy "%~dpn1_[x265][crf18].mp4" shift&goto:softshare
- ffprobe_show_format.bat
@echo on ffprobe -hide_banner -show_format "%~1" @cmd \k
-
Whisper[GitHub] - OpenAI's Whisper 自动语音识别
-
video-subtitle-extractor[GitHub] - 视频硬字幕提取
-
-
Messaging
-
Platform
-
Remote Control
-
Recording
-
Bandicam[果核]
-
BililiveRecorder[GitHub] - B站录播姬 | BiliBili Stream Recorder | 哔哩哔哩直播录制
-
BilibiliLiveRecordDownLoader[GitHub] - Bilibili 直播录制与回放下载
-
DouyinLiveRecorder[GitHub] - 抖音直播录制
-
-
Recording-etc
-
keyviz[GitHub] - 按键可视化
-
ZoomIt[GitHub] - 屏幕缩放工具
-
scrcpy[GitHub] - Display&control Android device
- QtScrcpy[GitHub] - GUI for scrcpy
.bat
- scrcpy_usb.bat
cd scrcpy-win64-v2.4 scrcpy.exe -d --window-x 2560 --window-y 30 --window-width 829 --window-height 1842
- scrcpy_tcpip.bat
cd scrcpy-win64-v2.4 adb tcpip 5555 adb connect 192.168.1.90:5555 scrcpy.exe -e --window-x 2560 --window-y 30 --window-width 829 --window-height 1842
scrcpy无线连接
-
确保PC和手机在同一Wifi中
-
手机先通过USB与PC相连
-
PC运行 adb tcpip 服务端口:
adb tcpip 5555
-
拔下你的设备,断开USB连接
-
PC运行 adb connect 手机IP:服务端口:
adb connect x.x.x.x:5555
-
PC运行 scrcpy:
scrcpy.exe -e
常用快捷键
- 更多快捷键可通过
scrcpy -h
描述 快捷键 切换全屏模式 Alt
+f
点击手机电源 Alt
+p
返回 Alt
+b
或 Right-click²返回到HOME Alt
+h
或 Middle-click多任务 Alt
+s
显示最佳窗口 Alt
+g
调节音量 Alt
+(↑
或↓
)关闭设备屏幕(保持镜像) Alt
+o
打开设备屏幕 Alt
+Shift
+o
将设备剪贴板复制到计算机 Alt
+c
将计算机剪贴板粘贴到设备 Alt
+v
-
-
Uninstaller
-
Science
-
Clash[GitHub][Wiki]作者删库:2023-11-03
Clash for Windows[GitHub]作者删库:2023-11-02
Clash.Meta
[GitHub][GitHub][Wiki]客户端
Clash Verge[GitHub]停止维护
- clash-verge-rev[GitHub] - Continuation of Clash Verge
- 局域网连接 ->
控制面板\所有控制面板项\Windows Defender 防火墙\允许的应用
-> 允许其他应用verge-mihomo.exe
- 局域网连接 ->
WEB UI 面板
-
NekoRay[GitHub]
-
shadowsocks-windows[GitHub]
-
v2rayN[GitHub]
-
WinXray[GitHub]
-
-
Science-etc
-
System
-
ITELLYOU
- ITELLYOU新版 - WINDOWS11系统原版
- ITELLYOU旧版 - WINDOWS系统原版
-
HEU KMS Activator[果核][GitHub] - (WIN&Office激活)
-
Ventoy[GitHub] - 多启动U盘的开源工具
-
微PE工具箱 - WinPE装机维护工具
-
图吧工具箱
-
VMware[果核]
-
CentOS[阿里云]
-
balenaEtcher - Flash OS images to SD cards & USB drives
-
@ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Nodejs
Nodejs常用库
- axios[Official][GitHub] - Promise HTTP
- tough-cookie[GitHub] - RFC 6265 Cookies and CookieJar for Node.js
- axios-cookiejar-support[GitHub] - Add tough-cookie support to axios
- dayjs[Official][GitHub] - 日期时间
- cheerio[Official][GitHub] - Node.js jQuery HTML
- jsdom[GitHub] - DOM仿真项目
- puppeteer[Official][GitHub] - 浏览器自动化
- playwright[Official][GitHub] - 浏览器自动化
- @octokit/core[GitHub] - Extendable client for GitHub's REST & GraphQL APIs
- libsodium-wrappers[GitHub] - The sodium crypto library
- log4js[Official][GitHub] - 日志
- javascript-obfuscator[Official][GitHub] - 混淆器
Windows二进制文件(.zip)安装方式
下载解压
nodejs下载解压目录 例: D:\Develop\node\node-v18.16.1-win-x64\
配置环境
-
安装目录下新建两个文件
文件名 目录 node_global
D:\Develop\node\node-v18.16.1-win-x64\node-global
node_cache
D:\Develop\node\node-v18.16.1-win-x64\node-cache
-
命令设置
#设置全局安装路径 npm config set prefix "D:\Develop\node\node-v18.16.1-win-x64\node-global" #设置缓存路径 npm config set cache "D:\Develop\node\node-v18.16.1-win-x64\node-cache" ##查看npm配置 npm config list
-
环境变量
变量名 变量值 NODE_PATH
(新增)D:\Develop\node\node-v18.16.1-win-x64
Path
(追加)%NODE_PATH%
%NODE_PATH%\node-global
-
nrm换源管理
#安装nrm换源管理模块 - 全局 npm install nrm -g #查看可选的源 带*号的是当前使用的源 nrm ls #切换到taobao源 nrm use taobao
Command
#初始化 package.json
npm init
#安装模块
npm install <package>
#卸载模块
npm uninstall <package>
~ updateDate: 2025-05-29
Android-Software
目录
Android
-
App Store
-
F-Droid
修改存储库为国内源 手机访问清华大学开源软件镜像站,使用 F-Droid 打开第一行的长链接,在弹出界面中点击添加镜像。也可以复制长链接 在应用⚙设置 - 存储库中,点击右上角的加号手动添加。添加完成后,还需要选择存储库中的第二个 F-Droid 库,只保留刚才添加的用户镜像,其他镜像悉数关闭,保证软件只从国内镜像站获取更新。
PS: F-Droid 使用指南
-
酷安
-
Aurora Store [GitLab][F-Droid] - 谷歌商店第三方客户端
在不安装谷歌框架的情况下,可以用这个安装谷歌商店的软件。它会用一个临时账号帮你下载,因此不会向谷歌暴露自己的个人信息。
-
-
Browser
-
Cloud Driver
-
Document
-
ETC
-
Map
-
Media
-
Messaging
-
Science
@ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Termux + QEMU + linux_alpine + Docker
准备工作
-
Alpine Linux系统镜像
Small. Simple. Secure. Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox. (来自https://alpinelinux.org/)
使用Alpine的原因:
- 体积占用小,完全安装后的镜像不到1gb
- 安装快
(废话) - 内存占用小,idle状态仅占用30多MB内存
传送门:
virtual-x86_64: alpine-virt-3.10.1-x86_64.iso(v3.10.1, OfficialSite)
详细过程
-
安装依赖
在Termux中:
pkg install x11-repo unstable-repo pkg install qemu-utils qemu-common qemu-system-x86_64
-
创建虚拟镜像(硬盘)
在Termux中:
qemu-img create -f qcow2 alpine.img 8G
参数中8G代表创建一个最大容量为8G的镜像,可调节,最少2g以保证docker能正常安装。
-
下載Alpine Linux系统镜像
在Termux中:
mkdir alpine && cd $_ wget http://dl-cdn.alpinelinux.org/alpine/v3.10/releases/x86_64/alpine-virt-3.10.1-x86_64.iso
-
Alpine安装到虚拟硬盘
在Termux中:
qemu-system-x86_64 -machine q35 -m 1024 -smp cpus=2 -cpu qemu64 \ -drive if=pflash,format=raw,read-only=on,file=$PREFIX/share/qemu/edk2-x86_64-code.fd \ -netdev user,id=n1,hostfwd=tcp::2222-:22 -device virtio-net,netdev=n1 \ -cdrom alpine-virt-3.10.1-x86_64.iso \ -nographic alpine.img
可另存为setup.sh, 赋予权限
chmod +x setup.sh
, 调用./setup.sh
参数解释:
- -hda : 启动的虚拟硬盘
- -cdrom : 启动的光盘镜像文件(相当于用光盘安装windows)
- -boot : 启动槽位,选d (我也不是太清楚)
- -m : 内存大小,单位mb
- -nographic : 无图像模式,直接在控制台输出
- --vnc :1 : 以vnc为图像模式输出到”显示器”,并占用vnc 1端口
-
使用root帳號登入,啟用網路卡
在Termux > alpine 中:
setup-interfaces #Available interfaces are: eth0. #Enter '?' for help on bridges, bonding and vlans. #Which one do you want to initialize? (or '?' or 'done') [eth0] #Ip address for eth0? (or 'dhcp', 'none', '?') [dhcp] #Do you want to do any manual network configuration? [no] ifup eth0
在Termux > alpine 中:
#在alpine中,可使用vi编辑器,查看网络配置 vi /etc/network/interfaces #重启网络 /etc/init.d/networking restart #修复默认dns服务器异常 将10.0.2.3改为8.8.8.8即可 vi /etc/resolv.conf
-
安装配置Alpine
在Termux > alpine 中:
setup-alpine
详细配置:
Select keyboard layout: cn
(选择CN键盘布局)Select variant
(cn)Enter system hostname: demohostname
(输入hostname名称,随意)Which one do you want to initialize? (or '?' or 'done')
[eth0]Ip address for eth0? (or 'dhcp', 'none', '?') [10.0.2.15] dhcp
(选dhcp)Changing password for root
(修改root用户密码)Which timezone are you in? ('?' for list) [UTC] Asia/Shanghai
(时区填Asia/Shanghai)HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none]
(代理地址,默认none)Enter mirror number (1-47) or URL to add (or r/f/e/done) [f]: 14
(选择软件源,14(清华源:http://mirrors.tuna.tsinghua.edu.cn/))Which SSH server? ('openssh', 'dropbear' or 'none') [openssh]
(SSH服务器,选择openssh(默认))Which disk(s) would you like to use? (or '?' for help or 'none') [none]sda
(安装在何处,选sda)How would you like to use it? ('sys', 'data', 'lvm' or '?' for help) [?] sys
(安装方式,选sys)WARNING: Erase the above disk(s) and continue? [y/N]: y
(清除整个硬盘,y(是))
安装完成,关闭虚拟机
在Termux > alpine 中:
#讓開機時能輸出訊息 sed -i -E 's/(local kernel_opts)=.*/\1="console=ttyS0"/' /sbin/setup-disk poweroff
-
启动Alpine
在Termux中:
qemu-system-x86_64 -machine q35 -m 2048 -smp cpus=2 -cpu qemu64 \ -drive if=pflash,format=raw,read-only=on,file=$PREFIX/share/qemu/edk2-x86_64-code.fd \ -netdev user,id=n1,hostfwd=tcp::2222-:22,hostfwd=tcp::8081-:80 -device virtio-net,netdev=n1 \ -nographic alpine.img #m是分配2GB記憶體,cpu是2核CPU,hostfwd則是把手機8081通訊埠轉發到虛擬機的80通訊埠。
可另存为run.sh, 赋予权限
chmod +x run.sh
, 调用./run.sh
参数解释:
- -hda : 启动的虚拟硬盘
- -boot : 启动槽位,选c (我也不是太清楚)
- -m : 内存大小,单位mb
- -netdev : 网络配置,详情请看 QEMU_Wiki:Documentation/Networking
- -device : 设备配置(当前指向网络设备)
- -nographic : 无图像模式,直接在控制台输出
- --vnc :1 : 以vnc为图像模式输出到”显示器”,并占用vnc 1端口
-
配置SSHD
在Termux > alpine 中:
#修改sshd_config,取消注释PermitRootLogin并修改为yes vi /etc/ssh/sshd_config #重启sshd service sshd restart
现在外部ssh就可以登录alpine的root账户了 在Termux中:
ssh root@localhost -p 2222
-
安装Docker
在Termux > alpine 中:
#在alpine中,docker在其comminuty源里 #添加community源,即取消注释comminuty源 vi /etc/apk/repositories apk update #安装docker apk add docker #使docker开机启动 rc-update add docker #开启docker服务 service docker start #后台启动 setsid dockerd #测试 docker info
-
Docker换源
在Termux > alpine 中:
vi /etc/docker/daemon.json
镜像仓库
- Docker 官方中国区:https://registry.docker-cn.com
- 网易:http://hub-mirror.c.163.com
- 中国科技大学:https://docker.mirrors.ustc.edu.cn
- 阿里云:https://pee6w651.mirror.aliyuncs.com
{ "registry-mirrors":["https://pee6w651.mirror.aliyuncs.com"] }
参考资料:
- https://stageguard.top/2019/08/15/run-docker-on-qemu-alpine/
- https://ivonblog.com/posts/run-docker-in-qemu-android/
Linux-Software
目录
Software
-
Help
-
Tutorial
- dunwu/linux-tutorial[GitHub] - Linux 教程
- judasn/Linux-Tutorial[GitHub] - 《Java 程序员眼中的 Linux》
- jaywcjlove/linux-command[GitHub] - Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。
-
-
管理面板
-
Cloud Driver
Linux-Command
目录
Content
-
端口
#yum安装nmap yum install nmap -y #nmap IP地址,查看指定IP的对外暴露端口 #语法格式 nmap [Options] <target> -O #激活探测操作 -P0 #只进行扫描,不ping主机 -PT #是同TCP的ping -sV #显示服务版本信息 -sP #ping扫描,仅发现目标主机是否存活 -ps #发送同步(SYN)报文 -PU #发送udp ping -PE #强制执行直接的ICMPping -PB #默认模式 -6 #使用IPv6地址 -v #详细信息 -d #增加调试信息地输出 -A #使用所有高级扫描选项 --resume #恢复(继续上次)中止的扫描 -P #指定要扫描的端口,可以是一个端口,用逗号隔开多个端口,使用“-”表示端口范围 -e #在多网络接口Linux系统中,指定扫描使用的网络接口 -g #将指定的端口作为源端口进行扫描 --ttl #指定发送的扫描报文的生存期 --packet-trace #显示扫描过程中收发报文统计 --scanflags #设置在扫描报文中的TCP标志 --send-eth/--send-ip #使用原始以太网发送/构造指定IP发送
#yum安装netstat yum install net-tools -y #查看本机端口号被程序占用的情况 netstat -anp #查看本机指定端口号被程序占用的情况 netstat -anp | grep 端口号
-
进程
#显示全部进程的全部信息 ps -ef #过滤指定关键字进程信息 ps -ef | grep 关键字
- UID :进程所属的用户ID
- PID :进程的进程号ID
- PPID :进程的父ID(启动此进程的其他进程)
- C :此进程的CPU占用率(百分比)
- TTY :启动此进程的终端序号,如显示?,表示非终端启动
- TIME :进程占用CPU的时间
- CMD :进程对应的名称或启动路径或启动命令
PS: linux-comm-ps
#通过kill关闭进程 #-9,表示强制关闭 kill [-9] 进程ID
PS: linux-comm-kill
-
主机状态监控
#系统资源监控 top
PS: linux-comm-top
#磁盘信息监控 #-h,更加人性化的单位显示 df [-h]
#iostat 可查看CPU、磁盘的相关信息 #-x,显示更多信息 #num1:数字,刷新间隔; num2:数字,刷新几次 iostat [-x] [num1] [num2]
#网络状态监控 #-n,查看网络 #DEV,表示查看网络接口 #num1:数字,刷新间隔(不填即查看一次结束); num2:数字,查看次数(不填无限次数) sar -n DEV num1 num2
Debian[阿里云]
- archive
- Some user-provided 2.0, 2.1 and 2.2 images (Hamm, Slink, Potato)
- 3.0_r0 to 3.0_r6 (Woody)
- 3.1_r0 to 3.1_r8 (Sarge)
- 4.0_r0 to 4.0_r9 (Etch)
- 5.0.0 to 5.0.10 (Lenny)
- 6.0.0 to 6.0.10 (Squeeze)
- 7.0.0 to 7.11.0 (Wheezy)
- 8.0.0 to 8.11.0 (Jessie)
- 8.11.1 (Jessie LTS, for some arches only)
- 9.0.0 to 9.13.0 (Stretch)
- 10.0.0 to 10.13.0 (Buster)
- 11.0.0 to ... (Bullseye)
- 12.0.0 to ... (Bookworm)
VMware + Debian 11 Bullseye
准备工作
创建安装Debain的虚拟机
-
打开虚拟软件VMware ->
创建新的虚拟机
-
类型配置 ->
自定义(高级)
-
硬件兼容性 -> 默认
-
安装客户机操作系统 ->
稍后安装操作系统
-
选择客户机操作系统
- 客户机操作系统 ->
Linux
` - 版本 ->
Debian 11.x64 位
- 客户机操作系统 ->
-
命名虚拟机名称
- 虚拟机名称 -> 自定义
- 虚拟机位置 -> 自定义
-
处理器配置 -> 自定义
-
内存配置 -> 自定义
-
网络配置 ->
使用桥接网络
-
选择I/O控制器类型 ->
LSILogic(L)
-
选择磁盘类型 ->
SCSI(S)
-
磁盘 ->
创建新虚拟磁盘
-
指定磁盘大小
- 最大磁盘大小 ->
20GB
(自定义) 将虚拟磁盘存储为单个文件
- 最大磁盘大小 ->
-
选择磁盘存储位置 -> 自定义
-
配置
自定义硬件
- CD/DVD -> 使用ISO映像文件 -> 选择Debian镜像
安装Debian
-
Debian GNU/Linux instatller menu (BISO mode) ->
Graphical install
-
Select a language ->
中文(简体)
-
地区 ->
中国
-
硬盘映射 ->
汉语
-
主机名 -> 自定义
-
配置域名 -> 留空
-
root用户设置登录密码 -> 自定义
-
创建普通用户&密码 -> 自定义
-
磁盘分区方法 ->
向导 - 使用整个磁盘
-
选择需要分区的磁盘 -> 默认
-
磁盘分区方案 ->
将所有文件放在一个分区中(推荐新手使用)
-
结束分区设定并将修改写入磁盘
-
将改动写入磁盘 ->
是
-
扫描额外的安装介质 ->
否
-
Debian仓库镜像所在的国家 ->
中国
-
Debian仓库镜像 ->
mirrors.tuna.tsinghua.edu.cn
(清华) -
代理 -> 留空
-
参加软件包流行度调查 ->
否
-
软件选择 (最小化安装仅选择基础系统与SSH即可)
SSH server
标准系统工具
-
安装GRUB启动引导器 ->
是
-
安装启动引导器设备 ->
/dev/sda
#查看系统信息
cat /etc/os-release
#查看所有开机自启动项
systemctl list-unit-files --type=service | grep enabled
Debian 11 (bullseye) 国内软件源
-
修改
/etc/apt/sources.list
文件国内常见镜像站点
#阿里云镜像站 deb https://mirrors.aliyun.com/debian/ bullseye main non-free contrib deb-src https://mirrors.aliyun.com/debian/ bullseye main non-free contrib deb https://mirrors.aliyun.com/debian-security/ bullseye-security main deb-src https://mirrors.aliyun.com/debian-security/ bullseye-security main deb https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib deb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib deb https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib deb-src https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
#清华大学镜像站 deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
#腾讯云镜像站 deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
#网易镜像站 deb https://mirrors.163.com/debian/ bullseye main non-free contrib deb-src https://mirrors.163.com/debian/ bullseye main non-free contrib deb https://mirrors.163.com/debian-security/ bullseye-security main deb-src https://mirrors.163.com/debian-security/ bullseye-security main deb https://mirrors.163.com/debian/ bullseye-updates main non-free contrib deb-src https://mirrors.163.com/debian/ bullseye-updates main non-free contrib deb https://mirrors.163.com/debian/ bullseye-backports main non-free contrib deb-src https://mirrors.163.com/debian/ bullseye-backports main non-free contrib
#华为镜像站 deb https://mirrors.huaweicloud.com/debian/ bullseye main non-free contrib deb-src https://mirrors.huaweicloud.com/debian/ bullseye main non-free contrib deb https://mirrors.huaweicloud.com/debian-security/ bullseye-security main deb-src https://mirrors.huaweicloud.com/debian-security/ bullseye-security main deb https://mirrors.huaweicloud.com/debian/ bullseye-updates main non-free contrib deb-src https://mirrors.huaweicloud.com/debian/ bullseye-updates main non-free contrib deb https://mirrors.huaweicloud.com/debian/ bullseye-backports main non-free contrib deb-src https://mirrors.huaweicloud.com/debian/ bullseye-backports main non-free contrib
-
修改之后再运行
apt update
更新索引
Debian Linux root用户启用SSH登录
-
要首先配置SSH服务器。
- 安装完成后SSH服务默认开启
- 手动启动:
systemctl start ssh.service
-
切换用户
- 先由普通用户登录Debian服务器,
su root
切换到root用户#安装vim apt-get install vim
- 先由普通用户登录Debian服务器,
-
利用vim打开并修改
/etc/ssh/sshd_config
文件- 将
PermitRootLogin
设置为yes
,PasswordAuthentication
设置为yes
即可,:wq
保存退出即可
- 将
-
重启SSH服务器
/etc/init.d/ssh restart
参考资料:
Docker
Docker安装
- docker[Docker Hub]
- tech-shrimp/docker_installer[Github] - Docker官方安装包,用来解决因国内网络无法安装使用Docker的问题
Docker换源
- 修改
/etc/docker/daemon.json
文件{ "registry-mirrors": [ "https://docker.m.daocloud.io", "https://docker.1panel.live" ] }
- 重启docker
systemctl daemon-reload systemctl restart docker
Docker常用命令
# 从Docker Hub查找镜像
docker search [OPTIONS] TERM
# OPTIONS说明:
# --automated :只列出 automated build类型的镜像;
# --no-trunc :显示完整的镜像描述;
# -f <过滤条件>:列出收藏数不小于指定值的镜像。
#获取镜像
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
#列出镜像
docker image ls
#镜像体积
docker system df
#删除本地镜像
docker image rm [选项] <镜像1> [<镜像2> ...]
#列出容器
docker container ls -a
#启动终止状态的容器
docker container start [container ID or NAMES]
#重新启动正在运行的容器
docker container restart [container ID or NAMES]
#获取容器的输出信息
docker container logs [container ID or NAMES]
#终止容器
docker container stop [container ID or NAMES]
#删除容器
docker container rm [container ID or NAMES]
#进入容器
docker exec -it [container ID or NAMES] bash
参考资料:
- dunwu.github.io/linux-tutorial/docker - Docker 教程
- www.runoob.com/docker/docker-command-manual.html - Docker 命令大全
~ updateDate: 2025-02-03
docker-software
目录
Software
-
面板类
-
网盘类
-
脚本类
-
下载类
-
影音类
-
工具类
-
SpeedTest[GitHub] - 自托管速度测试
-
OpenSpeedTest[GitHub][Docker] - Free & Open-Source HTML5 Network Performance Estimation Tool.
-
dkTurbo[Docker] - Docker 镜像加速器
-
CFnat[GitHub][Docker] - CFnat 是为优化 Cloudflare 数据中心性能而设计的 Docker 镜像,支持多架构,通过实时筛选并连接低延迟 IP,适用于网络加速与高效流量转发场景。
docker-compose
-
bash
# 创建目录 mkdir -p /DATA/cfnat # 进入该目录 cd /DATA/cfnat # 上传docker-compose.yml文件 # TODO: 上传docker-compose.yml文件 # Running docker compose up -d # Update and Restart docker compose pull && docker compose up -d
-
docker-compose.yml
# version: '3' services: cfnat1: container_name: cfnat1 image: cmliu/cfnat:latest environment: - colo=HKG # 筛选数据中心例如 HKG,SJC,LAX.电信/联通 推荐 SJC,LAX.移动/广电 推荐 HKG (多个数据中心用逗号隔开,留空则忽略匹配) - delay=300 # 有效延迟(毫秒),超过此延迟将断开连接 (default 300) - ips=6 # 指定生成IPv4还是IPv6地址 (default "4") - port=443 # 转发的目标端口 (default 443) http_port: 80,8080,8880,2052,2082,2086,2095 https_port: 443,8443,2053,2083,2087,2096 # - tls=true # 是否为 TLS 端口 (default true) # - random=true # 是否随机生成IP,如果为false,则从CIDR中拆分出所有IP (default true) # - ipnum=10 # 提取的有效IP数量 (default 20) # - num=10 # 目标负载 IP 数量 (default 10) - task=33 # 并发请求最大协程数 (default 100) # - code=200 # HTTP/HTTPS 响应状态码 (default 200) # - domain=cloudflaremirrors.com/debian # 响应状态码检查的域名地址 (default "cloudflaremirrors.com/debian") ports: - "1234:1234" # 将主机的 1234 端口映射到容器的 1234 端口 restart: always networks: - net cfnat2: container_name: cfnat2 image: cmliu/cfnat:latest environment: - colo=SJC,LAX # 筛选数据中心例如 HKG,SJC,LAX.电信/联通 推荐 SJC,LAX.移动/广电 推荐 HKG (多个数据中心用逗号隔开,留空则忽略匹配) - delay=300 # 有效延迟(毫秒),超过此延迟将断开连接 (default 300) - ips=6 # 指定生成IPv4还是IPv6地址 (default "4") - port=443 # 转发的目标端口 (default 443) http_port: 80,8080,8880,2052,2082,2086,2095 https_port: 443,8443,2053,2083,2087,2096 # - tls=true # 是否为 TLS 端口 (default true) # - random=true # 是否随机生成IP,如果为false,则从CIDR中拆分出所有IP (default true) # - ipnum=10 # 提取的有效IP数量 (default 20) # - num=10 # 目标负载 IP 数量 (default 10) - task=34 # 并发请求最大协程数 (default 100) # - code=200 # HTTP/HTTPS 响应状态码 (default 200) # - domain=cloudflaremirrors.com/debian # 响应状态码检查的域名地址 (default "cloudflaremirrors.com/debian") ports: - "2234:1234" # 将主机的 2234 端口映射到容器的 1234 端口 restart: always networks: - net cfnat3: container_name: cfnat3 image: cmliu/cfnat:latest environment: - colo=SIN # 筛选数据中心例如 HKG,SJC,LAX.电信/联通 推荐 SJC,LAX.移动/广电 推荐 HKG (多个数据中心用逗号隔开,留空则忽略匹配) - delay=300 # 有效延迟(毫秒),超过此延迟将断开连接 (default 300) - ips=6 # 指定生成IPv4还是IPv6地址 (default "4") - port=443 # 转发的目标端口 (default 443) http_port: 80,8080,8880,2052,2082,2086,2095 https_port: 443,8443,2053,2083,2087,2096 # - tls=true # 是否为 TLS 端口 (default true) # - random=true # 是否随机生成IP,如果为false,则从CIDR中拆分出所有IP (default true) # - ipnum=10 # 提取的有效IP数量 (default 20) # - num=10 # 目标负载 IP 数量 (default 10) - task=33 # 并发请求最大协程数 (default 100) # - code=200 # HTTP/HTTPS 响应状态码 (default 200) # - domain=cloudflaremirrors.com/debian # 响应状态码检查的域名地址 (default "cloudflaremirrors.com/debian") ports: - "3234:1234" # 将主机的 3234 端口映射到容器的 1234 端口 restart: always networks: - net networks: net: enable_ipv6: true driver: bridge driver_opts: com.docker.network.enable_ipv6: "true" ipam: config: - subnet: 172.23.0.0/16 gateway: 172.23.0.1 - subnet: "240e:3b1:f185:c8d0:4000::/66" gateway: 240e:3b1:f185:c8d0:4000::1
docker-compose CasaOS
name: cfnat services: cfnat1: cpu_shares: 90 command: [] container_name: cfnat1 deploy: resources: limits: memory: "3768582144" environment: colo: HKG delay: "300" ips: "6" port: "443" task: "33" hostname: cfnat1 image: cmliu/cfnat:latest labels: icon: https://cdn.jsdelivr.net/gh/cmliu/CFnat-Windows-GUI@refs/heads/master/favicon.ico networks: net: null ports: - mode: ingress target: 1234 published: "1234" protocol: tcp restart: always cfnat2: cpu_shares: 90 command: [] container_name: cfnat2 deploy: resources: limits: memory: "3768582144" environment: colo: SJC,LAX delay: "300" ips: "6" port: "443" task: "34" hostname: cfnat2 image: cmliu/cfnat:latest labels: icon: https://cdn.jsdelivr.net/gh/cmliu/CFnat-Windows-GUI@refs/heads/master/favicon.ico networks: net: null ports: - mode: ingress target: 1234 published: "2234" protocol: tcp restart: always cfnat3: cpu_shares: 90 command: [] container_name: cfnat3 deploy: resources: limits: memory: "3768582144" environment: colo: SIN delay: "300" ips: "6" port: "443" task: "33" hostname: cfnat3 image: cmliu/cfnat:latest labels: icon: https://cdn.jsdelivr.net/gh/cmliu/CFnat-Windows-GUI@refs/heads/master/favicon.ico networks: net: null ports: - mode: ingress target: 1234 published: "3234" protocol: tcp restart: always networks: default: name: cfnat_default net: name: cfnat_net driver: bridge driver_opts: com.docker.network.enable_ipv6: "true" ipam: config: - subnet: 172.23.0.0/16 gateway: 172.23.0.1 - subnet: 240e:3b1:f185:c8d0:4000::/66 gateway: 240e:3b1:f185:c8d0:4000::1 enable_ipv6: true x-casaos: author: self category: self hostname: "" icon: https://cdn.jsdelivr.net/gh/cmliu/CFnat-Windows-GUI@refs/heads/master/favicon.ico index: / is_uncontrolled: false port_map: "" scheme: http title: custom: CFnat
-
-
-
LinuxServer
-
Science
-
Clash[GitHub][Wiki]作者删库:2023-11-03
Clash.Meta[GitHub][Wiki][Docker]
- Clash.Meta Docs[GitHub]
- config.yaml - mihomo (Clash Meta) 懒人配置
WEB UI Dashboard
docker-compose
-
bash
# 创建目录 mkdir -p /DATA/clash # 进入该目录 cd /DATA/clash # 上传docker-compose.yml文件 # TODO: 上传docker-compose.yml文件 # Running docker compose up -d # Update and Restart docker compose pull && docker compose up -d
-
docker-compose.yml
# version: '3' services: # Mihomo Dashboard metacubexd: container_name: metacubexd image: ghcr.io/metacubex/metacubexd restart: always ports: - '80:80' # Mihomo Core meta: container_name: meta image: docker.io/metacubex/mihomo restart: always pid: host ipc: host network_mode: host cap_add: - ALL volumes: - ./DATA/clash:/root/.config/mihomo - /dev/net/tun:/dev/net/tun
docker-compose CasaOS
name: clash services: meta: cap_add: - ALL cpu_shares: 90 command: [] container_name: meta deploy: resources: limits: memory: "3768582144" hostname: meta image: docker.io/metacubex/mihomo:latest ipc: host labels: icon: https://cdn.jsdelivr.net/gh/MetaCubeX/metacubexd@main/public/pwa-192x192.png network_mode: host pid: host restart: always volumes: - type: bind source: /DATA/AppData/clash/DATA/AppData/clash target: /root/.config/mihomo bind: create_host_path: true - type: bind source: /dev/net/tun target: /dev/net/tun bind: create_host_path: true metacubexd: cpu_shares: 90 command: [] container_name: metacubexd deploy: resources: limits: memory: "3768582144" hostname: metacubexd image: ghcr.io/metacubex/metacubexd:latest labels: icon: https://cdn.jsdelivr.net/gh/MetaCubeX/metacubexd@main/public/pwa-192x192.png networks: default: null ports: - mode: ingress target: 80 published: "8888" protocol: tcp restart: always networks: default: name: clash_default x-casaos: author: self category: self hostname: "" icon: https://cdn.jsdelivr.net/gh/MetaCubeX/metacubexd@main/public/pwa-192x192.png index: / is_uncontrolled: false port_map: "8888" scheme: http title: custom: clash
-
v2rayA[GitHub][Docker]
docker-cli
-
Running
# Running docker run -d \ --restart=always \ --privileged \ --network=host \ --name v2raya \ -e V2RAYA_ADDRESS=0.0.0.0:2021 \ -e V2RAYA_LOG_FILE=/tmp/v2raya.log \ -e V2RAYA_V2RAY_BIN=/usr/local/bin/v2ray \ -v /lib/modules:/lib/modules \ -v /etc/resolv.conf:/etc/resolv.conf \ -v /DATA/v2raya:/etc/v2raya \ mzz2017/v2raya
-
Update and Restart
# Update and Restart # 查看容器(找v2raya容器的ID) docker ps -a # 停止容器v2raya运行 docker stop ID # 删除容器v2raya docker rm ID # 拉取最新镜像 docker pull mzz2017/v2raya:latest # 重复Running # TODO: 重复Running
docker-compose
-
bash
# 创建目录 mkdir -p /DATA/v2raya # 进入该目录 cd /DATA/v2raya # 上传docker-compose.yml文件 # TODO: 上传docker-compose.yml文件 # Running docker compose up -d # Update and Restart docker compose pull && docker compose up -d
-
docker-compose.yml
# version: '3' services: v2raya: container_name: v2raya image: docker.io/mzz2017/v2raya restart: always network_mode: host privileged: true cap_add: - ALL environment: - V2RAYA_ADDRESS=0.0.0.0:2017 - V2RAYA_LOG_FILE=/tmp/v2raya.log - V2RAYA_V2RAY_BIN=/usr/local/bin/v2ray volumes: - /lib/modules:/lib/modules - /etc/resolv.conf:/etc/resolv.conf - /DATA/v2raya:/etc/v2raya
-
-
Armbian
Armbian是轻量级的Debian系统,为ARM开发板专门发行并重新编译的Debian系统(Ubuntu派生自Debian)。
X96MaxPlus搭建Armbian
准备工作
-
确认
X96Max+
版本为X96MaxPlusQ2
- SoC:S905X3 + 4GB 内存 + 64GB 闪存+ 1000M 网口 + 2.4G/5G 双频 WiFi + 蓝牙
-
ophub/amlogic-s9xxx-armbian[Github] 根据型号下载系统镜像
- Armbian_24.8.0_amlogic_s905x3_bullseye_6.6.36_server_2024.07.01.img.gz [Releases/Armbian_bullseye_save_2024.07]
-
balenaEtcher - Flash OS images to SD cards & USB drives
刷入镜像至U盘
-
打开balenaEtcher
-
Flash from file
->Armbian_24.8.0_amlogic_s905x3_bullseye_6.6.36_server_2024.07.01.img.gz
->Select Target
-
选择U盘(请备份好u盘中的重要文件)
-
Flash
-> 刷完之后 弹出u盘
boot dtb 配置
-
插入U盘 -> boot驱动器并打开
-
找到并修改
uEnv.txt
文件的FDT
参数FDT
参数来源于BOOT/dtb/amlogic
下以.dtb
为扩展名的文件- 版本为
X96MaxPlusQ2
对应为meson-sm1-x96-max-plus-q2.dtb
FDT=meson-sm1-x96-max-plus-q2.dtb
盒子 U盘启动
-
断电,插入U盘
(记得插入USB3.0口,否则可能不识别)
-
插进AV口按下里头的复位键,不松开。(可用牙签或者较小的螺丝刀)
-
上电,看到X96的封面就可以松手
控制LED显示屏
-
登录到 Armbian 系统→输入命令:
armbian-openvfd
备份/恢复 EMMC 原始系统
-
请从 TF/SD/USB → 启动 Armbian 系统 输入命令:
armbian-ddbr
-
根据提示输入
b
备份系统r
恢复系统
刷入EMMC
-
ssh或终端中运行以下命令(以root的身份)
armbian-install
-
据盒子版本来填入ID,例如
X96MaxPlusQ2
版本就填入508
详情 -> Armbian_24.8.0_amlogic_s905x3_bullseye_6.6.36_server_2024.07.01.img.g
root@armbian:~# armbian-install [ STEPS ] Installing Armbian to internal eMMC... [ STEPS ] Checking dependencies... [ INFO ] Dependency check completed. Proceeding installation... [ STEPS ] Initializing the environment... [ INFO ] Use mainline u-boot: [ no ] [ INFO ] Use ampart tool: [ yes ] [ INFO ] Show all devices: [ no ] [ INFO ] Internal eMMC : [ /dev/mmcblk2 ] [ STEPS ] Start selecting device... ----------------------------------------------------------------------------------------------------- ID SOC MODEL DTB ----------------------------------------------------------------------------------------------------- 501 s905x3 X96-Max+_100Mb meson-sm1-x96-max-plus-100m.dtb 502 s905x3 X96-Max+_1GB meson-sm1-x96-max-plus.dtb 503 s905x3 X96-Max+(OverClock) meson-sm1-x96-max-plus-oc.dtb 504 s905x3 X96-Max+(IP1001M) meson-sm1-x96-max-plus-ip1001m.dtb 505 s905x3 X96-Max+_A100 meson-sm1-x96-max-plus-a100.dtb 506 s905x3 X96-Max+_2101 meson-sm1-x96-max-plus-2101.dtb 507 s905x3 X96-Max+Q1 meson-sm1-x96-max-plus-q1.dtb 508 s905x3 X96-Max+Q2,X96-Air-Q1000 meson-sm1-x96-max-plus-q2.dtb 509 s905x3 X96-Air-1Gb meson-sm1-x96-air-gbit.dtb 510 s905x3 X96-Air,X96-Max+100W,100Mb meson-sm1-x96-air.dtb ----------------------------------------------------------------------------------------------------- 511 s905x3 Tencent-Aurora-3Pro meson-sm1-skyworth-lb2004-a4091.dtb 512 s905x3 HK1-Box,Vontar-X3 meson-sm1-hk1box-vontar-x3.dtb 513 s905x3 HK1-Box(OverClock) meson-sm1-hk1box-vontar-x3-oc.dtb 514 s905x3 H96-Max-X3,Infinity-B32 meson-sm1-h96-max-x3.dtb 515 s905x3 H96-Max-X3(OverClock),B32 meson-sm1-h96-max-x3-oc.dtb 516 s905x3 Ugoos-X3 meson-sm1-ugoos-x3.dtb 517 s905x3 Ugoos-X3(OverClock) meson-sm1-ugoos-x3-oc.dtb 518 s905x3 TX3-1Gb meson-sm1-tx3-qz.dtb 519 s905x3 TX3-1Gb(OverClock) meson-sm1-tx3-qz-oc.dtb 520 s905x3 TX3-100Mb meson-sm1-tx3-bz.dtb ----------------------------------------------------------------------------------------------------- 521 s905x3 TX3-100Mb(OverClock) meson-sm1-tx3-bz-oc.dtb 522 s905x3 A95XF3-Air-1Gb meson-sm1-a95xf3-air-gbit.dtb 523 s905x3 A95XF3-Air-100Mb meson-sm1-a95xf3-air.dtb 524 s905x3 X88-Pro-X3,X99-Max+,Transpeed-X3+ meson-sm1-x88-pro-x3.dtb 525 s905x3 Whale meson-sm1-x96-max-plus.dtb 0 Other Customize Enter-custom-dtb-name ----------------------------------------------------------------------------------------------------- [ OPTIONS ] Please Input ID: 508
-
选择分区格式 -> ext4 (即输入
1
) -
耐心等待拷贝文件进入EMMC ,速度由u盘/sd卡内系统的大小以及u盘/sd卡读写的速度影响
-
写入EMMC结束 -> 先运行
poweroff
拔下u盘(sd卡)再拔插一下电源
参考资料:
- [已更新]从零开始给X96 Max+刷上Armbian系统,完善千兆网卡以及刷入EMMC!
- 外贸盒子x96max+ 搭建Armbian系统 (附国内可用的img镜像下载地址)
- ophub/amlogic-s9xxx-armbian
H3C NX30 Pro 折腾记录
硬件配置
处理器 | 射频芯片 | 交换芯片 | 存储芯片 |
---|---|---|---|
Filogic 820 MT7981B 12nm A53 2x1.3GHz HWNAT 2.4G&5G 基带 | MT7976CN 3天线 160MHz 2402Mbps 2天线 40MHz 576Mbps | MT7931AE | RAM 256MB ROM 128MB |
Telnet 连接
- IP address:
路由地址
- Port:
99
- Username:
H3C
- Password:
路由登录密码
开启 SSH
# 下载 dropbear.ipk
curl -o /tmp/dropbear.ipk https://downloads.openwrt.org/releases/packages-19.07/aarch64_cortex-a53/base/dropbear_2019.78-2_aarch64_cortex-a53.ipk
# 安装 dropbear.ipk
opkg install /tmp/dropbear.ipk
# 启动
/etc/init.d/dropbear enable
/etc/init.d/dropbear start
备份系统
-
WinSCP,文件协议选择 SCP
- IP address:
路由地址
- Port:
22
- Username:
H3C
- Password:
路由登录密码
- IP address:
-
在终端里执行这命令,将系统备份到
tmp
路径下backup.img
文件,备份的过程比较慢,需要 1-2 分钟。文件生成后请自行备份
。dd if=/dev/mtd5 of=/tmp/backup.img
刷写 uboot
-
uboot.bin
文件上传自路由器tmp
路径下 -
写入 uboot
mtd write /tmp/uboot.bin FIP
进入 uboot (FIRMWARE UPDATE)
- 路由器断电后,先按住背后
Reset
恢复按钮不放,再插电,等待10s
左右松开背后Reset
- PC IP分配 -> 手动分配
- IP地址:
192.168.1.2
- 子网掩码:
255.255.255.0
- 网关:
192.168.1.1
- DNS:
192.168.1.1
- IP地址:
- 浏览器打开
192.168.1.1
就能打开 uboot 后台。
H3C NX30 Pro 禁止更新
PS: 刷回官方固件后经常一觉醒来路由器
自动更新
,导致路由器直接不能用,又要进uboot刷回去,很烦人
# 停止更新
/etc/init.d/onlineupdate stop
/etc/init.d/onlineupdate disable
# 检查是否还在运行
ps | grep onlineupdate
参考资料:
黑炮事件.The Black Cannon Inciden.1985
黄建新导演的处女,1985年上映,时至今日仍具有次世意义的电影《黑炮事件》。
该片用黑色幽默的表现手法,讲述荒诞不禁,却有无比真实的故事,用一个象棋子冲开重重迷杖,展现80年代中国社会的乱象。
这个让人啼笑皆非,心惊胆战的故事要从1983年的雨夜讲起。
一个男人坐车赶到邮电局,行色匆匆,险些与俩大高个撞上。
他似乎有些魂不守舍,进门时又踢到地上的雨伞,赶忙道歉,从柜台买了张电报纸后,他急急忙忙写下今晚要发的电报。
柜台里的姑娘在电报稿上用圆珠笔点了一遍,惊讶的抬起头,一种很特别的眼光审视了男人一番,此时惊雷在耳边炸醒,电报简洁明了却匪夷所思,内容是:"黑炮丢失301找赵"
见此人獐头鼠目似乎不是好人,她出于谨慎一通电话打给110,而警方接到电话后高度重视,立刻成立小组,开展专案调查。
"根据目前调查的情况看 还没发现重大问题"
接收电报的人是钱如泉,江苏苏州文物收购门市部的干部。
发送电报的人是赵书信,1956年毕业于清华大学机械工程系,县委机械总厂的工程师,49岁,年轻时信奉天主教,现务党派。
公安局对两人的信息调查一番并未发现问题,于是暂时搁置,让机械总场的领导们在不激动赵书信的情况下开展秘密调查。
大家原本觉得他呆头呆脑,不像干坏事的人,也没打算真查。可就是这个节骨眼,德国专家汉斯的再度造访,引起了警觉。
去年十月,矿物局开会决定从德国引进一套最新的WD机器,并将这套机器的安装、调试、运转全部交给机械总厂来负责。
去年年底,德国专家汉斯曾来洽谈合同,赵书信负责翻译工作,两人在相处中递结了深厚的友谊,互相视对方为自己的知己。
但签订合同前,两人曾在饭馆大吵一架,拿着一张纸条争执。他们争吵的内容不得而知,却足以让厂党委书记周玉珍警觉。
而合同签好后,回国前,汉斯送给赵书记一双鞋,并提出想看古董,周玉珍不由的产生联想。
两人是背地里达成了某种交易,或许赵书信与在文物收购部门的钱如泉合作倒卖文物给汉斯,否则怎会这么巧,在汉斯再度来中负责安装WD前发送电报。
周玉珍越想越严重,瞒着赵书信,光厂党委会就开了三次,重点讨论这次汉斯来访能不能接着让赵书信负责翻译工作。
"大家看这事儿该怎么办?"
副常长李任重原先也是工程师, 与赵书信一起工作了20多年。
了解他的为人,老实巴交一心搞科研,工作也是勤勤恳恳。
”公安局这不是也没查出什么吗?仅凭一个电报说明不了什么问题?“
厂党委书记周玉珍轻轻的叹了口气,绕了个圈子阴阳怪气地说,南方某个省的老红军竟然想把自己的女儿给香港富商做小老婆。
言外之意是不能用过去的历史来证明此人现在不会有问题,而且这事很可能涉及到古董买卖,不谨慎不行,出了事谁负责。
一谈到负责,全场鸦雀无声,毕竟一旦出事可是掉脑袋的事,厂长抽了支烟,慢吞吞的说,还是调查清楚,再让老赵翻译吧。
在此之前,可以让旅游公司会德语的导游小冯给汉斯当翻译,副厂长李任重见大局一定,却还是想为赵书信争取点信任。
觉得可以把人叫来当面聊聊,问清楚所谓的黑炮究竟是什么,可书记周玉珍认为这样是在打草惊蛇,也违背了知识分子政策。
"谁也没给他下结论,调查是为了把事情弄清楚,这是真正的信任。"
"对赵工信任,我很同意,让他回避下个专家的接触,这是对他爱护。"
厂长起身和稀泥,你安排赵书信先去维修厂工作,就当放长假。
而小冯负责汉斯的翻译工作,直到WD机器安装圆满完成。
会议结束后第二天,李任重便带着小冯去机场,将汉斯接到机械总场。
而此时赵书信还没接到调任的文件,以为还是自己担任翻译,于是晚上特意去宾馆想跟汉斯聊聊对接之后安装的工作。
但是厂保卫处的陈处长守在门口,说外国专家很累,已经睡了,而且赵书信已经被暂时调到了维修厂,明天就得收拾东西出发。
即使内心非常不解,但组织的安排要服从,赵书信选择妥协。
当天晚上面收拾好东西,乘坐厂里安排的车前往维修厂工作。
然而去了以后他傻眼了,因为这里没安排任务,他没有活儿干。
"哎,赵工啊,今儿没你活儿干。"
"那我来干什么?"
"你呀,就喝喝茶,看看报纸吧。"
小冯毕竟只是个旅游翻译,很多专业术语经常出现翻译错误,比如汉斯让工人把螺丝拧松点,等安装好后,再往紧拧点。
结果小冯翻译成往死里拧,气的他当场冲上去,亲自示范。
汉斯希望身为工程师还懂德语的赵书信能再次当自己的翻译,而小冯何常想接手这个烂摊子。
还不是组织上强行安排任务,自己本来就是个旅游翻译,为什么不直接让赵书信去翻译呢。
他去找领导诉苦,可周玉珍觉得这是个小问题,努力克服就行。
"我说专业语难翻吗? 厂里给买部专业字典,大不了几十块。嗨,你呀,买得起马,配不起鞍。"
这就是懂技术的不当领导,当领导的不懂技术,必然出乱子。
到了安装阶段,小冯当翻译越来越吃力,汉斯的火气也暴露。
只要小冯稍不如他意,他就会火冒三丈,叫嚷着让赵书信来。
一次汉斯虽带着两个工人仰卧在机器下面 让小冯拿"kugei"
来
这个词小冯刚学过,是子弹的意思,奇怪这时候要颗子弹干啥。
但又怕问多了汉斯发火,也便没多想,让旁边的工人去找子弹。
工地上当然没子弹,工人便跑到武装部,说外国专家需要子弹,管武器弹药的人说得有领导批的条子,他又跑去找厂长开证明。
可汉斯要子弹做什么呢?
"kugei"
一词在德文里指的其实是轴承,他觉得现在这种情况简直荒诞,翻译再出问题,会影响安装的。
同样身为工程师的李任重怎会不知,只能再去找厂长要赵书信,然而厂长依旧和稀泥,让他找党委书记周玉珍一起协商解决。
"你怎么把问题看得那么简单呢?"
"可你也把问题看得太严重了。"
"好,还是慎重点好,我先走了,你好好想想吧。啊!"
周玉珍这话说了跟没说一样,总之我不同意,你也不能做主。
李任重气的肺都要炸了,心里骂娘嘴上妥协,开始暗中调查。
组织之所以怀疑赵书信,是因为汉斯送鞋以及两人在饭店争吵,既然如此,只要搞明白为什么送鞋以及争吵的原因不就好了吗。
他找到当时一同负责接待的小霞,让他大致讲一下当时的情况。
这才知道赵书信和汉斯之所以争吵是因为德方给的数据有误。
但汉斯觉得自己国家的技术没问题,态度傲慢,不愿承认错误。
不过当数据算出来确实有问题,他也很谦逊,主动找赵工认错,并且把自己随身携带了一双鞋送给赵书信,根本就不是什么交易。
李任重松了口气,又觉得奇怪,他们说的德语小霞咋能听懂呢。
"你懂德语?"
"自学了一点"
"那你怎么不早说呀?"
"说了有什么用?连赵工作都得不到信任?我自学的又能怎么样?"
李任重想反驳,却一时语塞,是呀,小霞说的又有什么错呢?
而当汉斯得知赵书信从维修厂回来,悄悄溜出来找他聊天。
赵书信原本的研究起谱,赶紧起身泡茶,欢迎这位老友到来。
他也不清楚组织在想啥,也不想多说,毕竟自己只是个小人物,在机械总场已经工作很长时间。
赵书信很清楚这里的陈规陋习,很多东西不是他这种知识分子能决定的,大事还得领导决定。
比如德国明明有更好的机器,赵书信也跟领导反馈过自己的建议。
但没人听他的,局里还是选择WD, 因为他们根本就不懂技术,赵书信刚进了汉斯一杯,没想到副厂长李任重竟然会登门拜访。
正好做起了喝两杯,三人推杯换盏,将一番愁绪或者酒下肚。
李任重注意到棋盘上有个黑色圆盒顶棋子,顿时来了兴致。
"哎,赵工,这顶什么?"
"黑炮"
"黑炮"
"上次出差的时候丢在旅馆里了"
"结果就发了个电报"
"是的,给301房间的棋友发的,请他帮我找一下那个黑炮"
被公安机关和厂党委极为看重的黑炮事件竟然只是一颗象棋。
李任重觉得又好气又好笑,决定明天一早便提议召开厂党委会,在会上他将黑炮事件的来龙去脉说了一遍,还赵书信一个清白。
而且WD的安装越到后期越重要,不容有差池,否则损失严重。
一旦小冯再翻译错误,谁来负责?所以必须赶紧让赵书信工作。
其他同志纷纷表态,觉得不该小题大做,黑炮事件搞清楚就好。
赵书信就是典型的书呆子而已,能有什么坏心,不应该排斥他,甚至有人大胆提出党委不懂技术,WD的安装的事情应该少管。
这话厂党委书记周玉珍就听不顺耳,立刻牙尖嘴力的开始反驳:
"一个象棋子值多少钱?赵书信这个在经济上计较的人为什么能换一块多钱的电报费?去寻找一颗不值钱的棋子?"
李任重气的站起来反驳,但厂长又出来和稀泥,说了一通废话。
意思是宁可信其有不可信其无,小心为好,政治问题不容小觑,过几天WD的安装便进入尾声,那个所谓的黑炮也会邮回来。
安全起见,还是先让小冯接着翻译,至于赵书信依旧是隐瞒政策,再过几年李任重要升厂长,这期间不能出事,否则会影响仕途。
这句话无疑是在敲山震虎,让本来还想说点什么呢的他变成哑巴,就跟之前的会一样,结果依旧是招书信,不能参与翻译工作。
而几天后WD的安装工作结束,那颗"黑炮"也邮回了机械总场。
周玉珍提前将之截胡拿到会议室,觉得这里面一定是个小古董。
没想到里面只是个黑炮象棋,她脑子里的阴谋论就像是一场笑话,而更严重的还是WD。
安装运转半个月后,就像害了疾病发抖,而且越抖越厉害,几乎要立刻散架摊下来,只能停机成为废铁。
局领导立刻下令检查原因,这个任务当然落在机械总场的头上。
他们将合同、安装记录、矿场各班的开机记录汇总起来大检查。
摆脱嫌疑的赵书信作为总工程师,开始一字一句的检查,找问题。
领导们都焦急的在会议室里夺圈子,抽烟喝茶,心急如焚。
"是不是德方的责任?"
"不是,看来是翻译上出现了问题。"
会议室一下子寂静无声,领导干部们都在寻思接下来该怎么办。
损失几十万的原因究竟在哪里这笔账应该挂在谁的名下,赵书信忐忑不停的缩着脑袋坐着,仿佛他是罪魁祸首似的。
但谁才是或跟别人不清楚,伟大的周玉珍同志怎能不清楚?
可她心里还是有个疑问,为什么要花一块钱找一个破棋子?
赵书信看着领导突然撩开重要的WD来追问他打的电报,似乎也明白了他那份电报和WD的损坏的责任似乎有什么联系。
"买一副新象棋也要不了多少钱啊"
"是啊,以后我再也不下棋了"
这是黄建星导演1985年上映的处女座《黑炮事件》,题材之大胆,讽刺之犀利,即使放到现在,也让人遭受惊叹,而这部电影在当年不光上映,还拿下了第六届中国电影金鸡奖。
40年前可以拍的内容现在却不能拍现实,同样是场黑色幽默。
在80年代中期以张艺谋、陈凯歌等为代表的第五代导演,携带着有关黄土地的寻根民族乡土主题横空出世。
黄健兴和《黑炮事件》却另辟蹊径,聚焦于工业区和城市,在黑色幽默外衣下笼罩的是对传统文化的反思和批判,以及对现实社会知识分子处境的心理尴尬、荒诞全面展示。
作为中国知识分子的一个典型缩影,赵书信可爱可怜又可悲,各种反差构成了他作为知识分子暧昧和浮动的能指意义。
"赵书信"成为80年代知识分子尴尬无奈境遇的一个符号。
在历次政治运动中,知识分子群体总是波及最大的重灾区。
特别是十年动乱时期,他们遭受了极大的禁锢摧残扭曲。
即便在波乱反正的新时期,极"左"思想的余毒仍根深蒂固。
在现实社会体制的磨练下,他们逐渐依来顺受,甚至麻木。
赵书信的性格悲剧不仅属于个人、时代,还属于民族和历史。
而李任重这一人物如同一把尖刀,刨开了当时的社会问题。
他作为懂技术的工程师担任副厂长,成为领导班子里的一员。
每天却要疲于应付流于形式的文山会海,权力则被屡屡钳制。
厂党委书记周玉珍顽固不化,厂长则和稀泥,力求无功无过。
李任重想半件实事那么难,WD安装的问题又得跟着背锅。
这是当时也是现在的普遍问题,领导不懂技术,胡乱做决定,懂技术的当不了领导,即使当了,也会受到排挤没有实权。
"不用专家、瞎指挥、内耗高、低效率"
依然存在于各个行业。
不过黄建新导演采用了黑色幽默的方式,加深了这种荒诞性,一堆正儿八经的领导干部严肃的对待一件无足轻重的事情。
结果造成WD项目损失达几十万,这事越荒诞,便越讽刺。
信任重视知识分子才是发展社会生产力,实现现代化之所依。
但我觉得这还不是最可怕的,最可怕的是思维和行为的固化。
一个像棋子确实不值钱,但丢了就找回来,又有什么奇怪的呢?
究竟是知识分子太天真,还是那群搞政治的人太不天真呢。
当年的黄建新导演找不到答案,现在的黄建新不想找答案。
当年的知识分子看不懂,现在的知识分子看懂了却不敢说。
以后再也不下棋不是解决方式,却也只能成为解决方式好了。
我们都无法成为大人.ボクたちはみんな大人になれなかった.2021
当一个日本女孩莫名问你是否认出她的样子,你是该坦诚不止,还是谎称记得她的名字。
"你认得我的长相吗?"
"我已经出了六张DVD"
尴尬的伊藤没有多说一字,他只是带着女孩一同离开,离开那个看似热闹实质人均冷漠的位置。
我们每天只有二十四小时,却有太多未完成的事,以至于我们总是尽力用最快捷的方式处理最复杂的事。
就如我们的情感,过去爱情如盛宴,你总是舍不得浪费,情愿花时间细嚼慢咽。
如今爱情如快餐,你只关注食材是否新鲜,卖相是否鲜艳,而后便是一通狼吞虎咽落的一身狼藉,却只为省下那一分时间。
就如伊藤和女孩,今夜之前仍是陌生,今夜之后却成情人。
远处东京铁塔亮着灯,那一抹霓虹却吸引了亲吻中的两人,她拿出相机想要拍下,但就在她按下快门的那瞬间,铁塔的灯熄灭了,她也难过了。
她问伊藤,你小时候有想过变成现在的样子吗?
伊藤沉默了,他不知道该如何回答这个莫名其妙的问题。
如我们不知道为什么千百次期待成为的人,最后却变得无比陌生,陌生到当我们遇到了期待成为的他们时,我们却无法激起自己心里曾有过同样的人。
一开始我们都在追逐一盏灯,而后变成期待有人为自己留一盏灯,到最后我们再也找不到那盏灯,也找不到心里那扇门。
午夜十分没有入睡的伊藤,就如习惯晚睡的我们,尽管深知熬夜伤神,但孤独而又空虚的我们,却更恐惧双眼闭合间便是弹指一生。
此时伊藤的手机响起那意图不明的铃声,爱理不理的他却形象的表现出我们对铃声的又爱又恨。爱是因为铃声告诉我们被需要,恨是因为消息显示的从来只是毫无感情瓜葛的寻找。
点开消息,那是来自于前任的好友申请,当过去的人蹦出回忆,原因或许跟同学聚会相差无几,怀念是借口,展现是缘由,纵使声情并茂,却难掩目的与需求。
伊藤一夜夜翻看着他的日子,就如一夜夜的诵读着他的过去,曾经的他总是标新立异,曾经的他总是到处猎奇,磨平棱角的成熟被她睥睨,循序渐进的婚姻沦为她眼里平庸的证据。
而今,曾经愤世嫉俗的他,却同样遭遇现实的洗涤,洗掉了尖刺,也洗掉了歧义。
就如我们曾经一再希望成为特别的自己,而今却偏偏沦为人群中同样普通的生存工具与旁人无异。
或许雨天总会衬托别离,当伊藤回到家,女友却早早的等在这里。
"你曾打算跟我结婚吗?"
他没有说出一字一句,脸上却明显流露出一丝厌气。
"一切都是谎言吧?"
"把我的时间还给我"
情人要伊藤归还时间的损失,但又有谁归还伊藤爱的流失。
或许我们的心曾满载,一段感情是一盆盆栽,一开始我们用心灌溉,而后盆栽枯萎爱却渐衰,盆栽不断更迭而我们却早已用尽最后一点爱。
情人总怪我们糟蹋盆栽,但谁又明白我们内心干涸的无奈。
2011的日本布满阴霾,有人选择分开却有更多人携手未来,不是越难越爱,而是你无法知道,明天和意外到底谁先来。
藤本应在这天向丈人承诺与女友的将来,但灾难后的忙碌却让他不得不提前离开,追出门外的女友问他。
"你结婚后也会这样吗?"
"不,我现在真的很忙,是不可能马上结婚的"
"你都这样拖延下"
"抱歉抱歉,我知道了我知道了,我们明天再三个人一起吃午餐,我会去预约其他餐厅"
"明天我一定会好好表现"
"好..好.."
或许两人都没有想明白,如果爱,他会恐惧你的漫长等待;如果爱,他不会吝啬承诺让你的家人释怀。
忙碌是缘由,但忙碌不应成为拖延的借口。
如果当时两人明智分开,或许谁都无需经历长久难耐。
女友的离开没有让伊藤产生一丝不快。
此刻的他却怀念起那个给予他明信片的女孩。
与女孩的相遇源自于一份登有交友信息的报纸 ,伊奴卡拉是她使用的名字,就如我们常用歌名作为我们的代名词,我们总期待能通过歌名找到世上另一个自己的样子 ,也期待有人能读懂歌名背后的意思。
伊藤主动写信给了这位特别的女子,而女子的回信,开始了这段关于青春的故事。
或许年少时的我们依然带着不谙世事的童稚,缺乏金钱没有未知,唯有全心的爱意,肆意挥霍的用时 ,所以当时的我们更易遇到灵魂契合的爱人,也更容易看到爱情应有的样子 。
书信往来的两人 ,没有成年人的务实,就如那个年纪下的我们,天马行空的说着 ,期待又极致无聊的讲述周遭。
距离总如此,两人礼貌相处便只能站在需要礼貌维持的位置,两人肆无忌惮才能莽撞撕开隔在彼此面前的那层纸 ,越走越近的两人相约走进现实。
一人一个记认的袋子,而后便是一场四目相对关于羞涩与陌生的对峙。
女孩的名字叫香织,与她的笔名伊奴卡拉一样,香织的心里总是装着青春的天马行空和故作深邃的说辞 。
她问伊藤:
"你的人生过的如何?"
"高中时,我每天都会在月历上画一个叉,记录自己今天也没有犯罪,很奇怪吧?"
"我觉的很有趣"
成熟让我们失去了表露幼稚的心思,偏偏我们又最期待有人欣赏自己犯傻时的样子 ,见面后的两人靠着一根电话线维持。
过去我们没有微信没有手机,一件乐事需要存进心里,现在到处无线,人均手提,分享只在意兴之际。
时代改变了情感传递的速率,却偏偏快进了一段感情变化的时间 ,又拉远两人之间的距离 。
电话线中的两人相约酒店相见,那个满布星光的房间,成了两人水乳交融相互慰藉的据点,他们在房里互诉衷肠度过漫长岁月 ,这家角落的酒店记载着这对情侣九年的便迁。
香织总是向往未知的世界 。
她会在某夜,走在街头临时起看看印度的昼夜 ,而后便会消失于伊藤的身边,只在长久之后寄回一张明信片 。
她会在某天清晨,租上小车拉上伊藤让他把工作放到一边,只为了离开城市感受一次有你有我的瞬间 。
她告诉伊藤:
"宫泽贤治...直到死前都没有到远方过,他明明有大半的人生都在东北的乡下农村度过,却在银河旅行过,不觉得很疯狂吗?"
"重点不是去哪里,而是跟谁去"
或许旅途中的美景从来不是我们的目的 ,我们远行的原因或者只是希望身边那个人是你,年岁带走了两人青春的气息 ,在他们脸上逐渐刻画岁月的痕迹 。
伊藤和香织走了一段长久的距离,自然希望与她转一个弯继续走下去 ,只是当伊藤说出心中所想,香织却告诉他。
"我们要不要一起住?"
"什么?"
"我也会跟你的父母打声招呼"
"这个嘛..."
"总觉得..."
"真的很普通"
他们在合适的时间相遇对方 ,最后却在适合转折的时间失散。
第二天香织与他用着最普通的方式道别,却再也没有像过往分别一样如常再见。
"下次会带CD过来"
离开的初恋总如离开的凶手 ,他在我们心里插进一把刀之后却再也没有拔出便逃走 。
直到经年之后,下一个她告诉我们身上仍有疼痛的源头 ,但习惯与尖刀共处的我们却不再介意那个流血的伤口。
女孩告诉一个小时前吻在一起的伊藤:
"这里...是我的工作房"
"什么工作"
"我跟客人...在这里发生关系"
2000年的某个晚上他们吻在了一起,2000年的某个白天他们失散于人海里 。
没有千丝万缕的情感问题 ,只是广阔浩瀚的人生让彼此生活分崩离析。
他们相遇在那家热闹非凡却没有生气的酒吧里。
伊藤是过客,小苏是侍应。就如路人与明星的相遇,陌生才最符合剧情,一起便是奇遇 。
若不是伊藤的灰埋散落一地,若不是小苏的眼里一片死寂 ,或许谁都不会停在各自心里。
两人的相识是在那不满失落烟蒂的空地。
小苏问出一句:
"我很擅长找到绝望的人"
就如女生更易看出哪个女生表里如一,绝望的人更易发现别人绝望的踪迹 。
从那天起,两人便徘徊在各自生活里,直到那个送小苏回家的夜里。
放慢脚步的两人玩起了跳砖游戏,你踩着空格,我追随着脚印,明明童真却暧昧不已,而后重叠的两人相拥一起也吻在一起 。
来到小苏家的两人本应有着理所当然的后续,但此时的电话却带来一段插曲 ,小苏告诉伊藤。
"这里...是我的工作房"
"什么工作"
"我跟客人...在这里发生关系"
"等工作结束后...我再打给你"
就如我们总用"再联系"
结束这次相遇,而后消失在人海里 。
当小苏说出那一句 ,她便不敢期待两人能再聚。
直到完事的她看到楼下静待的伊藤,惊喜的她便冲出门外与伊藤抱在一起 ,惊的是有人把自己的话放在心里 ,喜的是自己没被嫌弃。
"我什么都没有,就算每天都是这样,好像也不讨厌"
或许当你一无所有,也并没有什么值得被厌弃。
直到某个早晨,新闻传出小苏老板被捕的消息 ,担心小苏的伊藤不断联系。
但就如那沉默不语的手机 ,小苏的身影连同那暧昧的房间一同消失无声无息 。
伊藤没有言语没有情绪,或许就跟众多普通的成年人一样 ,不悲不喜才更符合普通的这个群体 ,他慢慢明白香织那句普通的意义 ,或许成长总会让你在旅途中丢失一些属于自己的怪异 。
2020的东京街头寂静无声街上空无一人,疫情改变了每个人的人生 ,也让孤独的人更孤独 ,陌生的人更陌生 。
走在大街的伊藤遇到了曾经遗落的故人,看着如今落魄的他,伊藤不禁想问 。
"你为什么把酒吧关了?"
"我受不了跟交情不好的人装作像朋友般聊天,客人想回去就回去,但我无处可逃"
我们每个人都总入小丑一般,明明妆后一脸泪容,妆前却从来只能挂着一成不变的笑容 ,僵硬疲惫你亦只能苦笑一通。
有人坚持我们夸他成熟,有人不屑我们却笑他幼稚。
浩瀚银河,每颗都是闪耀的明星 。
慢慢人海,却不纵容异样的光明。
两人一路酒醉一路同行 ,伊藤话语热落却难掩成人冰冷的内心 ,故人忍不住骂出一句。
"你真的变成了龌龊的大人呢"
曾经故人总说世上的人,百分之70是垃圾 ,百分之30是人渣 ,但伊藤总认为世上的好人至少还有百分之一,故人却告诉他 。
"那些人并不是好人,只是一群不谙世事的人"
善人做恶,恶人行善, 从不稀奇。这世上从没有绝对的好人也没有绝对的正义 ,你相信绝对的好坏是因为现实仍未褪去你不谙世事的外衣。
走到路口,故人告诉伊藤。
"真希望我没有遇到你"
"我...倒是很庆幸能遇到你"
而后两人各自分别,一个坐进车里 ,一个独步街头 。
就如与香织分别的那一天 ,同样没说再见 ,或许也无法再见。
计程车经过一个个似曾相识的街头 ,如倒带般将回忆回放于心头 ,难以平静的伊藤下了车。
走到那与香织分别的路口 ,一走到那如回忆录般的酒店门口 。
"在这里的时候就感受不到时间的流逝"
"像只有这里的时间停下来了"
"明明大家都慢慢长大,就只有我们保持不变"
那一句句熟悉的话 ,那一个个遗落的人,仿似不断的碰撞交织陈述着伊藤的半生 。
"你结婚后也会是这样吗?"
"把我的时间还给我"
"恭喜你出狱了"
"我什么都没有"
"就算每天都是这样,好像也不讨厌"
"快过来"
"你的身体...也充满看尚未成佛的词语"
"我在高兴时,会觉得很难过"
"你就永远窝在这里吧"
"我们要结婚了"
"想要变成现在的自己吗?"
为什么电影叫《我们都无法成为大人》 ?
因为纵然我们努力向着成熟与普通紧靠,
纵然年岁在我们脸上留下一道又一道疤痕 ,
我们却始终无法并且心中尚存的一丝稚嫩 ,
我们仍会幻想重于某个时刻某个地点某个人,
我们仍会相信谁的清纯谁的美好谁的童真会伴其一生 ,
我们都在往前奔跑 ,
但我们都想过在过去的某时某刻停靠,
因为那里曾遗落一颗糖 ,
我们一直念念不忘 。
"WAVE袋子"
"WAVE袋子"
"你是伊努卡拉小姐?"
"听到你这么叫我,觉得有点害羞"
"真的...很普通"
Publish a Website with mdBook and GitHub Pages
mdbook init
$ mkdir mdbook-site
$ cd mdbook-site
$ mdbook init
Do you want a .gitignore to be created? (y/n)
y
What title would you like to give the book?
my-book
2022-05-21 17:50:25 [INFO] (mdbook::book::init): Creating a new book with stub content
All done, no errors...
$ tree -a
.
├── .gitignore
├── book
├── book.toml
└── src
├── SUMMARY.md
└── chapter_1.md
Add GitHub Workflow
$ mkdir .github
$ cd .github
$ mkdir workflows
$ cd workflows
$ vim PublishMySite.yml
name: PublishMySite
# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the main branch
push:
branches:
- main
pull_request:
branches:
- main
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
# Build markdown files to a static site.
- name: Setup mdBook
uses: peaceiris/actions-mdbook@v1
with:
mdbook-version: "latest"
- run: mdbook build . --dest-dir ./book # --dest-dir is relative to <dir>
# Publish the static site to gh-pages branch.
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN}}
publish_dir: ./book
publish_branch: gh-pages
$ tree -a
.
├── .github
│ └── workflows
│ └── PublishMySite.yml
├── .gitignore
├── book.toml
└── src
├── SUMMARY.md
└── chapter_1.md
Git and GitHub
git init
$ git init
$ git add .
$ git commit -m "init"
GitHub - New Repository
GitHub > New Repository
GitHub > Repository > Settings > Actions > General >
- Actions permissions: Allow all actions and reusable workflows
- Workflow permissions: Read and write permissions
- Click Save
$ git remote add origin git@github.com:Yang-Xijie/mdbook-site.git # change to your github repo
$ git branch -M main
$ git push -u origin main
GitHub > Repository > Settings > Pages > Source > gh-pages > Click Save