1. 生成新密钥,并上传公钥到服务器

    # 生成新密钥
    ssh-keygen -t rsa -m PEM -b 4096 -C "邮箱"
    # 提示可以输入密码,今后认证时服务器和本地用密钥认证,密码用来验证密钥
    
    # 上传公钥到服务器
    scp ~/.ssh/id_rsa.pub 用户名@服务器:~/.ssh/authorized_keys
  2. PowerShell中ssh连接

    ssh 用户名@服务器
    # 可见提示的密码认证是认证本地密钥

    PixPin_2025-08-31_21-42-22.png

  3. Putty中连接
    puttygen打开私钥,提示格式太老,菜单key \ 保存参数设置一下,另存为ppk格式的putty密钥。
    PixPin_2025-08-31_21-35-39.png
    putty中打开保存的会话,connection \ SSH \ Auth \ Credentials,打开之前保存的ppk密钥,重新保存会话。
    PixPin_2025-08-31_21-46-43.png
  4. 参考
    https://blog.csdn.net/black_cat7/article/details/139457572
    https://zhuanlan.zhihu.com/p/587082161
    https://www.dell.com/support/kbdoc/zh-cn/000217157/connectrix-b-series-how-to-use-putty-for-ssh-key-based-authentication
    https://blog.csdn.net/chenzhengfeng/article/details/125827015
    https://blog.csdn.net/knight_zhen/article/details/47001449

  1. socks5代理转http代理
    安装scoop需要代理翻墙,且只能走http代理,不支持socks5代理。
    naiveproxy只有新版本才能同时设置socks5代理,但新版本却不支持Windows 8.1, 只能通过privoxy来中转。
    privoxy配置文件config.txt中修改一句、新增一句配置

    listen-address  127.0.0.1:1090
    forward-socks5t   /               127.0.0.1:1080  .
  2. https问题
    安装scoop时出现错误Invoke-WebRequest : The request was aborted: Could not create SSL/TLS secure channel.

    如果客户端尝试使用TLS 1.0协商请求,但只支持TLS 1.1和1.2,则会出现此错误。
    在向您的服务发出请求之前,尝试通过将以下代码添加到客户端应用程序来强制客户端使用TLS1.2。
    Powershell

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
  3. Powershell版本过低
    下载并安装Windows管理框架5.1
    https://tips.pfrlju.com/tech/jacki/updating-powershell-version-on-windows.html

    这里看貌似Windows 7也是一样的操作
    https://www.cnblogs.com/heenhui2016/p/11037607.html

1. 优势

方便安装多个系统,无需备份再重装。新增一个vhdx虚拟磁盘,安装系统,设置启动并进入即可,好用的留下,不好用删除即可。

2. 方案

整个硬盘设置为一个主分区,留好ESP分区用于存储启动记录。
PixPin_2025-07-05_23-18-22.png

2.1 创建vhdx虚拟磁盘

PE启动,在主分区里创建并挂载虚拟磁盘。

diskpart
create vdisk file=D:\win10.vhdx maximum=102400 type=fixed #创建虚拟磁盘文件`D:\win10.vhdx`,空间100G,类型为固定大小(性能最优)
select vdisk file=D:\win10.vhdx
attach vdisk

下面即可使用DiskGenius等工具在虚拟磁盘上建立分区,格式化了。由于启动记录在物理硬盘的ESP分区,直接整个虚拟磁盘设置为一个主分区即可。

2.2 安装系统

使用dism++,释放系统镜像即可。

2.3 设置启动

使用bootice设置从虚拟磁盘启动。

  1. 选择物理硬盘
    PixPin_2025-07-05_22-38-38.png
  2. 启动BCD编辑
    PixPin_2025-07-05_22-39-17.png
  3. 设置启动记录
    PixPin_2025-07-05_22-39-53.png

3. 参考

https://learn.microsoft.com/zh-cn/windows-hardware/manufacture/desktop/boot-to-vhd--native-boot--add-a-virtual-hard-disk-to-the-boot-menu

https://winaero.com/mount-or-unmount-vhd-or-vhdx-file-in-windows-10/

