How-to: Install and run BlissOS (Android-x86) with bhyve

Hello folks! :)
In this tutorial I'll show you how to install and run BlissOS (an Android-x86 based OS) with bhyve.

Table of contents
  • Reasoning
  • Requirements
  • Software used
  • Installation
  • Post-install steps
    • Setup a new installation
    • Migrate a VirtualBox VM
  • Conclusion

PART 1
  • Reasoning
Even if Android (in its x86-64 port) is supported by bhyve and it's simple to boot a live Android-x86 OS with bhyve, there are some details worthy of attention when installing it. That's why I'm writing this how-to, since I didn't find a unique source to address them entirely.​
  • Requirements
First of all, your PC should support bhyve: check the wiki page for more informations.​
Then you need to download the iso of the version you want to install. From BlissOS site you can choose which one download. I'll use Bliss OS 15.9.x (x86_64-v2) with GApps in this tutorial because it's the newest that is not in beta stage.​
  • Software used
I used sysutils/vm-bhyve as my VM manager, and net/tigervnc-viewer as VNC client.​
  • Preliminary steps
If this is the first time you use vm-bhyve, there are some preliminary steps to enable and configure it. Let's start by enabling it (and bhyve support too) in /etc/rc.conf:​
Code:
vm_enable="YES"
vm_dir="<path to the directory/ZVOL which will host your VMs>"
vmm_load="YES"
This will set things up for vm-bhyve: needed directories will be created and required kernel modules will be loaded.​
Code:
# vm init
Now it's time to configure a virtual switch that will let the associated VMs to connect to the internet. And here we have two choices:​
  1. Bridge
  2. NAT
By default, bridging is used, BUT it won't work if your computer use a wireless interface. In that case NAT is required.​
We'll start by showing the bridge-based setup:​
Code:
# vm create switch public
# vm switch add public <your interface name>
Here we created a new virtual switch named public, and assigned an interface to it. You can create as much virtual switch you want, and name them as you please. It's just up to how you want things to be organized.​
Now let's see how to configure NAT: here things are more complex, since to use NAT we have to enable the host to act as a gateway, and a firewall will be responsible for the NAT itself. The wiki have instructions for both static IP configuration and for DHCP; I'll report here the steps described to set things up with a static IP address and using PF as firewall, since is what I use. To configure DHCP instead, you can check the wiki page. If you prefer another firewall and/or program for DHCP you will have to adapt the wiki instructions.​
Now, let's enable the host to act as a gateway and PF in /etc/rc.conf
Code:
gateway_enable="YES"
pf_enable="YES"
We create a rule for NAT in /etc/pf.conf and one to permit traffic from the VMs to the internet; I choose the described 192.168.8.x network for my VM:​
Code:
nat on <interface name> from {192.168.8.0/24} to any -> (<interface name>)
pass in quick from {192.168.8.0/24} to any

Now, if you don't want to reboot, enable IP forwarding and PF this way:​
Code:
# sysctl net.inet.ip.forwarding=1
# service pf start
Note: net.inet.ip.forwarding will be enabled automatically on the next boot because we enabled the gateway functionalities; there is no need to put it in /etc/sysctl.conf
Very well, now that the host is ready for NAT, let's setup vm-bhyve:​
Code:
# vm switch create -a 192.168.8.1/24 public     <-- if creating a new switch
# vm switch address public 192.168.8.1/24       <-- if you already have a switch you want to use
# vm switch list
NAME    TYPE      IDENT  ADDRESS         PRIVATE  MTU  VLAN  PORTS
public  standard  -      192.168.8.1/24  no       -    -     -

Done! We can now start the installation process!​
  • Installation
First of all, let's create a new VM. I didn't use a specific template, just the default one. We'll modify it immediately afterwards.​
Code:
# vm create BlissOS
# vm configure BlissOS
And this is how my BlissOS.conf looks like:​
Code:
loader="uefi"
cpu=2
memory=4096M
network0_type="virtio-net"
network0_switch="public"
disk0_type="virtio-blk"
disk0_name="disk0.img"
uuid="<Here will be the unique id of your VM>"
network0_mac="<Here will be the MAC address of the VM network interface>"
graphics="yes"
graphics_port="5900"
graphics_res="<Put your VM resolution here (don't chose a resolution smaller than 640x480)>"
graphics_wait="yes"
xhci_mouse="yes"
bhyve_options="-s 10,hda,play=/dev/dsp,rec=/dev/dsp"
Now that the VM is ready installation can begin: let's boot this thing!​
Code:
# vm install BlissOS <path to the iso image file>
$ vncviewer 0:5900
Here the bootloader welcome us with the various boot options. What interest us is the 5th entry: "Installation":
ALs6j_FesjbX4MkrZk5xBfwsEyXSRebkphL5Kmstc6_0-doYRgxTwUQVqAGHIhegNtFsd8R6aFR6lBPaNqDIgxottx9waqT6PhDcI3xKBZZhjsQQ2N0anp13oz7f1r_PLZnfPqZGVoKbHMsvUaPERAiO6SS16zGnqCSK-szXBteh_beUcTkPDI6dq3wH8nkjdv_q-6NbM9InHkhjT1Tu12D7aMyEwt-4clTAF_KAH0Wn1h4jOLuvomTqxs7C1bj_jhOP9YNRS8fardQ_LSBZtHvmOLMrlGakE1H364-x3_iOFPvc3Wi1cC8vXvmy0ldrUau3Ke22I0pA4PuA0EdXR2mV0uLPmwKpSRHQ55c7ZEaU44QyWp04AIfUjJtUgoeWROQvqcKkciNXsgsOjykzdlETx9XmK95ImedRqv-_IdA621rFDQdq4a2MOhh_TMSitJeUabjaIVJnUE3qeRJv0p6cckgNBihWLmZ4LylIwro0s7ByspEbjWs7xoySOPTETWcOpYGGAM3JYHKElhGVc5ZBNwSLZVYauLHU-qUmsKJaOMHTY0w6aJV3d6VCjC6c4A800GOw0oh6mfhS0RVUsEok9-NM94UfVsjmw8pv8RAJ_NrME_TN7PZ-FehQ499r63_PjW8WOxOuvws0uFc6rzAoTiswzk06iv4tYJa-WdnTeVnz7UNfUrST0V7OUJcuXI7ivZNNPil7v5mgF_8z7VDnzWb4V8PY3gsW0jn11U8vVlx6nh0ZC7kV97FJqndwGtaPhRvp0TZv5sq7dlwxCPsjpil1BqMVdjrZXRsjxYWMOtceZHCmlNSNYv7nspmVRdKfpWs3SVnCcyBnk0LIoAR5RVlWqC3binF7Zs_JSyeFCT-cb1vQbekxwZMRGbiSBYn90Jb3ZnhITj9qm-BMpsDxS2x5JHBh1lraNLwUNPO83TzEQGQ1U4ZA8dyBzVOQvdQHts4jOzt_cFcFXNMglUkGbC_Hjf4jxr1q5jS2KckuWMhWgUav6hm12k8I7M0S4LMc0cT7ylkdoN0AlZ9l5NOihPi54FmSI-hF4YKG9B1uNPBeiFvoJPdqOrRjLjI42rWDuFcBXsrWp7ksm-PCjgRtX-APyN-Z0b1aMPiyy4kfVE7-GIHltY4pfZR8ZGVDS7vHVJWq4HzGPyFtdDtct99vrC9yVBn34P-OiCgBAIOt99bzG5LcDUWV-dFnFEmY7JnqNrdz6OBx9oOARv4KoqWKyr3m4CHEfISvO9QqOMZiwa372Vtm9kp9v2ftlt00c9kbXUBvs3GqkEkcvW2eyPrGLHestzcisoUo1B9jkCHcq_SbqXaws4x6ZPWs5ooKo_CT9W8IFwRy1lKl0FjEcqJgUvPKKl70h1l4-QQ9Vkp1FVfeScPvVfgVsdADi7Vh4pU3j_jj8BV-jsT5_8UQLZasQoDD0IKKsQP3m6xZHNdOspZwFanZzkV98XodwPhQ0TETUNEXrhkThawQbj_5LtFPRJ2qhbnuCPkQPbhzMScGT9amEnHUvUqH92BEZLY5eiGnl81t4T8VjlMhHmiuIXUeoU7SHOlKHbj8R_IXLZjI8D54jqAGtfvjW_x1Hfefe8slhdbg7ZO7I_laMTGBKg=w1600-h818


However, we can't boot that entry directly: we must edit it.
ALs6j_FlS0K1VEGTeg6tRih7iBEpQW_Nl4TE85tPsKlv554uQV5X-M1HqnXY6xaIqsrXYZfapbuNdzlfg1MV-CFlhi4HcryIC9ry9vZqSkw4QO_V4HDEYRaodYEdk9FuWsCUt2WMVLDX6LCgP3eHN3T1SDup_PXsgpQ9J7LIAnK-lHI9I88QynNWE1EateP2R4nKq8od9-VGB9V-GuloEIlckB09KIvd10W3EdPxu1JK2UZAoX3pO1AYDP5REUa9AC1qY0xdsuEEoM0MGlQO6hVyuUaWhJt0OpTS6-E8MowNhoYnlgZFyBCdc2y0QBrSnXAhiTuMWqGdOGJzGqaQ7cidBytussAvYB1n87bEHlBv-5153la1o1YkoIz_YtyXHmpSQKcswG2TkQTFQ6Kel2it6D2k4ixsVNM2wk5ewqsAUBzFBUpii_1FrW4sJ92pxLMPBG99Bxc0TE1Gj5o1GBbzykz6eimPwF6hgMyWgvYpZvdbcIf9vaW4flcfxauJtrrIuIa34-U63HnJRe8_I1wA_soGGJPo66hYedrFpFrLGtbX3-3E59mYVS1lxjoZ6ueDbJiqIEnAuRII8ZReYkAdOicWHdu1sk0B0H08SS6Yv8o4TJscRzc0VL3FI2vSrWyi1obTxgDM5AamPXwrlVA9ZkyAOUwcZtSiUciEA2vRQC09PjV1KkwW7I6Nv6hlHogVaKJN2eg0JAGHEnBDmNgOwNWo0vBiyLDSAV3O7oPqJqiAZ3MO6LL9XL1yV8BqRrDNFhtjlHINmI8CaRm4VQoO_Mz27LkA6sL66FihzRfZhVmuVxZ8XlWBPjj49fglmyEWK2M425BOdR0KtoTM3Sd463xTOnrWfvPax0Y-wFQCz2V6QzdIYMSUrB0wdAuAIaJvvlCE6foeZ36W6Zp1wu8PLcdiVH9T1EvHtTnFrG89vbNHO-ig8B3sTVMkGNPsxamXv-7z2qx-moD2iVDDY3gBFHYvYVzREZ6kClcUxCjeOW0-FuJ0749w7xaMTT351KUpn99e_qrfFotv5X9TZpnrT5gBziJ4_-jCJtoDm0bLtBN6osM1yS3dhQi-c3sGgB6i-Y3iNxMjdX3SyFQOm_-t4-aj5qhZYgY1wrTLr0Jr5p6311VAmVew8LV8KGKs0ZK1Dbh0zxhez7uQjvp40BMhyOnNGrlsCyYY5ei5gcMOEmdxu53ZSTq9uZFRPk7LFcVVcHYCKo04MEjjtyKUuH8S5MK4zQmDzGCJ3mtfPZvruFhFL0qlwDjRHJ4r3LO-TdJqCVzWMcVEZ3lFxx_2n_FbRVS2qhE3o-aFUXowkP7u_FVowq11BsEne-RkzJ6ozbLPUqTJbPqYtU2AMkCBaX3OLvIiq59cobOUmMG24DBFrzNtL7dMjlWvsiHVZB2eHWMEuj5-4ABjH3frO5U9irBtx4d_24aBvmREdiMM_oVcImOjdyTGXVt8MbcvkHwZFb2qN25Cko0Rq5Ll105TT4iarIgiZy_RrCTRFqcdgXPL5EA4bZ0i4TGOqs-LCyhpKKCFIenTdZCd_CWJ4ewGWMRLMiUdpHei7vMiPcOBU9NU8Z8E0zE9tFhWolyL80Jwr8QOvC8LkU1AasEOez4tMw=w1600-h818


