Skip to content

Commit

Permalink
加入虚拟机添加物理开关章节
Browse files Browse the repository at this point in the history
  • Loading branch information
firemakergk committed Oct 17, 2022
1 parent 64e2cf0 commit 4edc3f4
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 9 deletions.
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,10 @@ VirtrIO驱动下载地址:https://fedorapeople.org/groups/virt/virtio-win/dire

- [将PVE设置为DHCP动态地址](./details/把pve配置成DHCP.md)
- [开机IP自检及更新脚本](./details/开机IP自检及更新脚本.md)
- UPS配置([apc施耐德](./details/pve下安装施耐德ups配套软件及简单配置.md)[雷迪司](./details/雷迪司Viewpower在pve上的部署.md))
- UPS配置
- [apc施耐德](./details/pve下安装施耐德ups配套软件及简单配置.md)
- [雷迪司](./details/雷迪司Viewpower在pve上的部署.md)
- [为虚拟机添加物理开关](./details/给虚拟机加装一个物理开机键.md)


TrueNas:
Expand Down
Binary file added _resources/2k553-vhsvy.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -20,23 +20,23 @@

首先来看按钮,手头最大的按钮就是这个了,它有四个引脚,对角线的引脚是成对的。

<img src="../../_resources/f30d3039c1cf4a60a8ceebaf60f341ac.png" alt="3bb42906fa9635a0e2610dc19b49b0b1.png" width="472" height="269" class="jop-noMdConv">
![f30d3039c1cf4a60a8ceebaf60f341ac.png](../_resources/f30d3039c1cf4a60a8ceebaf60f341ac.png)

我把它接的两极接在了右侧的第1和第6引脚上。第1引脚对应的是5V的高电平,而第6引脚对应的是GPIO18,所以我后续编程时就需要对GPIO18进行监听。

![5f0d30038b88f61e7b14b7da1c76df19.png](../../_resources/598add803fdb443a9c844b9b4ab1dbdd.png)
![5f0d30038b88f61e7b14b7da1c76df19.png](../_resources/598add803fdb443a9c844b9b4ab1dbdd.png)

用杜邦线直接插在这两个引脚上,再用鸡屎焊把线的另一头焊在开关引脚上。然后把开关用扎带绑在服务器的框架上。服务器的框架是为了把ITX机箱、硬盘架、树莓派、交换机整合在一起,用铝型材自制的。详情可见我的这篇文章。由于后面测试时并没有发现电平不稳定的情况,所以图省事没有接下拉电阻,按说还需要一个电阻来稳定电平。

<img src="../../_resources/f8a3e298be3544f7ab38570216f1d531.png" alt="4841fed8865a31135b6d9df992640b4b.png" width="479" height="269" class="jop-noMdConv">
![f8a3e298be3544f7ab38570216f1d531.png](../_resources/f8a3e298be3544f7ab38570216f1d531.png)

硬件完事了以后就可以开始软件部分了。首先要在PVE中获取一个token,在Datacenter中Permissions->API Tokens功能中,点击左上方的add按钮。填写token的名字及备注信息,然后将旁边的Privileget Separation勾选框去掉,这样可以使token具有与当前帐号完全相同的权限。

![dafb2c8787564800cdc4a10bae61afa2.png](../../_resources/5562b51876d342afbb56b48b0100c640.png)
![dafb2c8787564800cdc4a10bae61afa2.png](../_resources/5562b51876d342afbb56b48b0100c640.png)

点击add按钮后你会看到如下信息,下方提示Secret只会在此时显示一次,以后就再也看不到这个序列号了。所以此时要把这个Secret拷出来,保存好。上面的TokenID同样重要,只不过这个值可以通过你自己的帐户信息推断出来。

![ddd97259397c13c1b88c185958a6b8d2.png](../../_resources/0767320aaee94b79b3ec89792eef38e7.png)
![ddd97259397c13c1b88c185958a6b8d2.png](../_resources/0767320aaee94b79b3ec89792eef38e7.png)

有了这两个值再配合上上文提到的url,你就可以通过脚本来触发虚拟机的开机动作了。下面是脚本全文,可以说非常简单了核心代码只有十几行,配合注释很容易看懂。实际上代码的框架也是我在网上找的,只需要加上请求发送的逻辑就可以了。使用树莓派开发这种功能确实是方便快捷。

Expand Down Expand Up @@ -94,12 +94,12 @@ GPIO.cleanup()

程序保存在树莓派上以后,执行`python windows_switch.py`会发现程序block住了,这时候每当你按下按钮,就会发现命令行打印出了‘open’的日志信息。

![7f7eff2763ad435299b2bd6cfdc53fef.png](../../_resources/0910ccd8271f4a8f9275be8f3c3cfab7.png)
![7f7eff2763ad435299b2bd6cfdc53fef.png](../_resources/0910ccd8271f4a8f9275be8f3c3cfab7.png)

再看虚拟机,就已经开始启动了。但这还没完,因为程序一直在前台跑着,如果关掉控制台,那按钮就失效了,所以还需要给这个脚本注册一个服务,让它开机启动。这样一来就可以愉快地使用物理按钮一键开机了,由于这台虚拟机直通了显卡,所以可以在物理显示器上直接显示画面。

![2k553-vhsvy.gif](file:///F:/programs/JoplinProfile/resources/b72c93154ab14b94a518cd6f984a5e6d.gif)
![2k553-vhsvy.gif](../_resources/2k553-vhsvy.gif)

## 总结

经过此番调教后,服务器上的windows虚拟机拥有了虚实结合的能力。虚则可以无影无踪又召之即来,实则可以按键开机开屏即用。在家时它直接使用物理设备高效响应,在外面时只要你能接入互联网,它就总有方法伴你左右,像一只精灵随时听你差遣。这半年来,涉及aquarhome的项目所有开发工作我都是使用它来完成的,还用它剪辑了我的第一条B站视频。对我来说绝对是妥妥的生产力工具。
经过此番调教后,服务器上的windows虚拟机拥有了虚实结合的能力。虚则可以无影无踪又召之即来,实则可以按键开机开屏即用。在家时它直接使用物理设备高效响应,在外面时只要你能接入互联网,它就总有方法伴你左右,像一只精灵随时听你差遣。

0 comments on commit 4edc3f4

Please sign in to comment.