NSSM - the Non-Sucking Service Manager
nssm也在scoop库里,可以通过scoop安装。
  1. 安装服务
    管理员cmd运行下面命令,出现配置窗口,填好信息,安装服务。

    nssm install

    PixPin_2025-06-14_00-04-01.png

  2. 管理服务
    常用管理命令

    To manage a service:
    
         nssm start <servicename>
    
         nssm stop <servicename>
    
         nssm restart <servicename>
    
         nssm status <servicename>
    
         nssm statuscode <servicename>
    
         nssm rotate <servicename>
    
         nssm processes <servicename>

    PixPin_2025-06-14_00-05-29.png

飞牛FNOS基于Debian,通过定时任务把获取到的GitHub hosts写入\etc\hosts,实现系统方便访问GitHub。
需要解决的问题:

  1. 获取到最新的GitHub hosts,下面的页面每日自动更新。
    https://hosts.gitcdn.top/hosts.txt
  2. 删除旧hosts记录,添加新记录。

    sed -i '/# fetch-github-hosts begin/,$d' /etc/hosts
    # `,$d`实现删除从匹配行至末尾的行
    curl https://hosts.gitcdn.top/hosts.txt >> /etc/hosts

    并保存为脚本,如/vol1/1000/Docker/fetch_github_hosts.sh

  3. 定时更新
    飞牛并没有定时执行命令或脚本的功能,通过lucy来实现。
    PixPin_2025-05-11_22-15-31.png

    由于编辑hosts需要root权限,还要能免权限执行,通过visudo命令在最下方添加下面配置来实现。

    lucky ALL=(ALL) NOPASSWD: /bin/sh /vol1/1000/Docker/fetch_github_hosts.sh

手机:小米15pro,HyperOS

  1. 下载回来的xapk用7-zip解压缩,得到多个apk
  2. adb安装

    adb install-multiple 1.apk 2.apk ……

scoop是一个Windows系统的包管理器,类似于Debian/Ubuntu的apt或Fedora的yum。
通过scoop,可以像Linux上一样方便的获取和管理软件,不用再到处下载安装包和管理更新了。
scoop全开源,社区提供的软件包比较全,choco就没有pixpin。
另外,scoop也方便安装,不用winget一样依赖微软商店,无法在LTSC上装。

安装scoop和初始设置

允许用户运行脚本

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

设置安装目录

$env:SCOOP='D:\Scoop'
[Environment]::SetEnvironmentVariable('SCOOP', $env:SCOOP, 'User') #写入用户配置(下次打开PowerShell依然有效)

设置全局安装路径(可选,如果需要全局安装软件)

$env:SCOOP_GLOBAL='D:\GlobalScoop'
[Environment]::SetEnvironmentVariable('SCOOP_GLOBAL', $env:SCOOP_GLOBAL, 'Machine') # Machine 级别需要管理员权限

设置代理

启动代理软件,在Internet Options中设置好代理服务器。下面设置好scoop代理后,就不用这个全局代理了。
注:在Windows 10中貌似Powershell的代理环境变量没用。

安装Scoop

iwr -useb get.scoop.sh | iex

设置scoop代理

scoop config proxy 127.0.0.1:1090 # scoop仅支持http代理,不支持socks代理;这里设置好后,可以取消前面设置的全局代理了。

初始安装

scoop install git
scoop update #首次更新会把默认的bucket转成git repo,否则后面无法添加bucket

安装和设置常用bucket和软件

安装常用bucket

scoop bucket add extras
scoop bucket add nerd-fonts
scoop bucket add lemon https://github.com/hoilc/scoop-lemon # pixpin在这里
scoop bucket add scoop-cn https://github.com/duzyn/scoop-cn

安装常用软件

scoop install adb aria2 clink dismplusplus ditto ffmpeg hysteria jpegview listary maple-mono-nf-cn mpv.net naiveproxy notepad4 office-tool-plus picpick pixpin putty rufus STranslate sumatrapdf telegram thorium-avx2 ventoy vim wechat winscp yt-dlp

设置clink

clink autorun install

设置scoop-search(scoop自带的search功能太慢,用scoop-search替换)