We must add two options to the setparams line: nomodeset and VIRT_WIFI=1
ALs6j_GSmD9n5P-WBTvQwf0n4abUeQruHre-WsBNnSXLrYbJNFoaS6Xeku79Zzu7i0lhtbe5IlkuHMsbas0CJm37mJLmLgxING8y_b35VsTYpGX7uqIS6fP0rT7z9jDN7nc1dA4cbsFndMLZHG5tii8Mcmqs8JrlzWAS1aPQfNr8jDr6y4AEZ9TgecYTY_YRUctms9aWNvBu-NN07g485VPBDbhq_NbkEFfur4DplXvostfgCOtMN1UiFtVQEPPhfm-EEq7AXgIMcqydqQu85AYhRPlbQjNFH5NsyRnQlsRwEvavlDYPLL8cGhSLEhOoKYxPjV6KoqFA8FjtczrSL8ICfW4vNGmp0vHsovO4PwH4XD54GEHZv5Wc8taJzxvjls6rItCWX_tyB8gxTHmhh4h1bn57bGEzh5-d8fGD5YWFzdLMGLUaqLYBVgbvMw6mBpm9LDZyWv_bY0q2YoBIPRpGyNnCzPyGJh6oxk3D6gPQeD0eqDgcSh-_xcs0NgpFU1WsMutYDDFNak0XPRmQyXPxcyeNM_KdtkfudJ_6rAEQKZiVPBPTXWf5tZCvaz1PSku-GWNqQtoWvB38rGTQxEj72sYQfJgvxIJVVHcba_HuDagfhFuZ_xWNF4E3Ru5gE6AemaGi2uUUO4jZhbdgafmOyDfbFIImI4ysVc1CBsNVRKhIAooxtK31pMqxB_BhRM_4j5crx6SrbEUMkrzk2nzccdClM60s2L8IvavyIeU5GND4JJNAhiSf0GAPF-JvSpevra5CyVljSRit0oQOjZYcb5ljLJv00ohk358_r3UyeBTu9uzoPTR0bih0SuLi1rbFKedW1zh1MNs9SAJDEt0VoKeJx49o30PQuoDv0BmvuwLkW9OQUAxAPoVS2h288U-ZeMqkTj3BRNnrmVr5v4UAZ-vEdCJCNEGlkzzNms_dMaSJ6iRxuQtYTESt_-afNIFvlRWlImS80YXXI-Nv1rzjDNrqZK5cs8JOIgcH7RArkxmN-B-BNmLC-AniO-7qEJz4row5FnQzUeE5vsNIqR4HCNL6ZlYWbDQxD_hxDJMZ_JfqmMFVKkYV2BfZ96knKhbWeAMVokjTmk2CQi_aWOTMOPQLHSzJbOrYubmhGSJbNaCVoJzK-_oHU6SPUnoh7CV78wYGFefR5ebEL_g3NXqrnVc6JBWTRsGiDh_HPGluSOdo6cYcZPrMR1ZCkB3B3SE5C7YWqj3Px9hZm5FfrVDyWNk7VVXQzW83Nylaa6b4fxx-0Xn032Ij6k9uModRTTxmVVadAlg6uGNXgQUW07gLOUkebCf4HoT1Jv41LHc7bhxweiV419KofBK2xHRyrylsp-5-KlFPTPKRiCySv2tv1pViRoSL33Y3-C4hLv_2INjmUbT3ukkqoc4LANPcRMAV8bk2K4Etq6YvZcgCBbUe0cCYeaeePJoRs4OPG1fXDNbRrwmgKjDaUubXD20jJxW7DnQg4N3af9AzZzEwbw9FFbpsIWnMuS4cYhW0VJ5tivxjg13cEY8aw_eEP1SaijN8i0LTYnA1SvsK3Ej8_BT_Uwh1YGyWJwW19Z1Ge0H1wMofgK9zSyJimZPvyE9xnHV-ojlhmXoN40d1EAvC2A=w1600-h818


This options will be automatically added to the GRUB entries when the OS will be installed; we won't need to add them manually.
This is how the boot process looks like:
ALs6j_HPz-R6NGiOKhz3Wt9bFB19i0v1q7lUr196mrESZzy16HXFf-B6B8e0I89vSHeXJL_uO72OIaq1w4cgb_g46riMXrVnARVZX2uPJY4WtjCnnO8zryUvnV8ushaliTK23xTxTSV911merzNBH5r5gBK-eQHM67mgCPtWEA99OgbwL-g9ptMvt9UG-rty4r4T8aKXJ-KbhLM0_9wyhvvzHaXGzhe8HApUTBb_8itIXvj6_OlE9F6MsxJEJIeKGbX2ReWkr1kJbaYg-YFhWWBhrn7ddpI0ptSMB8DcpFad-plig0DbWHFiIqa-2u2E0ADqICl0pYG07rU8pA0JJHq-khMGtJ06gIECNTuRUtfdlo4UxVXGcirBT8fkEVI-X41mmrmi6x4tgwvjxqeNLSvVCBgOuJP0AktQXwJCVF-Wp83X3cDh0ObomRwGwl8N_Xa1Il9Xakm9br3KukhpjMDvSqtUO3z6QI32IUexfyjcuDkOEThkUnOL03Nl93yHJTRC18uVWFSWi3K-JjZ6NUcrVn-GlX1u-mWIH4d_P485SqJemw-yMh9QF6mVBtK6nEI_-lMP32ZXkKkWuVMzyWjiPLed1umIyAAv74nqrpGfX2JeWw6Jzmw1F37s3IXA7VGLL3EaHWjmtbXMtp2vFljKkONTs2b9M_jbzIWeejlg4WApVXvcoNO7rdYJzhWDbiowNb68Ta5DTKNyymK-0IevZPJm0WgfbPAQBfdMcGpb89v_9KPgd39gAc41-fOeqaL0UnG5AasnuAKPJzyB1axxf6w5ai5GMirIbD3NUc2F9UR_8-er-Tr2fFc35a3qbUDRivYVUQfHlfWVQjA-YMEyV-zGPgcFH8g6vjeu4NQI79X9gOmKCV-Tq1sjnXPXnCJMudPaaTgfaXRkhC-vP5KU2KTqvYypPXAEzwTSclRElAvyChHxYtlC8IQJCPRDVbq_TLiaCF7jeoEUNVdTM_oEgeSsBeMZx7SIg5HXLjqxwZcIK1Q6Lhqrtn8EKv54WheBz-NKi9GmAz5EsQPr2qFu2hWQyt-iSibgYOOxLVXpt-jZfMkQylmHLy1kGNgL5ocmmQ8_rB9G_rTrwkoasxJQcQsi1zIT7WRqg-nQcJi3G21U2om7Qj1zgPe2huKcCvEYIzJY3YKmWr2nTSRjkh17rutN3kE-CmBINkls3cVXxxmGAqsvKzwp5dw-9_QJG_H9Q8hGi9xTuniFHSW27es1M0ABl04qxW4FZ7mGeSZacK-tU0JbUY8W2CHrJb0ZXk6M7n9KU6281ymIDgbRrYH5Dw_YFvpnu5-HrqCrPi2j_JrZ9QFIFJt_o9RdenyqXzlk8QYkFRY7r-Hil98GrSb-Tm5umFVp1KhjYIdEcb0Eg5vF6_DmgxelB7xZI0ixCEIIQmWG5cJj2zDo7IXOBc1MxNqSLMwdgVwgD27QQwWDcNK73B7y-crNgTx-K0gMhmwNyULX0-7Y8ENJlOea0Hn24TjpoQ8MbX5PWLPr3IZLuD8ZrjFwHBPwHVS3KX7NQUjumKvkxGY8_gmCL6hi7QjNK0yUWUeTo3GzgfcMzC6UtZfFh4IbOF7GDGSI33dEVHsaabDg8Q_99HvjsYCPmw=w1600-h818


