安装

  • 从镜像网站下载openwrt的镜像

    • openwrt-*-generic-ext4-combined*的镜像是ext4形式的镜像,与普通linux系统一样,可以随意写入(一般用这个的灵活性高)
    • openwrt-*-generic-squashfs-*的镜像是有固定不可写入的硬盘分区
  • 扩容

    • 将img文件转换为vdi,并enlarge为1G(参考这里

      VBoxManage convertfromraw --format VDI openwrt.img openwrt.vdi
      # 如果这步的修改vdi容量大小不成功,可以将上一步的openwrt.vdi注册到virtualbox中,然后用图形方式修改容量大小
      # 只要注册硬盘,不用新建虚拟机
      VBoxManage modifymedium openwrt.vdi --resize 1024
      
      • 将Openwrt.vdi上传到一台linux机器上操作(如果是安装在SD卡上的系统从fdisk开始都是一样,只是对虚拟机是挂载vdi文件,而对SD卡直接就是操作/dev/sd*之类的文件)

        # 安装qemu-utils以挂载vdi文件
        sudo apt install qemu-utils
        
        # 添加内核模块
        sudo modprobe nbd
        
        # 挂载vdi文件(如果是SD卡就挂载SD卡)
        sudo qemu-nbd -c /dev/nbd0 "/home/evan/openwrt.vdi"
        
        # 用fdisk修改分区大小
        sudo fdisk /dev/nbd0
        # p命令显示分区并记录openwrt.img2的StartSector(我这里是33792)
        # d命令删除第二个分区
        # n命令新建一个分区,First sector填上述[33792](不要remove the signature)
        # w命令退出
        
        # 用e2fsck检查分区
        sudo e2fsck /dev/nbd0p2
        
        # resize2fs修改分区
        sudo resize2fs /dev/nbd0p2
        
        # 卸载vdi文件
        sudo qemu-nbd --disconnect /dev/nbd0
        
        • 将修改后的vdi传回虚拟机host
  • 在virtualbox中新建一个虚拟机,将刚才生成的vdi作为其硬盘启动即可

    • 内存有256M即可
    • 网卡需要一张host-only、一张NAT(第一张是host-only、第二张是NAT
    • 如果作为旁路由就只需要一张bridge网卡即可

基本设置

  • 设置root密码:passwd

  • 设置网络

    • 查看当前的网卡设置:uci show network,可以看到默认的br-lan地址是192.168.1.1

    • 设置host-only网卡的的地址(应根据自己的host-only网卡地址设置)

      # 下列步骤完成后应该就能通过ssh访问Openwrt了
      uci set network.lan.ipaddr='192.168.11.2'
      uci commit
      reboot
      
    • 在可以用ssh登录后就进行如下设置(其实就是将lan接口改为mng作为管理接口,wan接口为自动获取IP)

      uci batch <<EOF 
      set network.mng=interface 
      set network.mng.type='bridge' 
      set network.mng.proto='static'
      set network.mng.netmask='255.255.255.0'
      set network.mng.device='eth0'
      set network.mng.ipaddr='192.168.11.2'
      delete network.lan
      delete network.wan6
      set network.wan=interface
      set network.wan.device='eth1'
      set network.wan.proto='dhcp'
      EOF
      
    • 如果openwrt作为旁路由使用就按如下设置(假设家庭主路由的网段为192.168.50.0/24

      uci batch <<EOF 
      set network.mng=interface 
      set network.mng.type='bridge' 
      set network.mng.proto='static'
      set network.mng.netmask='255.255.255.0'
      set network.mng.device='eth0'
      set network.mng.ipaddr='192.168.50.1'
      delete network.lan
      delete network.wan
      delete network.wan6
      EOF
      
    • 提交修改并重启:uci commit && reboot

  • 设置时区

安装必要软件

安装v2

  • Add new opkg key:

    wget -O kuoruan-public.key http://openwrt.kuoruan.net/packages/public.key
    opkg-key add kuoruan-public.key
    
  • Add opkg repository:

    echo "src/gz kuoruan_packages http://openwrt.kuoruan.net/packages/releases/$(. /etc/openwrt_release ; echo $DISTRIB_ARCH)" >> /etc/opkg/customfeeds.conf
    
    echo "src/gz kuoruan_universal http://openwrt.kuoruan.net/packages/releases/$(. /etc/openwrt_release ; echo $DISTRIB_ARCH)" >> /etc/opkg/customfeeds.conf
    
  • install package:

    opkg update
    opkg install v2raya
    

开机启动虚拟机

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
“VB-MYDEVICE”=“\”C:\\Program Files\\Oracle\\VirtualBox\\VBoxManage.exe\“ startvm \”NAMEOFVBINSTANCE\“ –type headless”

FAQ

关于虚拟硬盘格式

如果需要在Hype-V或者VMware中安装,则可以考虑将vdi硬盘格式转换:

# vdi转vmdk
VBoxManage.exe clonehd source.vdi target.vmdk --format VMDK
# vdi转vhd
VBoxManage.exe clonehd source.vdi target.vhd --format VHD
# vmdk转vdi
VBoxManage.exe clonehd source.vmdk target.vdi --format VDI
# 如果遇到uuid冲突问题
VBoxManage.exe internalcommands sethduuid source.vdi