vim $PROFILE #编辑Powershell Profile文件,如果目录不存在,则手动创建
Invoke-Expression (&scoop-search --hook) # 在Profile中添加这句,以后启动PowerShell时自动加载替换search功能

设置aria2

scoop config aria2-enabled true | false # 启用|禁用aria2多线程下载
scoop config aria2-warning-enabled false # 禁用aria2多线程下载警告信息

安装系统runtime

scoop install windowsdesktop-runtime-6.0 windowsdesktop-runtime-lts # 需要管理员身份运行,mpv.net依赖6.0,stranslate依赖lts(8.0)
scoop uninstall windowsdesktop-runtime-6.0 windowsdesktop-runtime-lts # 安装后即可删除,这里删除的应该是安装包

重装后恢复scoop

重新设置安装路径

同安装时的操作

设置代理

同安装时的操作

恢复scoop安装的软件

scoop reset *

常用操作

scoop help
scoop update #  更新软件数据库
scoop update * # 更新所有软件
scoop update APPNAME # 更新某个软件
scoop install APPNAME -a ARCH #指定安装32位或64位软件
scoop hold/unhold APPNAME # 允许更新/不允许更新某个软件

部分国内镜像

替换已安装bucket地址

main为例

cd $env:SCOOP\buckets\Main
git remote set-url origin https://gitee.com/scoop-bucket/main.git

替换部分bucket为南京大学镜像

scoop bucket list
Name       Source                                                  Updated            Manifests
----       ------                                                  -------            ---------
main       https://mirror.nju.edu.cn/git/scoop-main.git            2025/5/21 16:30:00      1389
extras     https://mirror.nju.edu.cn/git/scoop-extras.git          2025/5/21 16:29:38      2165
versions   https://mirror.nju.edu.cn/git/scoop-versions.git        2025/5/21 16:46:05       498
nerd-fonts https://mirror.nju.edu.cn/git/scoop-nerd-fonts.git      2025/5/15 16:32:36       367
lemon      https://github.com/hoilc/scoop-lemon 2025/5/21 17:23:24      1894
scoop-cn   https://github.com/duzyn/scoop-cn    2025/5/21 17:12:53      5930

替换scoop地址

scoop config SCOOP_REPO "https://gitee.com/scoop-installer/scoop"
scoop config SCOOP_REPO "https://github.com/ScoopInstaller/Scoop"

参考链接

https://www.v2ex.com/t/1126032

https://blog.bling.moe/post/11/

https://github.com/shilangyu/scoop-search/

LibreElec中的/etc等目录都是只读的,启用的systemd的设置文件放在用户文件夹/storage中。

新建/storage/bin目录。可执行文件建议放在其中。

/storage/.config作为/etc,在其中新建子目录存放配置文件。

service文件放在/storage/.config/system.d中。

Snipaste_2025-02-18_22-32-34.png

PS:
默认用户名/密码是root/libreelec

虽然fnos也可以手工上传证书并实现外部https访问,但近期的ssl证书都只有90天有效期,到期都只能手工更新,比较麻烦,万一忘记就麻烦了。通过lucky自动申请证书,内网转发实现永久https访问,避免了手工更新证书的麻烦。

  1. 前置条件:路由器或飞牛已设置好端口转发和DDNS。
  2. DNSPOD中新增API密钥
    登录DNSPOD控制面板,进入我的账号\API密钥页面,切换到DNSPod Token创建密钥,记住密钥信息。
    1.png
  3. 登录lucky,切换到安全管理添加证书,设置如下:
    添加方式=ACME
    证书颁发机构=Let's Encrypt
    验证方式=DNSPod
    使用DNSPod Token
    ID=第一步的密钥ID
    Token=第一步的密钥
    2.png
  4. 登录lucky,切换到Web服务添加Web服务规则,设置如下:
    监听端口=5666以外的可用端口
    TLS=启用
    Web服务类型=反向代理
    前端域名=自己的域名
    后端地址=http://飞牛ip:5666
    万事大吉=启用
    3.png
  5. 登录路由器,设置端口转发,外部访问转发到第三步设置的监听端口
  6. 外部访问https://域名:监听端口,已实现使用Let's Encrypt的证书。
    今后lucky可以自动更新证书,而不必手动添加证书。