It'll take some time detecting the hardware, then the installer will start:
ALs6j_GRrrpwtNyfSnKEzy3xE1sGb-wcPknDGEdI0U6FzuZBLd6tQVcjpoojASgrmXJGkSGe98afModdAnEXZvDJjsCFJVUFQ-NETjwEBMnRIE5hiKT2rBZL_YFhqCrDHRS8GSD1p6JqDPq2TSnd6fthJrB-BOk2Cajvm1ndtqHgM0ReWzDm0ODrJLk-Tm4Y4rXSTsTVZ70MVffs_JIVzlsUdPMZlpBc_7K4qL9JymMqV5Bhz5cNtgPJj9ZJMx2rX2k6bZwjbyIQ19qungrLKQbkQWL5Yo_zg2aXtMzYQJQk6Wt1osyqwAZYrRyiPsscecLASBzkLs9UOnRN12FZUdzJitFVqUUYr785RKqTu-K9ecOgWyEQktt66UpfuGizRPap--MoiQU3n5UaLTddo-lvomblZPEJGv0_PUURdNzn3xwFey7ryvNsFBfkkmOhEovuZ97Y_jtw-m6-w48-Y4G8iSoLgIQLIPi6RJAe0XXuZ1uZ6WmKRXnquoAT5GwR4nIlzCCLcOR68jpBeq4eWSVe0QX4xV6l-jowtyAhubu_qVDDqZL1e4i7_zNi0ZlhMjcDuM4s2KCpS2mLwZf0N4-pLFLLm-6MIL-1bMnAkH_fjykCX43ybcutyNzPiCQOewh305MNw0DII49ULV4AqEQRkrkky8ZTobB3XI8nK97cI57Qj0A3EkQkLA8FAol0nenpKvQ7CvntDfUR1AuSqJMi_2iK4gcc7_j8PX43xFwc4Rwn8mipXgU3y5mtMNm6Ht9ah70oM_DbBpsBnSqQ-AJQlwVg9MYC7vkQaPpUmwqy-Ktd9ZItAygG6CuESURZezlyWNnmWWqPLECMs5C7TTwHbGKfC7Ieqyev-yJdFFbLT0Vx5GTYV2N7R4PdJNB6eqEzuMgpLUmsEs26KxKhJ1987V9uZrGh9c1UJHA3Mh3tHASvJ30AqU2YtC4VJG-Rlmfv7RS7ywMbhDTzw-BBOHLFkl6gOuRKR5IdRz5oMqaIULKHPfCReGCYy2r66FgWtIJZ6OJrGcaL4r2LYyK78B5tfKEO0Z0sS0ud3kMUrFN5kmcpHXrljK0IxQcJMHsr1092WeQ8bmPQupYBZ4K_pHjTFlocg4WdoIh-GC8TsyX3Ao3IlqRUW1exb9TU6aRtdG8VBgMfsDSbyUsOLI1g43qHDV-yhBrid4xAzAr_MxEvYvzPvaqDcIDsV9CV9GXpzmnJFF-Jg9OyqQV6LuNQkxjZM2yTkXm4uCS59t0EINz9BAH0ba6pRcLujfUsMBsa0oYdFWzwaKp5ZrO3oBn71ueNrxf_mvJHIe-F3EnYK37_ea0Vz5DB_CVA1XHO9_Azqi3FQR1v-rpAaeViTLLAaNHUikz2GAOGkksWqcumWnq20fNLYR5wt4_aH1rSxrC15B38bPIacH5-QsvCVr_bD71knZyRpPVzYGN4UlKlqSMoN2znVJNGtaFctft0VbL1Ck5YUN9NycIE3ZiESNKloHrvNWrdPE_VPHMGYggg6UN26y7al49kTM30Zqsh4hHFh4CVatMfAHSDlJiy_Om-p-Heanvbw8g6cmJqYrz4TU0nBeQSoBZsAwDDyTzUAgxQUawYG4C1HjiQc5kxnkfXRw=w1600-h818
 
PART 2
Here we are informed that the system used (the VM) uses UEFI, and that we need to select an EFI partition. However the drive is still empty:
AKGpihahgu1IDOY_Fbw7aVQDbP5MPtRy_2SE3EZGMRbKZ09BcNga8ScLCk3EipXU1m5jUjsiBlvla_uxaxVOOFzKw5wMvfZejE4FNB8=w1600-h818-v0

Now let's create the partitioning scheme and the EFI and system partitions. Choose cgdisk for the task.
AKGpihaSKnqd4tuAWFyfwyZfsKrCVXOAeu365KNdieCCIlBaVfSyrZRDyL1KbRgyLehAkSkoFWnBnUtCi0s9R0DOYcJpfazQkBfTB2g=w1600-h818-v0

Just ignore the warning, since we know that the virtual disk is still empty:
ALs6j_GQTaRLMWadqmmWsNKqKZBPO10y44b2oTSOcw5DpWsBZVGX8GmLHi4CMtiVKeHxIDAIH0EOBAVQy-J3474qblzV6FS1UTUxS8azjWyNVvzjO0IWqKreNoiosIL9orTDGfknc_qyDAYKnGtahbtcgV1aleU98ZsN7yS0kpjtJo0JB6QIwwpY36tQklbVNbD1mdELXPZxmWpSrOB8tCTA4D2VgytOFLp3dpK-NtMOkF0io1aMuFS21NLHm47rM-xeRs_4vnyDjL63WxG4Nvhdja4p7qk2PxEv-__7MFbWgiKMTU1LMrEEq6Z7S04hpov0SPkgcIizLv5wEEu2fkH8RpW5YFS854JhBqb0UBwOB_CNjwrx6os8RrO1CizX0htn_FNMP73oS5DLj_saPc-LMjw0FxRti9BngVHtYqbZ-J4adyQyoc0UomsR8G4A8ALKi7IuN2y1kv-GeFpj670nz4DTiN7taSCnn7pMbZ8ozywuyQEAfaJ0PmI_Lgncw-fpWdgEOmp46FoSDM-dnoYHdlEJbWvQZFBAHI-pp3zwgGRlIihYdF2m4O1X_gMFvYrwi7WaZTK5lo42sNgN6644z1yhgwI5YcrPUuHiiFhTeTKv9Yvx9ograMaXYc0p7g2IajujPCEPQdkjakaRY_O8SNmsUulwB0zRq38bzE3qTCJBMTXdyF663iURItHqmctIOgbo-d0efNo6UTGmfUq83HnD5pb3cKfcZmnZwWDcK_Y61tojhlWrsOvamzsffsEYy35NE4JUQudnBLskuLJUmcKHmQoXqcMfUpCHa7OChPPsZeEghQy4i9PmlZvCJFJdDqESTNdpPBEKS8fBmuVb1VxzdOncO2fyMbxZlL1j153fXpA-snpZRrR9mXp2zkwLJcEc7ssxHi7RC_v1BSl83LvrjTAaV98MZ5U26fVJ45TwuODlreU-rruwTzz-w6mNt6aXXX1VMegCt-uwvqSSK4UNFNfy_SPCeQD7XWijSZPnwmcmS2Vhaw-dyS92pIC986xr3oIpDp1c_RPnEuvDXGsozucUsSwtxLTuLU0A4PTOAMQ4_e_-iRuysXtK55dtbi0kIINmZ5i5lQiFG-JzK40quGJHfuLoCm532rsBjGl2Bf5DIW--hervEcrZ79qmlphLnXYrmNTQI7kqxI1TMvnkVjxOlPmUwRQWXs3gDcfXNIYVKdJiaNNmIU1mPaULz5ClBAHPLGJfIefC58UskyDvCw1-1oywDcN4dV7_Di5cDPaEGn62pI18y_Kjt8ULYp2koavJ4_NRidh_WSnsgnEYf1qtXvm6uJG6TrJYorzPBPvMRGhVQNNtFBfdawB0Rj8Rcl4RS4gccVs3YSXI9U9-zZivgi0x4q8kNGDm7D49xLibv3DRwYtFvZbch2P3AIYO4UZk5NV5qEJfsd1ZFLydt0yX3mQ0JNwYDBLnkhMvSEUXulOWmbXASyZQAhpBJDzwV-hyj67DqAQtCD_0bSZfu2sur-ydA3E0OwLOPWxb4_STNeyrBbMkOiDXh-xhPIch02SrfS9pgZloq2cK9i6wQ-hPiJUWG8V03iYVLyOBy3se5RN2Y175ulijkS9IfPmyVaifdm3VqtAaxA=w1600-h818

We'll use GPT as partitioning scheme:
ALs6j_H-sS5jINlkSyrhq-5cBQEPUfufJ2XyhqL0IHqZCFWDwQ-0kEYh0XfJJbRgZz-V3bccL0KDNvBUgY6AWjZk5cyHHO4VOx3WhRbFWePnbMpL2Azlj_62EFEOzsE_zAzvNES0bIu7tq1o_xnbIlNLE36I-Y6a5AiLz4z1KhyBYqiXVHrRu04Fwn_vcy7bVhnjDZM9RdWwz3sfOBovrCz8QrLVrlvuMzSNiFdpDWLlgiKhGWmDcCl59TKu79cjMAET0kkofNGbFpZHuFrzsuH2F5iY9j5RCLOJI6ZljxLK2hnZUkjpf4Hxk92ILay0ayl5UspgbNM2VhdFmaXrTCnIMcPbnvILs5l4DCv-BKmP78aZepVgAKqmoeMFJ75bq0xcruELwDav5OILs4zSi5CgcrQkwiJd7L3_CDvZPIWyRUITzDYjuEUUqjtarnQk2FGaYfwOpGv7OkMO2RNwzm354i-V-7PPIiioiU7OEoCvtiHaAaPbXrGoyY7bQOtq4Z2RAPyLRRi9UqrtX_MmNy0BdbU4ao6ZkP788xwu7IYXeQA4rafXrJhA8zy1rT4oG3I-UeOEw7bqZswX_yqzaNxDogVviNXUXXZAVG6Z5N0kHBgvj5ZURKbq6eJPcRJyexyAOtD-wnDql8smBB_5dxxWfAsEcU5jXv0WbM3UQQLuRFHIH82TQuGb-XZ9AVbO8-UibleOAhi8HItiqRikcPEsAUq9BBpw5D68NCkAdOw4r2RoRFMH4KH0UtqbvGJjdYYE05e9UvOpGIQdgDe3ipKZsCNuqS1OjpiAH4f62f5OLw4TWlEXQJ2JafxWj2KMvvlcKwTZnEHz-xkkT-WxfceyHmMF9wlsfyEIzTaUxkJ3wbahpmqsaZcDTKIZPa1vjwd6tQvZ0P4ACb1fslU_K0gQnfaYv_cByI2aPAD-jhv-p4jPlah9ZC0wrnGbA4ZwiXa0z1mmLGmfblZzEvPrce84nWATKFAuTvEFHNuz2fwvBPlrpxHhcVdik4HidHTRZXifsObq6ekiacfaAC1ekYlt-lkf39P-1E3C0ft6vQW3ol_2ozrMvvnHflCoQXMX_G3a9Re6w6QVArh6qRmC8nJzmpkOvC6b982VMEKQaOigI7RPv-pZROB2vBE3M5T0BU8jAyi9lP2qbmQWhX49BzOfU9DR-ny6R8ZrYmfkyScblvdIJdiREsa6ZTUUeQ5dYz6A9tVQGD5YfdNehpXUwFB3fwoThF2OvWI710_5FfgCE3lHTrAiGOvgiGUPk5I6dqu1H-a7Bcd7nVUscYsEZEG9sCVFcJG7C-pkyIqMiPE3OBX22V8AQ7sEYCh1AULQqx3AdBFleM2925530bPuheC9hhbUldMqKnOm4Qzti3uR4gvb-QedtSJR1Nzy-h6G9WDcKHP4ME3WhbTtoDslvvrPjyzkavanFxFrwG79xO77oAZXtBMeK-EPqh3EWxFfZzmsLydoKN7U-3XI0XnYz-nAxxoxYYq9CeqoVR7y7-z1scA_W5GOgP2NdLjOBoL402SA4TDy_88ENUYeM6zbGA57ngLApWdrqPsdefYDmPgcId6y6dzeJ2YGM2z93qstDFn9zUa7VlXvDZkPHYA=w1600-h818

