利用 Windows Hyper-V 创建 Linux 虚拟机,打造个人开发环境

网络设置

交换机设备配置好之后,需要连接外网,那么还需要配置 proxy,为了省事,因为这个虚机就在自己本地,并不会其他共享,直接用账号的方式配置即可。编辑 ~/.zshrc 添加如下:

export http_proxy="http://<user>:<passwd>*@proxy.michael.com:8080/"
export https_proxy="http://<user>:<passwd>*@proxy.michael.com:8080/"
export no_proxy="127.0.0.1, localhost"

如果密码有特殊字符,需要利用encode工具编码。

除此以外,可能还需要配置:

  • /etc/resolv.conf
  • 为了避免证书的问题,需要在 Linux 机器上导入证书

YUM 源配置

YUM 源的配置

常用 RPM 包

yum install -y vim \
               net-tools \
               wget \
               git \
               lrzsz \
               gcc \
               zsh \
               samba
  • net-tools 提供 ifconfig 命令

Git 配置

ssh-keygen -t rsa -C "zx@michael.com"
git config --global user.email "zx@michael.com"
git config --global user.name "<user>"
git config --global http.sslverify false
git config --global https.sslverify false

具体配置文件,在 ~/.gitconfig

静态 IP

# 创建一个内部的虚拟机交换机(附带会创建一个虚拟网卡)
New-VMSwitch -SwitchName "NAT-VM" -SwitchType Internal
# 查看虚拟网卡 NAT-VM 的ifindex
Get-NetAdapter
Get-NetAdapter -Name "*NAT-VM*" | Format-List -Property "InterfaceIndex"
# 给虚拟网卡设置 IP,InterfaceIndex 参数自行调整为上一步获取到的 ifindex。这一步等同于在 控制面版-网卡属性 中设置 IP
New-NetIPAddress -IPAddress 192.168.200.1 -PrefixLength 24 -InterfaceIndex 49
# 创建一个 NAT 网络(关键在这里!)
New-NetNat -Name NAT-VM -InternalIPInterfaceAddressPrefix 192.168.200.0/24
# 给名称是"CentOS7"的VM设置使用这个交换机, 也可以通过hyper-v管理器操作
Get-VM -Name CentOS | Get-VMNetworkAdapter | Connect-VMNetworkAdapter -SwitchName "NAT-VM"

设置 Linux 网络静态 IP:

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
IPADDR="192.168.200.101"
NETMASK="255.255.255.0"
GATEWAY="192.168.200.1"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eth0"
UUID="68fd9207-ce73-43e4-9a77-ba43069c8da4"
DEVICE="eth0"
ONBOOT="yes"

说明:

  • 主要是BOOTPROTOdhcp 换成 staticIPADDR

然后重启网络:

service network restart

管理员 powershell 里面运行这个,可以把本地的虚拟机暴露出来, 通过PC机IP+2022端口来访问VM

Add-NetNatStaticMapping -ExternalIPAddress "0.0.0.0/24" -ExternalPort 2022 -Protocol TCP -InternalIPAddress "192.168.200.254" -InternalPort 22 -NatName NATNetwork

参考:

免密登录 VM

如下操作可以将本机的公钥添加到 VM 上的 authorized_keys 文件中:

ssh-copy-id root@<IP>

在 VM 中执行 systemctl restart sshd

为了在本机上可以方便登录,可以给 Host 取个别名,在 Windows 机器上的 C:\Users\<user>\.ssh 目录下,添加一个 config 文件,增加如下内容:

Host vm
    HostName <IP>
    User root
    Port 22
    IdentityFile C:\Users\<user>\.ssh\id_rsa

ssh vm 即可免密登录到远端虚机上。

Python

Python 安装

mkdir -p /opt/3rdComponent
cd /opt/3rdComponent
wget http://www./centos_Python-3.7.3.tar.gz
tar xvzf centos_Python-3.7.3.tar.gz

环境变量:

export PATH=/opt/3rdComponent/Python-3.7.3/bin:$PATH

PyPi 源配置

Java

Java 安装

cd /opt/cloud/3rdComponent
wget http://www.jdk1.8.0_212.tar.gz
tar xvzf centos_jdk1.8.0_212.tar.gz

环境变量:

export JAVA_HOME=/opt/3rdComponent/jdk1.8.0_212
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

Hyper-V 启动报错

PowerShell 中执行 Get-Service "vm[cm]*" ,看看 vmcompute 和 vmms 两个服务是不是都处于 Running 状态。

vmms 未启动

管理员权限执行:

sc config vmms start=auto  
sc start vmms 

参考

sudo: java: command not found解决办法

Visual Studio Code is unable to watch for file changes in this large workspace

cat /proc/sys/fs/inotify/max_user_watches

编辑 /etc/sysctl.conf 末尾添加:

fs.inotify.max_user_watches=524288

最后重启:sudo sysctl -p

Visual Studio Code is unable to watch for file changes in this large workspace

上一篇:寻根问底,24核 256G的配置,玩扫雷到底卡不卡?


下一篇:用Hyper-v 在win10下体验k8s.