原文:PVE下安装UNRAID - 简书 (jianshu.com)

1. 制作IMAGE磁盘镜像

懒人专用可以直接看第六节

  • 下载unraid 6.10.2开心版-恩山无线论坛 (right.com.cn),解压后,按照config/go文件里面的描述进行修改,修改后的内容如下

    # 需要硬盘启动把下面三行注释去掉,并把更下面行里的export FLASH_GUID行去掉,硬盘分区卷标命名为UNRAID
    modprobe dummy_hcd
    modprobe g_mass_storage file=/boot/config/usb idVendor=0x1d6b idProduct=0x0104 iManufacturer=SanDisk iProduct=Ultra iSerialNumber=A11FAF09DD45C4A8
    export FLASH_GUID=1D6B-0104-A11F-AF09DD45C4A8
    
    # FLASH_GUID替换成unraid管理界面里看到的U盘GUID,也可以在启动进unraid后,通过shell终端修改/boot/config/go文件后重启生效
    # export FLASH_GUID=1D6B-0104-A11F-AF09DD45C4A8
    export REG_NAME=muziling
    LD_PRELOAD=/boot/config/BTRS.key /usr/local/sbin/emhttp &
    
  • 将修改后的UNRAID的启动文件上传到PVE上,这里是以 /home./work 为例,将UNRAID上传到该目录下

    feng@pve:~/work/UNRAID$ ls 
    bzfirmware  bzfirmware.sha256  bzImage  bzimage.sha256  bzmodules  bzmodules.sha256  bzroot  bzroot-gui  bzroot-gui.sha256  bzroot.sha256  changes.txt  config  EFI  license.txt  make_bootable.bat  make_bootable_linux  make_bootable_mac  memtest  syslinux
    
  • dd制作一个空的img镜像文件,并且格式为Fat32格式

    • 制作img镜像文件

      feng@pve:~/work$ dd if=/dev/zero of=UNRAID.img bs=1M count=4096
      1024+0 records in
      1024+0 records out
      1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.611998 s, 1.8 GB/s
      
      • 创建的img的大小可以根据需要更改,4096即4个G,也可以在创建完成虚拟机后再去更改大小
    • 设置分区表为GPT并分区

      root@pve:~/work# fdisk UNRAID.img
      
      Welcome to fdisk (util-linux 2.36.1).
      Changes will remain in memory only, until you decide to write them.
      Be careful before using the write command.
      
      Device does not contain a recognized partition table.
      Created a new DOS disklabel with disk identifier 0xc08265bd.
      
      Command (m for help): g
      Created a new GPT disklabel (GUID: 1AAE89AD-C608-574F-8EE7-4268C3719098).
      
      Command (m for help): n
      Partition number (1-128, default 1):
      First sector (2048-8388574, default 2048):
      Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-8388574, default 8388574):
      
      Created a new partition 1 of type 'Linux filesystem' and of size 4 GiB.
      
      Command (m for help): w
      The partition table has been altered.
      Syncing disks.
      
      
    • 使用kpartx挂载虚拟机磁盘分区

      root@pve:~/work# losetup /dev/loop0 UNRAID.img
      root@pve:~/work# kpartx -av /dev/loop0
      add map loop0p1 (253:2): 0 8386527 linear 7:0 2048
      
    • 格式化为Fat32格式

      root@pve:~/work# mkfs.vfat -F 32 /dev/mapper/loop0p1
      mkfs.fat 4.2 (2021-01-31)
      
  • /mnt下新建UNRAID文件夹,并且分区/dev/mapper/loop0n1,挂载到/mnt/UNRAID目录下,然后把上传的UNRAID安装文件复制到/mnt/UNRAID目录下

    • 新建 /mnt/UNRAID 文件夹

      feng@pve:~/work$ sudo rm -rf /mnt/UNRAID && sudo  mkdir /mnt/UNRAID
      
    • 挂载/dev/mapper/loop0n1到/mnt/UNRAID

      root@pve:~/work# mount /dev/mapper/loop0p1 /mnt/UNRAID/
      
    • 复制UNRAID的安装文件到/mnt/UNRAID

      root@pve:~/work# cp -rf UNRAID/* /mnt/UNRAID/
      
    • 最后/mnt/UNRAID的目录结构如下

      feng@pve:~/work$ ls /mnt/UNRAID/
      bzfirmware  bzfirmware.sha256  bzImage  bzimage.sha256  bzmodules  bzmodules.sha256  bzroot  bzroot-gui  bzroot-gui.sha256  bzroot.sha256  changes.txt  config  EFI  license.txt  make_bootable.bat  make_bootable_linux  make_bootable_mac  memtest  syslinux
      
  • 卸载设备

    root@pve:~/work# umount /mnt/UNRAID/
    root@pve:~/work# kpartx -dv /dev/loop0
    del devmap : loop0p1
    root@pve:~/work# losetup -d /dev/loop0
    
  • 将最后修改好的UNRAID.img文件复制到 /var/lib/vz/images 文件夹(不移动也行,为了local中方便看到,还是移动吧)

    feng@pve:~/work$ sudo cp UNRAID.img /var/lib/vz/template/iso/
    