Now let's add the EFI partition first: choose [New] and accept the default alignement. As for the size, I choose 100M, then ef00 as partition type. If you want you can add a name to the partition. I named it EFI.
ALs6j_G2Ol3nmf3x6SosC2wdN2w8kn8PDP8rTjM7evMS9NvwUWgZTeaj3_3DsOe-oHB2J4xEVJmLLcWKDDiUWXtjJlwSODDGVAKw-crHT5FfBD_TpLBppxFysAIFbhCwnQ_lEhDFFb2W7GErkj4RViC4HT5QXsH1Ef4pNlvShQvPp8br_pk10qxUOmm0Z8KtP5enI_clG3WbyQFFKd2Teu2scPR91x7uwblUETG0MjHOFIZg9pzF0Er0FR0YkY4idliniFD6nthenp3kYWjJz3T1KVpI5wJ4DgVBb8M8XIfDymjOTcvOG71AR5JIRCG8V3Vy5E_UEc8KI8pbzUm7GB7G-OJqbwr3BzT1IoXNcHruVzRZ4N-GgAHh_cVoBagOkYKx4Vs_o9rnTLhB039jdPjxaF5JdvfuyRGpIje6WeNM6nd7YdT_dSiVPI2uczqQVqmuYA_tFzflrNbgE8RS1DAnVhDuR9HKwah5qFy65iR2VCSVOraftImpfDauA82Od-9QSyRZWH8QYj5anvaKewMlcz51jckSA3p2tNnE7l0Z0Ilt2B4wB9FCVZq-BhW_EgPeFYt0Sz3q1DYqyJ5Eg4ISPauMA1YUrg_G7cyu7LVJiHudoQoocPtr1KKUrTOXtPaiH79yEgHr-0yKUmfHBgeEQzRwvelKgZorGhrhOnswVxo429WZ71BcDN0dM_klcel1VfCORcpbhwOCJkrtYVgKwYb4SFzwvLrjL_ZzWMaSuECjbOySmUbc9D0Ymc5cWp3r892M5RrXsy8PHWNxLJYkQ77MVDbKRT9HdBUarW7zqV5HQTm8_o_IKgy8cXsbiwUX5Bwx8gxsheR84nFCPEus3lLk25zlgrYzltNgwOZ-H8pAyNXYVAWWOVT9UgBJjxoT6mygKuiYhkJhZG_KS6TB0Gah4ZNupaKnfin6I2pbcvnmONNpQSyG5AqI8_Y_vTywCo-4ogDBolriO7sogafZyHVUimYTFCGmwZUsPp97Oc3Hlmuz3tFIt2aw04zKSexzA9wPOUktWBgrHBULnvNtajpXwCdnZhEJ-bNMmWRFj-hJxu2eDNWzTM1Zf7bdB10Fl7KqlZy2fwoAnCut85GU1f-Ky2Y58ndTSW79XOE6x0sC1kvNgFuB8ZTfK9YQH7BWWdy0HimzilsEtfXWzxvdSszmSQHy0WmO1isPXTzcBudxsZl1eCivv_3lAYoR6bV2T86vu79VFkBf3oM7mhk13rxsn3uitStu69Mt5mck7ClMt1ObU48XB8NnaNmz5WZdzzaIHVdVFBFdaReGfxV-xpC5HhBWTcfD6VPweLDAxQjNtNC6yptiEC21V9IVVWWiuV3uS7ql8mV0zeH_LoQBQNWaSrT1zdgL2oS-ZD71AtPQTBse8TYYNXoj0wohAkA1ws3ygBLuYZQJcCVUk9oFj0_lQaiFWVF1ile5BzLXvAIoZ1kVKfeO2EB2TZpdmQpWnhULoZYbCAV8agOB5N3Em3lGgOeec1vcw5uEkCPCg77QHL5puXasgLCAXpOtcGRyjU8L5Fp5-Yv0nT5KEZSJB6nnJWfYIy9p65hhFHqzEJB6bjeRTkmiKbjSOVT1sCPYxyMApv687se3gVwYzw=w1600-h818
 
PART 3
It's time to create the system partition. Just add another partition, and accept all the defaults, this way all the remaining space will be used to create a partition for the system itself:
ALs6j_F7aCAFQ54CwVfjNBFGf44vbumwwR5uqHlVcjuZv2sMci9Y0ayT6C_AVU5rQb9c5sLALHP03nMuBuWHeevdPOg64OWJSx6htfjsmliKMQGlIOjz2SrtX2ZxGFxEnXapK6KhOwX5uJ0kk6VB9cJCSnXyLF4EYnvL6Z7Ic2jnAVZc_xcGWVdFIH5fiGQiJDE-qJHibi357LHB96bTMo9_s9xrxQmfhFI2pJGSw-Ya6YgFJG4cx2JjqWCc7Vda2yprvV9i7YKy4F3j_RYCMtqMdLmQfKs3W41og8AVfg5k31Yat0N9z1Yy6V-xhWBoWd3mw1dscS1OFGupmFU3Gd0ZpPbT0g13mi8lfBK_ygEMf5qWBIOroKjOPixaZ8wXHTotKOXnm6ZvlsiR2w8aBY7s_ZikAVStgq6bgNypZIozbKJooEPBG7-7LevASJTuSFrjIiZW8KSJtIH4fkiMrQh_Kbn-6ApN5lgdXBt-qNluWPE6OXRGUd2aU7Zq-_EyzJv15fmO-PhSYihkxqdduMEU_IIQiOEb2486JjJ1g-Z0g8cAS28gaqDbBansur_-qsjEHm9GqbhIGT666wHNKn5aBRA6afQG6C--hEjQQD_QX3DMUoE0q9mFl4cwPTQ6qGyfDLhZ-AfRr88nDF50a5NMuMeeDpqR4nFIPQklp5AXf_k_kfytOueVVarzHk90a_5Sfb5hNFIQAHsW9CEK4SsGyl4ISI_Lmi4xASgEYgdkrECVhYpMimkYcLRW3ZszMZhdZ1r44o19_a_jDDNDyymG9ZJT32ppdLYCNKGJkzUXb5AXIWp71IfJCfGQJGliNcQWl0ZRCswa5gR3iTEnLFTI_2Ky3rQs6oifSVJ0O2NDMSl_DgIEbLMiHI94yDCU3wlqnwn9iT2myf1ABOgBg36lvZgf5g93T3MUrkcAJ37_6RxhIY8W7--oOG1AbwTBP0RvyAoON0xPpQtAlckRuyOCU-m9IBE_67Cv8mAZtdKZDjak1dLuYFSphaJs4MB1jXfxYGpxAYhkz-TmqiHboL91kt1fv83vVcaB8ecnpZARJ7qFekmOXp3AxltpTtZrj3GoNjRSoA0OaqgqudLdTVrBt6RoRAD7c9GC0ZJ9sSV5qzE_aq1SGEcu9wF7Jd038575_tBmOAxgMv4CPDcy6YjTA0rZ-ucjNvcUUGPiZj4csBVIjUh-EPm-KIci2wyum30hZImOc1F7j1lz68qjXwYf0lVnexLMVe5e-O433OLe1ODwUbY3t9A0zWkbsEMNYyUBfV8NITntQZzasrAgv8PUi2nLvyc_-HzUi1drWcC97OkgByJKPpE6pPeTWQHIvDAvGfNeWXUC_PmSxbPQYvOUKCOE3SiTbEMzCZge2s8CcuOnfF3p3mKYBidqIY3LP4wsAXDR-TI7GSRGnxw49dJkl465E9SdLZ_D4-BPIK75elqhYFFqrEdcvF4ZaE2vIlQN6Bg7LaXAmL5j0LRnOi9GNEVQLrBtx7trG9HcTijR7upDWA3v9GvHwkq7A28vdWl_AAMFTKVdrMk7P1yBdzz1xM7t9qXbnPl1NzLw8deGmJkjDnDKP9h49MOmnhRYT-Gooug9KwDQtcdm3YrGhg=w1600-h818

