Windows 10/11 彻底关闭Hyper-V的方法

背景

由于之前在Windows上安装了Docker和Wsl 2,导致Hyper-V被打开,然而,我把WSL切换为版本1,并且在 控制面板 - 添加删除应用程序 - 开启或关闭Windows功能 里把所有Hyper-V和虚拟机相关的功能取消以后,查看系统状态发现Hyper-V仍然在运行。
网上找了很多办法,都不顶用,最终在微软官方文档中找到了解决办法。

问题原因

仅仅在 控制面板 - 添加删除应用程序 - 开启或关闭Windows功能 中关闭Hyper-V相关功能并不会完全关闭Hyper-V,因为系统可能还打开了 Credential Guard ,这也会导致Hyper-V的相关功能依旧保持打开

解决脚本

PowerShell:

Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa -v LsaCfgFlags -t REG_DWORD -d 0 /f
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DeviceGuard -v LsaCfgFlags -t REG_DWORD -d 0 /f

修复京东无线宝TF卡分区

背景

手里有个老一代京东无线宝,结果发现更新固件到4.x版本以后,内置存储空间变成了17M,实际应该是64G才对,网上搜索各种办法都没解决,比如开机红灯闪烁的时候戳复位键所谓的低格,然而并没有什么用。

开始折腾

拆机

网上说这个路由器拆开以后,里面负责存储挖豆的缓存设备其实是一个TF卡。于是动手开拆,吐槽一下,这玩意是真难拆,除了表面的螺丝,那个卡扣太反人类了,可能根本就不想让用户拆开。废了九牛二虎之力以后终于拆开了。

定位问题

拆出来TF卡,找了个读卡器,插电脑上。使用Diskgenius打开TF卡分区发现,TF卡被分为了6个分区,前面4个是ext4的分区,第5个分区是一个swap交换分区,然后第最后1个分区文件系统依旧是ext4,对比分区大小发现,最后一个分区的容量刚好是17M,由此可知,系统固件将TF卡的最后一个分区识别为了内置存储空间。然后再往前看,第四个分区居然有50GB+,奇了怪了,按道理应该把第四个分区识别为内置存储空间啊,咋个把最后的“零头分区”识别为内置存储了?

简单粗暴解决

我尝试了一下,直接把swap分区和最后的17M零头分区删除,然后把空间合并到分区4,完成以后把TF卡插回京东无线宝开机,居然神奇般解决了,内部存储空间识别正常了,识别到了50GB+,也开始正常缓存了,指示灯也变绿了,问题解决。唯一的问题就是把swap分区删掉了,不知道会不会对性能有影响

后话

期间没有截图和拍照,只是纯文字记录过程,下次遇到类似问题有个参考。

Docker 部署 Transfer 在线文件传输

  1. Docker Compose 模板
version: '3.5'
services:
  # transfer
  coturn-transfer:
    image: coturn/coturn:latest
    restart: ${RESTART_POLICY:-unless-stopped}
    command: -u ${ICE_USERNAME:TEST}:${ICE_PASSWORD:TEST} -r ${TRANSFER_DOMAIN:localhost} -X ${HOST_IP:127.0.0.1} -E ${HOST_IP:127.0.0.1} --listening-port 5678 -f -a -v --no-cli --no-tls --no-dtls --check-origin-consistency
    ports: 
      - "5678:5678/tcp"
    networks:
      transfer:

  transfer:
    image: kern/filepizza:master
    restart: ${RESTART_POLICY:-unless-stopped}
    environment:
      PORT: ${TRANSFER_PORT:80}
      ICE_SERVERS: '[{"urls": "turn:${HOST_IP:127.0.0.1}:5678?transport=tcp","username": "${ICE_USERNAME:TEST}","credential": "${ICE_PASSWORD:TEST}"}]'
    depends_on:
      - coturn-transfer
    networks:
      transfer:

networks:
  transfer:
  1. 环境变量配置:
TRANSFER_DOMAIN=transfer.test.com
TRANSFER_PORT=10080
ICE_USERNAME=TEST
ICE_PASSWORD=TEST

j4125 软路由折腾日记

ESXi 篇

ESXi下载地址

https://customerconnect.vmware.com/en/evalcenter?p=free-esxi8

ESXi安装的时候提示“Shutting down firmware services...Relocating modules and starting up the kernel...”

在安装程序引导界面出现以后按Shift + O,加入参数

ignoreHeadless=TRUE

即可解决。

ESXi网卡直通以后,爱快无法启动,同时直通的网卡提示“已开启/需要重新引导”

解决办法是在ESXi的 主机 - 管理 - 高级设置 里,将

VMkernel.Boot.disableACSCheck

设置为True。

ESXi核显直通给群晖以后,重启后群晖无法启动,同时核显提示“已开启/需要重新引导”

原因是ESXi开机的时候会强制占用核显,导致直通失效,解决办法是在ESXi的 主机 - 管理 - 高级设置 里,将

VMkernel.Boot.vga

设置为False。

PVE 篇

PVE 如何将img导入磁盘

qm importdisk <虚拟机ID> <img文件路径> local-lvm

PVE 网口直通报错

nano /etc/default/grub

修改GRUB_CMDLINE_LINUX_DEFAULT为以下值

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_port_pm=off"

更新grub并重启

update-grub
reboot

PVE 核显直通

nano /etc/default/grub

修改GRUB_CMDLINE_LINUX_DEFAULT增加以下参数

video=efifb:off

修改

nano /etc/modules

添加

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

用以下命令查看PCI设备ID并记下来

lspci -nn

可以看到核显ID为8086:3185

00:02.0 VGA compatible controller [0300]: Intel Corporation GeminiLake [UHD Graphics 600] [8086:3185] (rev 06)

添加到vfio的配置中

nano /etc/modprobe.d/vfio.conf

添加

options vfio-pci ids=8086:3185

修改

nano /etc/modprobe.d/blacklist.conf

添加

blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
blacklist i915

更新引导

update-initramfs -u
update-grub

PVE 硬盘直通

查询硬盘列表

ls -l /dev/disk/by-id/

直通

qm set <虚拟机ID> -<sata|scsi|ide><序号> <硬盘设备路径>

解决python安装ta-lib报错的问题

问题

Failed to build ta-lib
ERROR: Could not build wheels for ta-lib, which is required to install pyproject.toml-based projects

原因

通过pip安装python的ta-lib包需要调用Visual Studio编译ta-lib库,若没有安装visual studio或者ta-lib库就会编译失败

解决办法

由于安装ta-lib库和visual studio太过麻烦,
https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib
提供了预编译的python包,
下载对应版本以后,使用pip安装即可,注意把TA_Lib‑0.4.24‑cpXXX‑cpXXX‑XXX.whl替换为实际的文件名

pip install TA_Lib‑0.4.24‑cpXXX‑cpXXX‑XXX.whl