U酱收藏了一篇笔记,小兔报告说。
据小兔观察, 主要的内容是:
使用Linux虚拟机和Samba,在Windows上读写ext4磁盘的方案。
这是一个硬盘盒子,之前曾经接在Linux主机上,所以是ext4的格式;
现在活性酱想在Windows上读写它,怎么办呢?
ext2fsd之类的方案,有的只支持读取,有的据说会破坏硬盘在Linux上的兼容性
撒,怎么办呢?(x2)
鉴于Samba在千兆交换机上跑出满速的优秀性能,
还有VirtualBox方便的USB筛选器功能
在虚拟机运行时,符合筛选器的USB设备会被直接连接到虚拟机上
不妨试试将ext4硬盘挂载到虚拟机的Linux系统上,
然后再用Samba挂载到本地的方式吧!
清单
- VirtualBox,以及相应的Extension Pack (USB3.0支持)
https://www.virtualbox.org/wiki/Downloads - Alpine,迷你的发行版 (VIRTUAL分类的)
https://alpinelinux.org/downloads/ - usbmount,Y老师从Debian转运出来的包
https://github.com/k9yyy/usbmount
作用是当插上USB硬盘时自动挂载到/media/usb0
目录里
路线
检查VirtualBox的“仅主机网络”配置,记下网段
(尽量不要自动配置,连网段都不知道在哪有用吗.jpg)
新建虚拟机,版本选择Other Linux (64-bit)
- 内存=256M,硬盘=512M
创建出来后修改虚拟机设置:
- 存储→把Alpine镜像挂到光驱上;
- 网络→网卡1用网络地址转换(NAT)提供Internet连接,网卡2用仅主机(Host-only)网络来提供访问地址;
- USB设备→启用USB3.0控制器。
启动虚拟机,稍等片刻后Alpine就会从光盘启动。
当然我们是打算安装到硬盘上的,
所以输入root,直接空密码登录,然后执行setup-alpine
接下来是填问卷时间!
- 键盘映射,回答两次us
- 主机名,随你喜欢吧
- 网卡配置,eth0对应NAT,回答dhcp
- eth1对应Host-only,自定一个相应网段的静态地址,
子网掩码255×3,网关none - root密码,随意
- 时区回答Asia和Shanghai
- 代理一般为无,NTP没必要,回答none
- 镜像站可以用21的清华镜像
- SSH服务默认
- 硬盘选择sda,类型是sys(系统盘)
- 最后回答y即可开始安装。
安装成功后提示你reboot,在那之前先强制卸载掉Alpine的ISO文件,否则……
如果想使用自己趁手的SSH客户端的话,现在就去修改sshd_configPermitRootLogin yes
吧
因为剪贴板不互通,默认的终端字体又不好看,活性酱先改为敬
安装samba服务
apk update apk add samba
用喜欢的方式把usbmount的压缩包传到Alpine里,解压并安装;
然后启动udev-trigger服务,并设为开机自动启动:
apk add --allow-untrusted usbmount-0.0.23-r0.apk rc-service udev-trigger start rc-update add udev-trigger
那么好的各位,现在只要虚拟机上有USB硬盘接入,就会被自动挂载到media/usb0
只需将这个目录用Samba共享出来,就可以在宿主机上读写了
接下来编辑etc/samba/smb.conf
Share Definitions行后默认把家目录共享出来了,
删掉这些配置,改为下面的配置:
[usb0] path = /media/usb0 valid users = root public = no writable = yes
把root用户添加到samba用户中,同时设定一个独立密码
然后设置自启samba服务
smbpasswd -a root rc-service samba start rc-update add samba
为了测试效果,我们现在就插上USB硬盘
然后在虚拟机的设置 - USB设备中,
用添加这个硬盘的筛选器,并且保存
这样以后硬盘就会被直接连接到虚拟机,只要有在运行
在宿主机的资源管理器访问\\虚拟机的IP
输入用户名root和密码之后就能看到共享的usb0文件夹
如果能看到硬盘的内容的话,就算完成九点九分了
用映射网络驱动器的功能,可以映射到“我的电脑”里面
不过我们肯定还需要一个方便的开关,以便日常的使用
在VBox中给虚拟机右键创建桌面快捷方式,
右键属性查看,目标的结尾是
VirtualBoxVM.exe" --comment "虚拟机名" --startvm "{UUID}"
把它修改成(注意第一个参数没有横线)
VBoxManage.exe" startvm "{UUID}" --type headless
这个快捷方式能够后台启动Alpine虚拟机;
复制一份,修改成
VBoxManage.exe" controlvm "{UUID}" acpipowerbutton
这个快捷方式用来给虚拟机发送ACPI关机信号
有心的话,还可以给快捷方式设定快捷键
有了这两个快捷方式,除了第一次使用需要添加USB筛选器以外,
只要后台启动虚拟机,然后稍等片刻接上硬盘就可以直接进我的电脑访问了
数据读写完成后,ACPI关掉虚拟机即可取下硬盘
目前还没见过会后台读写网络驱动器的魔鬼软件
所以应该不会有太大的占用问题
感想
简单测试了一下,这个方案没有明显的读写性能问题,
Alpine虚拟机的占用也非常小,折腾程度中等,效果还算好用
Lab的各位如果喜欢这篇NOTE的话,记得点收藏哦