Commit the changes writing the partition table to the disk, the installer then will restart itself.
Now, select vda1 as ESP:
ALs6j_ESwI5vhw4TgnSXMOVNgFWrdcFP6FuTy6a2TPjbWikNFL9O2dvyWeIngJmo14njiEHvpAtakzQ7U3s9cfiW0ikwrFuA5Lts1SKnnN4RrETn5C6fnBrO7FtYsKDZZVRQGhSzbdNXFa8KL9uBO-Q5B4s2ufQiu9NwxHN5W4QexgRQGr1Y8-8SSW00VcpNjiqpF0WzSgikzRNNU8UPPM_59jwyH7uDmvQjwfUQUjg3PQ1Vz9FoALui0vA_25bujY02vnvGbs4uQvVvYPAlcoJEqUoRc0FeKJZdPzuQH3prQJMGPJlPGRj8ufoe8kSZHpr6uFtQaf5U9qlRr5mmH01qgtKHCsv_688S30ABn3Qzdyw5PLgN_YTe70LBrowSVUDqJ4LCpjZ1K4QIPywv9u8iH-KJOeS52ZGncCjTNeE9sii2gS8RYKi4efJMXFJXSIa2BaViYvHnGD4AIGhEanyVMpWIyjXwaHpCNVfBqjaSf2-woAb8F_gXFN8xK3Bh-o3WLEuvyZpMQXrWiPYIl2mQbZMsKSCs3YNf_4xucSEJ5cpD7Gj1VOZ1-d4iOCEjIzMfpLZPXQcuM5TiRliTsCE_QQ4pWOic3osdLsX6SS4CFmxzHS31mDaSYUGQwJ4ALPMqiWaCXc3KUVI_fekLJM0t7dNbN0F5CdYH0wJyQbz8TtdGCQGPVo6BRKIQp7d8oBrZGfOwSs_deo0zXgDaeyOd2DVOCl7VgfkOVAEVtaW2mFeIzodn6lp2IQecRzH_OlzrzLNys6Og71ZiePCM2F6-nZn8Ti3Bb0OSw4eFllqMVE30aGbAXcST-OG2JP3wigb3DKc8VX1bfX_4IXQT13vu9SL5emZCMjiUTeYXzwTJ-iOPSO8ZHeZSwmhl_phyfc10d0Ar2O7IVIjo31BceJi185Svbcw-nte4uzGVa5g4trhMUV6XpiKLwr8amqqNcweHZZcU3PPeDn5Gb0YIn6EKM-tfOaajKftWlVNtFqB0xMUxVUzsM8UX_A9yKYO5Jc9yi7gR8eqwGOTcVit0cSnFnNPoLFNT8JwG0nE3UyJ0fc7Ya-fixjFNThxuPvpb7ZSx1NcyHkIWlsYKN6oqKU_q7JOosqzFfYNtC5qUMpGA_mCgy0zXm8dylfChdl9PXOt9x_VoxNg-irz_QsB3Tpwi590iNkamdGD7LMSuijmO9-L8F8Rk896n_hRjOWog2z3bDhhvrAKvWnJ5vFkpj7hAdWwU6Jdf2nwM0yBIFWI79gKRsakz4yuFqBDgLtXfCokCACM0UImNE5HErC8XywW7wBTSajiedZD8jrlev_uvWItFAJJds9PPGHbWBqcxUdNlNwSXGonhOM_btffMz7cUIGtkll3kXO4WFOZRttrIDblimwTPiGxHfyU7V6SchHmyTd4gEnWYOwOCAdTWZfOMy-yt09XFoml8n8wcJidZrwjQXEKfpqfgbShXOjB7PymT-J68dTVaBfGbqM_VPrW3D0-uI9yZ91DWAGYbi0MDiskvwcAxxj7Vf7kWyP-SwyyKhhWuWOQYPwRZjUUJTWlGrDcsM2SNS3sErudCQL2cB1Jdbc7G56CKdZ-77TOJRlvXy2rte2gnMZ11ustD8w=w1600-h818

The installer will ask to format the ESP partition, but we choose to not re-format it; we'll be asked to format it later nonetheless.
ALs6j_H7MEHncpFBX90Twdevskwfvz5-ILEyhg-K4ecZvqf0UYj1yFTf2zyNF_a2Fy6Ju0hFZBDAXAJbGKWQMC5BwYGvrXI55VywWFtk3n7jIH9ueMvtOkqKooGozuv5_oKfHBbiYVBfWGGM3I0uNiOfaAHOMH_imcO9vYolhQ2GthlwV0IINldw5rcrNzyLdsbLca3FZommAg7KX3KgSGvmXpyvEdVPjBUE8-SjhkymxJxUOq0xwOZfbs69CQwx3zZnHaM5EbVdmYnoZFAeWzChXWD7Xq3kdQvE8syyFLKFd2gXmBLIad3JsSUqg5dRO_UqpSnUMK64VcyHXURJcqmcbQIbK5JnaEHXSg07JwrsWQ_ygDJpsgz6iU0Q77FLBMbRwOn6WZbVqtMGGNF_VZ_6wnIxNEMICuCAkQyYryXv8IhLREN6EG44VqImpjSWWUtxyL7n5OMVFpgDE1JAcibx75RAy_CYxL53VIV_1Pm9R4G3osGLm6Rq0rjiwH8scMt2caTiP9-5OdHkVDpmVub9BH1mUFgbN1jnsfZ6KGSwRe269QbePEQdnCQXGZp-p1fgT8Y7zG1v3OjBY-Cfgq8mStP2bergHAExn5w6nIpD_9rWKdczvzoTeB8YdB9_Vey3JAhWmzzI3k0_amEL_yl_qZeHHFBEKXK-K9n7NFQ43-LSlkq8XvAg8VyYQ0fz3vCtrsG6HImdYdrGOytYe67W39rPeZGwui3kbkUymsPMMTvlnYpAMePIxv07a4WZq5LEOx_J_WDx8NpVnavjAe6KZYEd99WBM99-t1wpaKY-m5-AOHAGM9ui1XrIpe40I9VqhMiwGMU5Zk64Sxa5AS8C4u8FQ8XvrXksoGiQ2h39m9S9KcPNV-tw1jyXErwBbqZI08JClg5fqlox0YhIY1Khnp_I8E1YjuLAQX8oE_aKIa-vBtvWGFmseb2M8Jvuq5crI2-OEtv7TD4wt6e-o8mDHB89Irpggb14Ryv21A4cvluPGL-g4jy6OpHvNY_lWkuIzgcRXyY8voaJIiTQ_nqPNaNGJ8Z9UjGWagu8vBAqA-W0ceboTtEJ74IJyes34RFPMFwjxIkj1HNj3AcyiSsPb_HG9yAVpwISe-ifQZjQO3NV_IwlgG84bXMy_o_i5Bf1WeMPVeJvN7_97WXPilugCKZSqdIADpPpupJfEaHi8_eauwR59HdZbJEabIxcSetuu3mU_nCwg_Uc7dGTRt72fzzmn0umJZx9r6KTKJV-t0vdRUwBxyJK9f0XWmrKasudV4UH17tM9x-eeNnivL7XdmeBXpy52GSJaC1FI8KD1iCX74EdX6-I2SljA_ZUuYoYWfICNz22l7N-WOZJ2hXyihiRB-BP0oRtQHs-P4lEWd3AJhPz7NyntAHDwgHrkeD8sf3GiPl4FAD8hIcIUHxpNASN3nPAd3D-hNtlc0PluRahHF57XLklM83Co1VzAcUOrB81LNdfRvByWLCKcWvBx8lZEODEvjbgKJeWawMlaeJkHz8gOFQdKtMdRqC-lo6OtjKn9eT8OYY675ah5ZcgexqIoWd8ZrPVebeVLutuY5EokbnLFbpTqoC-wZL9pt7pYQzUqutqxaJHotrAbg=w1600-h818

Next step is to choose and format the system partition:
ALs6j_GiLX2VQliTQ7QgaXEDjmWCWuS1nIxFbmzw6v_FW0s_M1gcoptGUQRnodebg1E72nw-4cXlgLtSDNjiTMP9Xm84EtkjX9WZYEH3-wTZGzYxx3uw4ssyoC-QJ6HegZDHGN8_IzKR9TPjdpn_Z9Wkok55KZDwFx0GHuNgtUIKLoEJJDT-kt1JLUMJpBOOafZGFBE22Ry2W1LU9LO4E_OEQ8tMYir2IsAgcBSfHOYqyNQ2_paYNB6ftRNdXlPKwG23aFGYFcnHitClW8_wBEgleu2Qw2OWRjsblNqYJNykezqQcwcfBLFnCbof3uCGeccdHmIxHAlwOBrpfx2Y8iNh9Fv_QPcNm-oPeCZDpFM4yWSL9Dbft6pKg52WcOVg-mCDzJItsgv3HORC_5jQRmgyiEv7dlhIwG7dEb3nKu_6N1AnpfjwtWVZkRSBpY2bbK6d-q6EwO12aQRVGWtBcbC08oFaG9maKY1oYD6gDtLmzI8v-jgN-bJTOP72oJ1KnG2w7QhgolxeEFneL9YR9DySBWcbavTagZs5oy2B_RgDQuF-kk7BwuxigNZ-D_5hWrO3sx0bj43xiDGm4xrGaz7Ru5ihoincKeErjFaXS05c1fwRfVRDiD3PTvN1ofV9sS3_ShTuS9jHjKJe56Bac47mb3-IADEYLKCnTj2MT71zwgRYyUfT2dhIhR5dUi_8zek4lsRjlHfmUjh3JM8ly4g7SGfDjWhEyJBY9W62XhTz71JU-NIP4ut9ReaUrh7SekuU1Q5zHF6I9KCeljVYc-6qfhjWDBadneD1yGk7ntj2SHxN2sC0fG7MxQI2WbMjTigk8Se6ieoC-BwsCXDZaQXox95X5spLYV4SK6JKnpEmLeu5DDgYEBTinBfIIxLMTzp1QvKemf1hk4zzD6Uu-wtqUPYdKobcWnj-z_FArM3HG7BCQVfOAQjdqAzi12WI2_vEXaNdwQtxpixyCX7csyR91Lr1V3WhX8_PPp0FPbcH0DfmuzhTh8y8nUa_rMXsx7jup4wMAx4rBC7u0BXh3teJEMxesR4ex5MUPRupFxUSRKRaWgj5GpYWf_rin-1h11jzNqpVfZ33lvxsMcK7JnvxKmAfBcRcQ1rhVkmlSZTZH5ZjOh8qW7oI0zKs2m2MgG-cdnO-qLW5QZ9x1ZM1Ax4yQrpQU75ghVJDETTQ7Xd646e1ZrE09kLxrvioSBwwqiUIau1lV1DQoUyR_5e-2Sv6UUk-SAhIdpIPYbX1SecXWRMydBISo2vjaOpDuDuzScG_LjzS7gcaRQPIGXe8MFhQRDK9O6TaZ-S5xgWJ6PfTW7WxyVH_pZIq3mNrRoBKuenyYF-rMevlshxOuEHZHDJWzOhHWxdZ524MHmP6hZUyoZ7Fw8fHSeW_9_niGZdHYCnmNUkfl2qv25QWbqh8BN8HCJpmpSeW6bog4sx8GAROPIV5rP_HozAwMLGMtb06D3dPahdfr9wB4ImzwgOUErfvLtKbse0F-7dRVO-ufOUgG_K7bon2Ms3TmujqY5gRLBgxHFcpHtWrZYlB8KjxL8ohOkzq_8daJDQQJVv7icwkdvV2d_goUuLWCyevTHAAj8rUuWVYcZjXrPzIcFQ=w1600-h818