2. 创建虚拟机

  • General根据需要选择即可,点击NEXT

  • 选择Do not user any media,点击NEXT

  • System中Machine选择q35,BIOS选择OVMF(UEFI)

  • 磁盘界面全部删除

  • CPU根据需要设置,Type记得选host即可

  • 内存也根据需要设置

  • 网络Bridge选择PVE管理对应的口,最后创建

3. 创建虚拟机磁盘

  • 方式1:使用importdisk导入

    • 将img镜像导入为虚拟机磁盘

      feng@pve:~/work$ sudo qm importdisk 101 /var/lib/vz/template/iso/UNRAID.img local
      
      • 其中101 为创建虚拟机的id,根据需要修改
      • local为虚拟机的位置,根据需要选择local还是local-lvm,这里因为删除了ThinPoolLV所以选的local
    • 修改虚拟机的lable为UNRAID(UNRAID要判断磁盘的标签)

      feng@pve:~/work$ sudo dosfslabel /var/lib/vz/images/101/vm-101-disk-0.raw UNRAID
      feng@pve:~/work$ sudo dosfslabel /var/lib/vz/images/101/vm-101-disk-0.raw
      UNRAID
      
      • /var/lib/vz/images/101/vm-101-disk-0.raw 为刚刚导入虚拟机磁盘的位置,/var/lib/vz/images/为存放虚拟机的文件,101虚拟机的标识号,vm-101-disk-0.raw为importdisk导入的时候硬盘的名字
      • 修改完后,使用dosfslabel可以查看修改的磁盘的label
    • 扩容创建的创建的磁盘

    • 来到虚拟机界面,找到刚刚导入的虚拟机磁盘,点击编辑,将Bus/Devices修改为Sata,点击add

  • 方式2:创建一个虚拟磁盘然后写入

    • 首先判断是否安装qemu-nbd,如果没有安装,则安装qemu-utils

      • 判断是否安装

        qemu-nbd --version
        
      • 安装软件包 qemu-utils

        apt-get install qemu-utils
        
      • 开启nbd(不开启没有nbd的设备)

        modprobe nbd max_part=4
        
    • 为虚拟机创建一个磁盘,选中创建的虚拟机,点击Hardware>add>Hard Disk,如果使用的是SSD,可以勾选SSD emulation

       

    • 挂载创建的磁盘

      如果创建虚拟机的时候,虚拟机硬盘选择放在的了local-lvm,则不需要挂载,他会默认挂载在/dev/mapper下面,可以跳过此步骤,不过后续命令中注意将写入的设备从/dev/nbd0换成/dev/mapper下对应的设备

      • 查看可用的nbd设备

        feng@pve:~/work$ ls /dev/nbd*
        /dev/nbd0  /dev/nbd1  /dev/nbd10  /dev/nbd11  /dev/nbd12  /dev/nbd13  /dev/nbd14  /dev/nbd15  /dev/nbd2  /dev/nbd3  /dev/nbd4  /dev/nbd5  /dev/nbd6  /dev/nbd7  /dev/nbd8  /dev/nbd9
        
      • 先挂载硬盘到nbd设备上,这里用的是nbd0,可以根据自己的需要进行更改

        feng@pve:~/work$ sudo qemu-nbd -c /dev/nbd0 /var/lib/vz/images/103/vm-103-disk-0.qcow2
        
    • 挂载好的虚硬盘有两种方式将UNRAID安装文件写入

      • 方式1:使用IMG镜像写入

        • 使用dd命令将URAID.img写入到挂载的设备里

          root@pve:~# dd if=/var/lib/vz/template/UNRAID.img of=/dev/nbd0
          
        • 查看写入的后的结果

          root@pve:~# mount /dev/nbd0 /mnt/UNRAID/
          root@pve:~# ls /mnt/UNRAID/
          bzfirmware  bzfirmware.sha256  bzImage  bzimage.sha256  bzmodules  bzmodules.sha256  bzroot  bzroot-gui  bzroot-gui.sha256  bzroot.sha256  changes.txt  config  EFI  license.txt  make_bootable.bat  make_bootable_linux  make_bootable_mac  memtest  syslinux
          
      • 方式2:格式化后挂载

        • 然后格式化设备格式,注意这里仍然只能选择vfat,否则无法启动

          feng@pve:~/work$ sudo mkfs.vfat -F 32 /dev/nbd0
          mkfs.fat 4.2 (2021-01-31)
          
        • 挂载格式化后的硬盘

          feng@pve:~/work$ sudo mount /dev/nbd0 /mnt/UNRAID/
          
        • 将UNRAID的内容复制进去

          feng@pve:~/work$ sudo cp -rf UNRAID/* /mnt/UNRAID/
          feng@pve:~/work$ ls /mnt/UNRAID/
          bzfirmware  bzfirmware.sha256  bzImage  bzimage.sha256  bzmodules  bzmodules.sha256  bzroot  bzroot-gui  bzroot-gui.sha256  bzroot.sha256  changes.txt  config  EFI  license.txt  make_bootable.bat  make_bootable_linux  make_bootable_mac  memtest  syslinux
          
    • 设置磁盘的label

      feng@pve:~/work$ sudo dosfslabel /dev/nbd0 UNRAID
      feng@pve:~/work$ sudo dosfslabel /dev/nbd0
      UNRAID
      
    • 卸载设备:

      feng@pve:~/work$ sudo umount /mnt/UNRAID
      feng@pve:~/work$ sudo qemu-nbd -d /dev/nbd0
      

4. 启动URAID

  • 方式1:使用plopkexec启动

    • PlopKexec - Download下载plopKexec,然后解压,找到里面的ISO文件,在PVE点击local>ISO Images,选择上传,如果没有删除local-lvm也可以上传到local-lvm,哪里空间足,上传到哪

    • 找到刚刚创建的虚拟机,注意使用plopKexec启动的时候,只能使用BIOS模式启动(不知道plopKexec是否有efi启动方式-_-),所以需要将BIOS改成SEASBIOS

       

    • 点击Hardware>Add,添加一个CD/DVD磁盘驱动器,找到刚刚上传的plopKexec文件,点击确定

  • 点击Options>Boot Order修改启动顺序,取消net,然后将plopKexec调到第一个,UNRAID的安装盘为第二个,取消net启动

  • 设置完成后点击启动,即可

  • 方式2:使用UEFI启动

    • 将BIOS设置为OVMF,然后点击启动即可

       

    • 启动界面

       

    • 启动完成

5. 参考文档及资源

6. 懒人专用:使用上面的虚拟磁盘文件直接启动

  • 按照上面的流程,创建一台不带硬盘的虚拟机,点击Hardware->Add->Hard Disk,随便建立一个硬盘

    • 选中硬盘点击Detech

       

    • 将下载的可启动硬盘文件上传到PVE,假设地址为/root/,将其名字修改上面创建的虚拟硬盘的名字,比如这里为vm-104-disk-0,所以最后虚拟硬盘的名字为vm-104-disk-0.qcow2

    • 将修改号名字的文件替换掉刚刚创建的虚拟机的磁盘文件,比如虚拟机的id为104,则执行

      root@pve:~# rm -f /var/lib/vz/images/104/*
      root@pve:~# cp vm-104-disk-0.qcow2 /var/lib/vz/images/104/
      
    • 点击然后重新双击刚刚Detech的虚拟机硬盘,进行配置

       

    • 调整虚拟机的Boot Order以及Bios为OVMF即可启动

7. 变更日志

  • 2022/6/27 创建
  • 2022/6/28 由于不分区会导致启动盘的容量太小,所以增加创建img镜像时同步创建分区,不分区直接写入仍然可行

日记本

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