ALs6j_EBMVP4difwupTmIvu0diBwKjBSJHLUFfVolBaGeXYxTUjbSwDo64nRovjVvIVezwM93P3jhJL8BzmeQBT5Ywb6hOO4_WD-eOLITspqAzG9BvaI8NUOhi_du5xUsP0FzPLkDpc0yaLH68hTQX0fGepHTOvSxU1Tc_fJE6aSJt0cXTJrvq1szI81a6rxXugUXE24Z5HyuMxNLYK69b7s5ggT8XF8wGplegpU6J-gDvEWoBag0dIr2YxlA99p4LmsQyoDM2kdOsHgEItewK6ffgJhKnL2dWD5gydihQSdbJk9F8NTzQUC9-Ne6noufcU0uj3erkMUj79BDqGfTUhl0eCDMD95dwFfUbQ0Z5PFlWC7F5PI29gOprLJypptZyebJ9b9PMV_ArAjW46nTIc_cZsux-NYkGs5G2BiLM03vhxR8yvJMmCXSUsNKnZkA7n53uqhNIjkLVX0jPeveZ0fXjszm4_TidE9L0oDHb3KZLyLSE80PKDfrkphDIiLlDpS8pUC8vFvQ1SC6Yymg0MaenyPAxtPfVdB1C2mTaGZz3Dv9kIIIXhP1dVNyGiUhzPT-mHIl9S38hVlMPP82ua27PpK5s_aaHKIbzAd5AgTMWn2Vi1puYOxudzFemC0jAN-BJnt1r7fPBP6wauZDxUOuz7neD0gOjcKQCZW39Y7oR_XB32g3Ic_JF_QSu5MXkmJcN-9dOS07miVRSqof-XllsGfq53vCY5HvYhpLyxOfDWGTJxMq9BVTrQib1hXOiEl0trr8fTAETNcBFH1w7U-lDHmSVcVpPyarr9eH8f9TpbWHgnCiG88MHXC2LQd-dd1uG_VPhrwapBjvK5Qfr28SgEWvuq-PXc5FR4z0jQn-kdEnDXmgd7u32-SwzA4lzsAhN_ocN3wd8cWdE3x69jlC0FlaY31Ua5_UUloOZEMEBfbNOkM2jIv28DjkpXPoZexlGcjSFe9uRNyWGJB3qIGJA8D4wmV54s7E6AXOIzIHau1SgbORsZvjC7NHNfec3WNHHFzDDnbdX-oNOyxdZE0ExosvbS0NEtVSseOlL-xelkxyx0dterKs5xCVBfywTHEbhEhV3gg8zBVrQYGG07za9KxWdEpGjrRPCcu-R1K_HChApaHMFvnGyQ0srs_Yr1jzovg4Sxr3hiJXvZK1rR7E0YyqbKOSj2ipsEiA6EDix2F7NWf7tpXic88c5PNUl_UsxavFrDZfEYiQGOZOR4Uz4XGr7yiyZKykMa7U92VP4qFAWO3N0pUr8WDp-aHt7bTYjmyTFeo_sRI6W4WkGJFxUYnU1IbbmvP3uUumebIWCHvZAiEG_zWEdrzyRoILAb7KASJjZU-tR93WXlMtuxt78_9buLJDD4Rqp98bC2VMUCR24JhlCSqA2pVFmHiQT_WzWDWRYzYJk_tMcJpT9QkZVUVxlrmVTD5OWp6K9MdFT7XgCb-74h4V4KtBlMjYEtN9CaVG8gU4JD27DOAaCEL32awiXMDn9ePikMZGu9SHRBlZV7k2g0GysJExc9WAJ6hqSDQd1XCGqin2YUk9LxGQnRCk2jhuhKaajsFE9lbmiIYZwAoDgn6scygzQ9zLe2KDRPXImP5GfLRc3CFZg=w1600-h818
 
PART 4

The installer now will ask if we want to prepare for OTA update. Since this will double the system size (and being a VM probably won't work) I choose No.
ALs6j_GMx4e8zuZ0D9RQmxfOQoyuXZYXae2viSbV79XcopENo55ZfMBdB1AO6b0LJz_cKbI1ZdWSrGBYIwP8MLt5L4MWlr1C2dUW9vGBbPpL1qwKZ4N2lCPYx_st7qCQlIALZo6l2-22HqaQSWzF5-PGWv0w5bON4uLTptoemIA361skpvw6W2AyKtTxvDfigRvKhh44xAR31_sd20GrZlb4pamEyWsSyojpvsyEckBqhS3LOhA26TyYp76_F_AFRyl48TtkPBlWtcuExSH7ViFbS1Y-pbYVaNJpnODYZT7wJ_TdTnKkRsdMdIJ3p52w-fjkft36JaTudiNOymF3RMt4XyI6aWcch6wWYSEeWCyGMLr3Y50ZVvD20wbGrouuZRjnZPUd8xJjVGrFjIYGCl_BizvdRBy0w-3BzqL0g8cE2c3zkW_5riYWCF5900DhkF1Ek9N1XHQdlPPjTmhZhmw8SWnbr06VPIEsc6CBOBNwELEzX2okNQfwU9tH02EOov94tjhRb7DW95gCJwWqLtnMmNIbkW_Lb4FivW3f3uRbrl7o19RIvGwGPHFZDarjPo1fA_9fojpe3xpiU0jrpXcawG4F01SlhVjTPLBFBXglhkue-dlXJAzO-YEut4SLWEneJhsbCjESVZhTrT3PEzcpnV5EyZNzB1fqu38iixrRiNR4Y1CXxgjcTbo0ExbOmHABXiQjwveyNdyw8-lane8kfUgCUO6JhpR9UHr3UsRZE-Jgc4yAGqYaugmSc3LxLd8vdw8gQbcqICnicawpkKzc0nmdDufl9gvrlYj-KqQ4Yrbcu7QsGFGfYWRTV_dik8f9BfHHK1luWMHgB-jqsj4mrth8L6Dfi15DCqteJxxgQ2K9mzuswYuy_1CtoiMqsITsegrZfktC178cqiTzq27usYNiRBpFhCjeCMqJMEKLcLiKNBBqn58lrSAhUmP19b6Ae2S5SlxUJQhQSYRr2aqV8RtYXwT9P_S6at1JDOXWzbQko3QhsHktJte2LFb8AX9aBvhcjJSqyTqa20qjamRa3p3G56xdb0vbd61f4vFSXfELCLznBexLUqrXXP7VnAccS-Gm-d5yL6ILzVHfrp1k5HoxPothjJ7MOjL8Afw1cc-s_pqkPDqj-XQsRMQW2T8H72CGByjBQjfeeLlZjl4pI0s1DD-fYakRC3hcD-im3iZyS9kwUPmtKi-eV730WJq4NiwsU1nUoDdVnRIQjs7LhxVqzjPTt2Nv38zitUsz0RYY4OsGTZOkUYcf_9qU8b1TRSgS50Z9Wd47p3Et0YelLQFXViNvO7UVnsoSow1JS4SgQV1GZLEXhZDh5-o-RatBlG4-T3VDfoavAwOqTKJwtEt3oz8xSUBHrw3veiIvHhiLd68KsXsulnRCp3SIbG1ZWvrv9C7041St9CHBJxDMW2EmQNciSHhOqf0rGXkwQxZ6ztCFQyvJNr0fK1tFwHhtjQC8nBl0dWJdeLgIqKY2iY59BxbD8fT-MW-McK8vK-jKHrA_aEw0KWY4ajKlIWLjZ7x_0suxgw7Ds_EH9g-nRPb7jRDZy9QRPvVpqWjvEsdC6pSL-2GULu9QmQ4Tf2_ATTkUW5zmTbSjPTmOiA=w1600-h818

Now it's really time to format the ESP partition:
ALs6j_E0eni-KSrsO6mfPyeSdW7kWfdEAKUWXfFiJC76IeCvO3t1eXAL0DWmwMwe5NccJI7wRWFsEdZ3jY25dNeL3tSm855Gz1UZYaSYKAEceTy7vPWb09gdcCW7OXKrRi-zeS9h4r5qDRrJuIox-b1vMZpHvknndCgtvimlBvGezUfwQVA6HlVhnAmv-PfNsEd-IryoznmcOc16tx6WDiSISw2Bbz9uMdQe5YD33e_alx6hpGTyvWQqlDkzZIiQXPmTAI9rETzzh8BCEnJ37mRIDI8IeEUM0TXOP7tHD_TUHSLE8rzOMmK4b1xwgIDMYP9Y7d0CSnPgORacuuhxHOi7bjAaf0_BRen7AgW9sglmL68gKvAaCR4ZUgn7TzqCtNqefpkX9ooLhlRnyLiPvHyKd9zeNKo-K1JaWsmiKEEVq6vBCNbTpsoU-oStyhl2kFnLhRU03aBp0OKiDSWWjD9JCutnSZLMMQa1lRgRmd7l4xZHu45hZICL7zGNtflhczA4-ub0n-Wh6a0ly6goGKEFGDRjqu_4xC9rsAJYX4wbk8re3Dtfa-KNePvZdtAj7e6HiRD3r3fOCrQhRCg8muX0DRKZbyz26ktVC_og__pKaNLMoV5PRkhYS6VchArjFidDvaO_AqCQC9-aCaNgEopcOWEoPngViQB46nbjMxqM3X0MP8xcUd-NfVKwWEwibvzvYEtQj8Uu420P6_EdVF0l6dtvmeh5CWMALAIpuLGuDNadjcd5-KgDpVqkKVjwzbWh4IRqVPhnqKSOi4MoJYNlD3M5UqdCKxOZuQP_2OvIWWQkuDvnNDr9L88Jk7BLW9ILdGTg1PvoA_LycJdZPJlRQZ9NVwQsnYsAUjS8daRtAihER8EpNQ9-KGGmyOY0mU2SWamfEYOFbMx_dw_o3YFpv-P78QMapU3Cq5De6t7szNVC0TcRdzp670UFSGgAOU-OdEp7aRIxnHiZa_p1DaIi2MMzW4WpQi_uItxaIZ-7LUKUASIKeOYd7jmzziJUlmu9cQJvgZ-XyXh9niSHLyaPsLjx_oYXbButaxc7qotXmzOnBqoH2saXNjpOdQp67OYKSNTcaSCrMaJIZ66DTkfdCNxPI5JAveWmmMvFeG9-fK5FfTcYvacZFqpswT1K8zSxaSDRGl-9Ctlukixp0rryr-WcI1rhTB4Wu72hAcSXkbwy7Al-COhBSVKN5fMfiGWQzLuXUYcSJN7llFpZyoIyh51yQXhYuM69xIT9h_Mtx-8P4F4VPSeRR6d-9ew51Q1s-A1uSPtC8f26QMq55p8e-vimRNRyAzuC_0z0cG5SCYUS-ICx6QFGe6m9Nr9E0-aWtlQFjwHnFxr0IvcnH2K0Yvc_6URDDdUfSiiyGWiUNMUyUR_JDlSzpXqJw_rKNKUXB0o81J4PlDnCSqe8bDq49crFhDDvCYlUkSDblFIZ9HODico9RDn-Hkrub5VreCQMYLFR7mWPJazDzTR_g_UOQhtYKRTK4Z5dcVWiDjam48YCcDYCLqKJR1prQ8jU4l411e60u2VDhrCxMegdrSCTGKzNzj5m9d4bohlrx2rPW0TrrJ3RSfjxQ1aqN21aoGpdIa4sesTXQOfo3OD9Gw=w1600-h818

Ok, time to put everything on the (virtual) disk:
ALs6j_HJfaiPUBIn2GItXwABNycu-Wh37aklfoGnsFATEdOZu-lJq4iluoGp3uKR7mndnu4oPBFzY44uksnDSJrZn7y7CTTb3Hby6GDPUpHWXT5-8ppoEkaMXOaXNCKphpCbDu2jLODG-vTZREXvrP1E9eIiQwR0Mg488ugN13GKWmA3nyZEEbkO8om9bvnJqLLyPDzUsou_sghdoC7PGTRfIyKLikr16SstWHaH9atrR2hZOrQq4bLh8Qxb_3C4f82vIdxxy7VPrPeI4mchojyfgy0avbDi0H0DBCdVPj5lplpScNHQxzhzOIZ-vjKl_kesbwln9-PF7hYz_ADVEOZjmK5fsUJ8fRNiFEMf8CDFMkclAUGxJSKJEPHgqaQ1mPbMj03NHIKa56Ssojshs4idT09tXBhspd-2FuaLLjcDdsQqeKXIl0Qx0XTguoBhCjbEyUncXmh4pBg0JCQP3dZdBYw2JEhqluoxed2qXPBam388wec9OG3khXVjdYa3GOCcXQS_fGxiqJH2ApKIGGRS40gR1HqezL-DKLvsELn4IviVtENONGURTKah90uEDuliFuveKj1ac6nRVkkuItUhc5tpF5DFuupYCkkUFo2RblPjWRQkYHcPHBIdpcupUO0SeJYWQoZlnTJhJlFjHEw0ZIndRG6bak4OW-dXfU-X3XSnvl4S6i6dgYZeJjNxdDidd_IKbuA7gNKo0wLVOeCqCsM4Qgnm7Oo4KTWugEQEFdN7a1kXk0sXOpfLOeS8KqDXXApk3QJq0_HGD8pu_XfqUu1-zP-MOZB30hqncgDvgqgzTNh6yopHYErK3bvoweY623M5dnJ708HwHdbcV0BXYZji0MrArtUUc2ipaVHlrydJLnVqiWs0T-Rtfs69kATmjPK_LJF9hIdETzszZ9XZ9U93L-S0O-PcGWMJyl6Lktayrn8cs4qb6BesZPUPITDkesNv8fkdV3ifEz1v9cxco4KPK1Dw56Y5fEbaKJOev3ZUDzEnT-tunQ5QmdrMHm9C5mln792SdluoaC_jksATF1DVV8oPkJHN8eisPtprqkXPBq1RsGY_wQ_FNNQYRk4Py-1PfEf4KmMb10mRnxROeAwa4qFI3e9GKWrXIf-vMUEwSEknqydw0Hplop-g2mxXnBmFcFP4E03QhgAXV9KKkF2QDc306oduS61xBVqB3a_20m4_chAe7TWbqh6J6kI2GzrW-gBO3SA3E-1zNGZVFkpYoDrKnl_fH199sha56exbnthlFXq2NuvB1t-UWhFV-DvR8BfgFPQ9JX2M7eLRR9MICDY9Ne6DXzPPlSe5K0D9ZiO8jt8kQitiYojsgpqz1j_kbubOiU7NUdDsYAKJiPi0y_UVo52Trvth9LEcGY-x7iYQOcJJeXy7uvXrxCU4oSqZurTrjYA9R6os0GVIw4xyPnPvqvG-II_eGG-QxSHas0c0exyANTWgwoL3Lh262D5NLSBkCe9kgjqs0utpVSaSHuPZ8cp8dT9WjsToScywXY42lEyr4p7qc9H7pJDbFNeB2BL489Mv7JgaHs7DN_kxzVPqpbYFJVv8oh3iSsJE57Ufm69ZnqB9_f5ucNXd2OGy5xy5xwoUegal_w=w1600-h818

Finally done! Congratulations, BlissOS has been installed! :)
ALs6j_FSbfyUcSSaKXTe_nIuFL_fxg-ysU506-0sr9XJTEIr_Pab-Uhjup2kW-WR5fFYJ0qQUVC4HL9i5sXoZ3MhgW4HuTNRfag3hkN2uRGovw2OqZedNagwAYx5hyC9rVgqAOE4JRcPhWPHJ09vMJQqV1bZXMVYbwUDq_AApCDJ-NCuvixkUc6aAN4WU6wfgWZ3q96c096jhF2JZQoj3MgCuLnxwHkFhD5UHAwBD27ed0c6YGVEdzBkP6_s6-zIFFMoSKvhGyKHLNMnw66lvfp0jhCaOJB8TR4V5H3OIKq2tWlnlI4XCo8YdvgunIZhy3OX8hiECdI2Qb_aCMtJqSFlUow-Y9Kt-07THeHef63zPUJc6xw_hQSmVAbVzn0SPi20qthSf85COlnd0qGApG1kXKq3gWs0--uFHXyZ9lfNZzJMAyRqqsp9ogRIWJTXa73JuZfx9Axw9-L37Q4ff6AnSdUkrqZ0fug4CyFn7YdToR8LlkmFhl-PwlAOn_-P7UmkEz0R5lZaJu60m4q5UwGABVULLEL2qNwrKlAbfrSfrbGrwPi7AQLnsBDF8RRjIBevCcec2vrsFDeVwwc5jhePWmQvFBUNouAveXjh8bboX7S4rejyomIilBEmt103v32gBptN-bz_P2RsocZGt_Uw5dmUh6PewijOm2xYgDpxUTYaVfYzKppbnfazrv_blc76uWVtfaXa6VhScAAgcjsEShskc46hILy13te1o7io-6AfHAup212lURRVYLR8taFa8aSXlStTbu7ZFy9yo7naMXySsxP-3spdKsGWRf6QVpy4w2BS_qkdgRUBS8OvlSdkFDL5F3HdNj_yiKhZoiG6DFIALnDoIibPhFOulufpsE2r_F-Gf6XTFiqGm8jaZdHfH-fpKu8H9t6UopNN4fB-19ZTpK23poJSKPUblAnRkGF922gbuhzDY0hKaGEQ-ouALrNUhP9YoPuCiz4rm5LhdE8ZyE6JeGDyjb1T0pPb5ThQ4DEYcwdti6H1Dxiz8j4JGvCsww0oAoPFoe9RnqY65bFAm8DPWWyqfURHWAwfZTOQ0W0dtZ-OnZLZe_9I11qRXWxugaDHF876bh85ujt4Dn5H5z0PgXZMNaHCsmHJGyW4sZ4-GFOKhRxKpsg8lAwJyTvsAqCecJ03TmB0wUB_IxYstcTAUnbo-cr65q6PqM8-sj9R-xuIrYiNiKoVqjR7q_6bpNgBkJYqYwBK6g_0S38tB7QqROnl1UddC5hRKWqQTTQQNfu9v1rsyI_lGrsD8Q6eRC6RgzIZHj1HTWLwbR25thQWbO13ybQKrd_8gCUA2S4nOJHljxhb7RZkZ0G4yufRsbe31UC76fiM1-wHUD_pMRVTDtngmOm20_3hxwWffEonSg_yQ9csjLCcsId_ybdCvmJ7bdcfevVAXFMe4e4SrKRiagTDBp64OzcrV-R84bADDuzRDp3y_fRZLasmZT_ootp2IfyEZKaahGykDhy9YDOnZC2PDbZtQbRQA11RfrgEsc_QBJPrjQNwJiyq-9g0EcZUUSpbsS0CfXoEw-Ebu7CgcKlKkIjXeqU5vrm0FBjm0Q6MrBdCZmf5-hTgPvxiV9e7igfRFW7nCw=w1600-h818

However we have not finished yet: from the TigerVNC menu (F8) choose to send a Ctrl+Alt+Del sequence to the VM. This way the VM will restart and the VNC connection will be lost. But we can't just start the VM now, because it won't boot as things are now, so instead poweroff it:
Code:
# vm poweroff BlissOS
Since we have graphics_wait="YES" in our VM config file, the machine will be locked and not effectively powered off until we make a new VNC connection (that will inevitabily last less than a second ;)).
Code:
$ vncviewer 0:5900
$

  • Post install
Why the machine will not boot if we start it? Because there is a "problem" with the EFI loader that bhyve need to boot the OS: some systems (and BlissOS makes no exception) install the EFI loader in a non standard location (always in the ESP partition). So we need to copy that binary in the correct place and rename it accordingly.
First we create a mountpoint for the ESP partition, then attach the virtual disk with mdconfig(8), mount the partition and copy the file in the path that bhyve expect. Finally, unmount the partition and destroy the /dev/md99 device created to attach the virtual disk.
Code:
# mkdir /tmp/ESP
# mdconfig -f /path/to/your/virtual/disk/disk0.img -u99
# mount -t msdosfs /dev/md0p1 /tmp/ESP
# cd /tmp/ESP
# ls
EFI
# cd EFI
# ls
BlissOS
# mkdir BOOT
# cp BlissOS/grubx64.efi BOOT/bootx64.efi
# cd /tmp
# umount /tmp/ESP
# rmdir /tmp/ESP
# mdconfig -d -u99
Everything done! Now our VM is really ready to boot! :cool:

The next step now depends on what you need/want: if you want to setup your VM from zero, we'll proceed to the configuration of BlissOS (just as you would do with every new android device you get), otherwise, if you already have a VirtualBox VM with Android you can move your system to the new bhyve VM.
  • Setup a new installation
Setting up a new installation, as said, is pretty straightforward: just proceed as you would do with a smartphone/tablet. Just remember to choose to set up it offline; you'll be able to set up the virtual Wi-Fi interface later.
  • Migrate a VirtualBox VM
Migrating an existing installation from VirtualBox is pretty easy. Fi#rst of all we must convert the disk to a raw image, in order to be able to attach it with mdconfig(8), then we attach the bhyve VM disk, check the ext4 filesystems with e2fsck from sysutils/e2fsprogs, mount them and finally transfer everything that matters from the VirtualBox disk to the bhyve one:
Code:
# cd /path/of/the/vm-bhyve/vm
# VBoxManage clonehd /path/to/your/disk rawimage.img --format raw
# mdconfig -f rawimage.img -u98
# mdconfig -f disk0.img -u99
# e2fsck /dev/md98s1
# e2fsck /dev/md99p2
# mkdir /tmp/old_sys /tmp/new_sys
# mount -t ext2fs /dev/md98 /tmp/old_sys
# mount -t ext2fs /dev/md99 /tmp/new_sys
# rm -r /tmp/new_sys/android-<YYYY-MM-DD>/*
# cd /tmp/new_sys/android-<YYYY-MM-DD>/
# tar cfC - /tmp/old_sys/android-<YYYY-MM-DD> . | tar xpvfC - /tmp/new_sys/android-<YYYY-MM-DD>
# cd -
# umount /tmp/old_sys
# umount /tmp/new_sys
# mdconfig -d -u98
# mdconfig -d -u99
All done! Your VM is now ready to be used! :)

  • Static IP configuration
The last step is to configure the virtual Wi-Fi interface to use a static IP. An example is shown below, if you choose another IP range adjust accordingly.
ALs6j_Gu_3AJG6aenJD-5j3e7IbMAIqV0QoRIs3XNmpZ-D9WKPAIjsrYHDoKZkeQRp0_1pxQcoI-GiKsthuetQu7jiIurmHW4nZTz3LPv7V1-ejpZTXO2h9ijJKVyllUtfqlEKD6ZVBlGc3zwqjUVAgZfLo4QsRFqqXxe3evftVKaXgRh_x-37_mVYByG0k6N6vk7ih7nVu7_jtiwjADAF2hbQflXmph8jmReDRdSxTmR4VtomEMe4V1rwDzX8233wln5yL0MdBlBH9qwwpcgxT95XYodUyLoD1YhpoQRLvN_6Qp1ju8mKCqrBbd78W_DYiUaV2TPAh1Bm6Bh7me9E5ebymG9skuO_KotDKKWfKU_TeydkQLRFzkU5YTFO5NhCWqmqD0lteDUO98pFa9hIdWvOzpPKg8utw5jk7MnN4jyaGMMKw1I4w0IH9r0KiNSV1LU1Dm7UXZv333jr-DNABE8fvnQDT02pU7gDS7jpYK5J5bFX9w_DJwHn15-46EeqhdJjKdgoK2njWmHenqcd2Sh6qA9ZOKg5kdblm4t9qCiDcp40Ey6ROFl-cr63eBUSFa6LbM5c5ziLMDEDBETontjh--th52vUMc15Njwr0ynPzoGj-ZvZR2KnUzeNdFooxEpZtk4cv1JG6Zp2tx399y_mYN18sx-_X7pFnPheVjFYO_ZsBIv0rGYDDvIJqZrD7XktqyTmU5KYVnl5rKxwV53Au4PKefJRyyD9wicRxHm2O0pOqL_BkwTqLG_QgcTPPxDofCCTLIXLsf437APtR_N0qZqTjqKSnjJkyT-LXOBEj38ulXqht72u15LUxbMBb9MQoxXl4d0_xvI5bYFl5e_24ilMQRk9yaWKfKcseyfJyH1yy7wxygXw4Kj2GdCDeYupgTn0RFIWu9j_6y2QhoJNEN6A6Eai9Ri9WtL1QvVcXkVm2nVdh3Wg8LIyLIcbn7WMIPvd4IRng7lqAgScg8lgFl-ucH8NGgEEPV3vx0EOZ4MJBeXJ-P9E5Q9DGQeOli8u6QltoD2EELdZOiWZIty1BENkYHx1BYTI8dryb84nBaDuM6tr4fB5wKyn0miKAPELkfCzFlUXKO8MHAvqBrxDvA8NCXSxDHXqdtZUFlPBIWP63Kqcn5Yuoj0KOvQ4Ho3ATPdXbbiPpjJty4P3yr4JPFD1VmUcGIWtgT8cBvCFHrM2xE8mKSXV47sAboOvQtck-kVTNRf_Xylm_DQlumiQ8biMR2eTfb8pDC7-VbpeC6uZD9nl_Hx-6mT8nUYNp7mdElBEbJIJWC7odyI7xLFp6qOYFTuwYiOa-eK8zAg8Y6dtYZ5aosy9OthWnFhfdPxruSg3a3yAWprM3XBgv0QGcGfoxExbNWUT0wq-doAj5ylrtzd3QReaZNGH31lZgRx23WajqnYfTCGKR4aFXFzyORCAzJByZDcBvje_lT5PLZ3Xdr07Iyc3J68KD9i2m87wwHE8tSxU9Ut1oGgwbUtmFj12gYzIgD_pldKSRMhsJt5cxHYKJd3KazQaI-PLx2f1sGeNeliYfCY5UA4jxO6-wqOoZDB6Jw7ZHZeO1Op4uSRLgb-pCI5t102cF5Lfb8czVmiICs5B3g4odTsg=w1600-h818

  • Conclusion
That's all! I hope I've been helpful and that you can enjoy your bhyve based Android VM!:D
 
Note that there is no problem if the efi loader is in a non standard place. Normally, the installer writes the appropriate entry (including the loader path) in the efi vars.

I think it doesn't work here because you did not provide a file for storing the efi vars. Seems you need to set uefi_vars at true with vm-bhyve. See vm(8), paragraph GUEST CONFIGURATION FORMAT.
 
Note that there is no problem if the efi loader is in a non standard place. Normally, the installer writes the appropriate entry (including the loader path) in the efi vars.

I think it doesn't work here because you did not provide a file for storing the efi vars. Seems you need to set uefi_vars at true with vm-bhyve. See vm(8), paragraph GUEST CONFIGURATION FORMAT.
Thank you for pointing that out. :) As far as I knew, bhyve was unable to store UEFI variables set during the installation of a guest, so I didn't study in deep. I'll give a better look.?
 
Does Bliss supports Google Play ?
Yes, of course. Just be carefull when you download your ISO: there are ISOs without Google apps (they have FOSS in their name) and the ones that have them installed instead (they have GApps in their name). I used the latter here.
 
Hello.

thanks for your good tutorial. I've followed it because I couldn't boot correctly Bliss OS with bhyve. Thanks to your tutorial I've understood that I need to use the parameter "nomodeset" ; despite this,Bliss OS still does not work for me.

The bhyve parameters that I'm using are the following ones :

Code:
/usr/sbin/./bhyve-win -S -c sockets=1,cores=2,threads=2 -m 4G -w -H \
-s 0,hostbridge \
-s 1,ahci-cd,/bhyve/Files/ISO/Android/Bliss-v15.9.1-x86_64-OFFICIAL-gapps-20240602.iso,bootindex=1 \
-s 2,ahci-hd,/mnt/$vmdisk4'p2'/bhyve/img/Android/bliss.img \
-s 10,virtio-net,tap8 \
-s 11,virtio-9p,sharename=/ \
-s 12,hda,play=/dev/dsp,rec=/dev/dsp \
-s 29,fbuf,tcp=0.0.0.0:5908,w=1600,h=950 \
-s 30,xhci,tablet \
-s 31,lpc \
-l bootrom,/usr/local/share/uefi-firmware/BHYVE_BHF_CODE.fd \
vm0:8 < /dev/null & sleep 2 && vncviewer 0:8

As I've already said,I've added the following parameters to grub,otherwise it won't boot at all :

Bliss-1.png


Despite this,on the terminal I'm flooded by these error messages :

Code:
pci_xhci: portregs_write to unpowered port 1
pci_xhci: portregs_write to unpowered port 1
pci_xhci: portregs_write to unpowered port 1


the window of vncviewer has been able to show Android for a little amount of time,then it became black and unresponsive. Did you already see the same behavior ? How did you fix it ? You didn't mention this bug in any part of your tutorial,so maybe it was not present on the FreeBSD version that you have used. Can you tell me which version did u use when you wrote the tutorial ? I know that bug has been fixed already,here :


but it could be still present if someone wants to virtualize Bliss OS with bhyve.
 
Update : I've used different parameters :

Code:
/usr/sbin/./bhyve-win -S -c sockets=1,cores=2,threads=2 -m 4G -w -H \
-s 0,hostbridge \
-s 1,ahci-cd,/bhyve/Files/ISO/Android/Bliss-v15.9.1-x86_64-OFFICIAL-gapps-20240602.iso,bootindex=1 \
-s 2,ahci-hd,/mnt/$vmdisk4'p2'/bhyve/img/Android/bliss.img \
-s 8:0,passthru,2/0/0 \
-s 8:1,passthru,2/0/1 \
-s 8:2,passthru,2/0/2 \
-s 8:3,passthru,2/0/3 \
-s 10,virtio-net,tap8 \
-s 11,virtio-9p,sharename=/ \
-s 12,hda,play=/dev/dsp,rec=/dev/dsp \
-s 29,fbuf,tcp=0.0.0.0:5908,w=1600,h=950 \
-s 31,lpc \
-l bootrom,/usr/local/share/uefi-firmware/BHYVE_BHF_CODE.fd \
vm0:8 < /dev/null & sleep 2 && vncviewer 0:8

but I get the same result. I see Android for a little of time and then only black screen :

Istantanea_2024-08-07_21-30-07.png
 

Update 3 : removing parameter nomodeset,it started to work correctly. But since I have also tried a newer version of Bliss OS,I know for sure that with it , if I don't use nomodeset , it will not boot.


Update 4 : it works also without nomodeset. Removing nomodeset we can use one external HDMI screen.
 
Last edited:
Back
Top