{"id":170,"date":"2018-12-24T13:02:03","date_gmt":"2018-12-24T13:02:03","guid":{"rendered":"https:\/\/trindade.myphotos.cc\/freebsdparatodos\/?p=170"},"modified":"2018-12-28T12:16:11","modified_gmt":"2018-12-28T12:16:11","slug":"maquinas-virtuais-com-bhyve","status":"publish","type":"post","link":"https:\/\/trindade.myphotos.cc\/freebsdparatodos\/2018\/12\/24\/maquinas-virtuais-com-bhyve\/","title":{"rendered":"M\u00e1quinas virtuais com&nbsp;BHyve"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"alignright\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/trindade.myphotos.cc\/freebsdparatodos\/wp-content\/uploads\/sites\/2\/2018\/12\/bhyve.png\" alt=\"bhyve logo\" class=\"wp-image-231\"><figcaption>BHyve Logo<\/figcaption><\/figure><\/div>\n\n\n\n<p>Des\u00adta vez vou escr\u00adev\u00ader sobre um tema que est\u00e1 muito em voga nos dias que cor\u00adrem: virtualiza\u00e7\u00e3o.<\/p>\n\n\n\n<p>A seguir mostrarei como instalei Ubun\u00adtu Lin\u00adux 18.04 <span class=\"caps\">LTS<\/span> numa m\u00e1quina vir\u00adtu\u00adal&nbsp;BHyve.<\/p>\n\n\n\n<p>Como o BHyve do FreeB\u00adSD 11.2 ain\u00adda n\u00e3o supor\u00adta ofi\u00adcial\u00admente o Ubun\u00adtu 18.04 <span class=\"caps\">LTS<\/span> ser\u00e1 necess\u00e1rio um pequeno truque para funcionar.<\/p>\n\n\n\n<!--more-->\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class><span class=\"eztoc-hide\" style=\"display:none;\">Tog\u00adgle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\" \/><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\" \/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class=\"ez-toc-list ez-toc-list-level-1 \"><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/trindade.myphotos.cc\/freebsdparatodos\/2018\/12\/24\/maquinas-virtuais-com-bhyve\/#Introducao\">Intro\u00addu\u00e7\u00e3o<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/trindade.myphotos.cc\/freebsdparatodos\/2018\/12\/24\/maquinas-virtuais-com-bhyve\/#Criacao_e_instalacao\">Cri\u00ada\u00e7\u00e3o e instala\u00e7\u00e3o<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/trindade.myphotos.cc\/freebsdparatodos\/2018\/12\/24\/maquinas-virtuais-com-bhyve\/#Actualizacoes\">Actu\u00adal\u00adiza\u00ad\u00e7\u00f5es<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Introducao\"><\/span>Introdu\u00e7\u00e3o<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>O BHyve \u00e9 o <em>hiper\u00advi\u00adsor<\/em> do FreeB\u00adSD. Est\u00e1 dispon\u00edv\u00adel des\u00adde a ver\u00ads\u00e3o 10.0 e per\u00admite cor\u00adrer m\u00e1quinas vir\u00adtu\u00adais Lin\u00adux, FreeB\u00adSD, OpenB\u00adSD, Solaris e Windows.<\/p>\n\n\n\n<p>Antes de poder\u00admos usar o BHyve, temos de nos cer\u00adti\u00adficar que o <span class=\"caps\">CPU<\/span> do nos\u00adso com\u00adputa\u00addor o supor\u00adta. Para tal, bas\u00adta ver\u00adi\u00adficar, no ficheiro \/var\/run\/dmesg.boot as <em>flags<\/em> do <span class=\"caps\">CPU<\/span>: a <em>flag<\/em><code>POPCNT<\/code>&nbsp;na lin\u00adha&nbsp;<code>Features2<\/code>&nbsp;para proces\u00adsadores&nbsp;<span class=\"caps\">AMD<\/span>\u00ae ou&nbsp;<code>EPT<\/code>&nbsp;e&nbsp;<code>UG<\/code>&nbsp;na lin\u00adha&nbsp;<code>VT-x<\/code>&nbsp;para proces\u00adsadores&nbsp;Intel\u00ae.<\/p>\n\n\n\n<p>Para gerir as nos\u00adsas m\u00e1quinas vir\u00adtu\u00adal, usarei um util\u00adit\u00e1rio com o nome sug\u00ades\u00adti\u00advo de vm-bhyve. Este util\u00adit\u00e1rio con\u00adt\u00e9m um con\u00adjun\u00adto de <em>scripts<\/em> que facili\u00adtam as tare\u00adfas de cri\u00ada\u00e7\u00e3o, insta\u00adla\u00e7\u00e3o, con\u00adfig\u00adu\u00adra\u00e7\u00e3o e gest\u00e3o das nos\u00adsas m\u00e1quinas virtuais.<\/p>\n\n\n\n<p>Ao cor\u00adrer o coman\u00addo <tt>vm help<\/tt>, obte\u00admos o <em>out\u00adput<\/em> abaixo:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">root@gatekeeper:\/usr\/ports\/sysutils\/vm-bhyve# vm help<br> vm-bhyve: Bhyve virtual machine management v1.2-p3 (build 102071)<br> Usage: vm \u2026<br>     version<br>     init<br>     set [setting=value] [\u2026]<br>     get [all|setting] [\u2026]<br>     switch list<br>     switch info [name] [\u2026]<br>     switch create [-t type] [-i interface] [-n vlan-id] [-m mtu] [-a address\/prefix-len] [-b bridge] [-p] <br>     switch vlan  <br>     switch nat  <br>     switch private  <br>     switch add  <br>     switch remove  <br>     switch destroy <br>     datastore list<br>     datastore add  <br>     datastore remove <br>     datastore add  <br>     list<br>     info [name] [\u2026]<br>     create [-d datastore] [-t template] [-s size] <br>     [-fi] install  <br>     [-fi] start  [\u2026]<br>     stop  [\u2026]<br>     console  [com1|com2]<br>     configure <br>     rename  <br>     add [-d device] [-t type] [-s size|switch] <br>     startall<br>     stopall<br>     [-f] reset <br>     [-f] poweroff <br>     [-f] destroy <br>     passthru<br>     clone  <br>     snapshot [-f] <br>     rollback [-r] <br>     iso [url]<br>     image list<br>     image create [-d description] [-u] <br>     image destroy <br>     image provision [-d datastore]  <\/pre>\n\n\n\n<p>Para poder usar Lin\u00adux em m\u00e1quinas vir\u00adtu\u00adais BHyve \u00e9 necess\u00e1rio insta\u00adlar o pacote <tt>sysu\u00adtil\u00ads\/\u00adgrub2-bhyve<\/tt>, seja usan\u00addo a \u00e1rvore de <i>ports<\/i> ou pacote pr\u00e9-compilado.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">cd \/usr\/ports\/sysutils\/grub2-bhyve<br>make install<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Criacao_e_instalacao\"><\/span>Cria\u00e7\u00e3o e instala\u00e7\u00e3o<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>O primeiro pas\u00adso necess\u00e1rio \u00e9 cri\u00adar um direc\u00adt\u00f3rio onde guardar as nos\u00adsas m\u00e1quinas vir\u00adtu\u00adais. No meu caso, escol\u00adhi o direc\u00adt\u00f3rio <tt>\/home\/bhyvevms<\/tt>.<\/p>\n\n\n\n<p>\u00adDe segui\u00adda, \u00e9 necess\u00e1rio acres\u00adcen\u00adtar as entradas seguintes ao ficheiro <tt>\/etc\/rc.conf<\/tt>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>vm_enable=\"YES\"<\/code><br><code>vm_dir=\"\/home\/bhyvevms\"<\/code><\/pre>\n\n\n\n<p>Depois, ini\u00adcializar o direc\u00adt\u00f3rio <tt>\/home\/bhyvevms<\/tt>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">vm init<br>mkdir \/home\/bhyvevms\/.templates<br>cp \/usr\/local\/share\/examples\/vm-bhyve\/* \/home\/bhyvevms\/.templates<\/pre>\n\n\n\n<p>Seguida\u00admente, cri\u00adar um <em>switch<\/em> de rede vir\u00adtu\u00adal (no exem\u00adp\u00adlo seguinte, o <em>switch<\/em> chamar-se\u2011\u00e1 <tt>pub\u00adlic<\/tt>) e adi\u00adcionar um <em>inter\u00adface<\/em> de rede f\u00edsi\u00adco (neste caso, o <tt>bge0<\/tt>):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">vm switch create public<br>vm switch add public bge0<br><\/pre>\n\n\n\n<p>A seguir, faz-se o <em>down\u00adload<\/em> do ficheiro <span class=\"caps\">ISO<\/span> de insta\u00adla\u00e7\u00e3o do Ubun\u00adtu Serv\u00ader 18.04.1 <span class=\"caps\">LTS<\/span>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">vm iso http:\/\/ftp.dei.uc.pt\/pub\/linux\/ubuntu\/releases\/bionic\/ubuntu-18.04.1.0-live-server-amd64.iso<\/pre>\n\n\n\n<p>Depois de faz\u00ader o <em>down\u00adload<\/em>, pode-se cri\u00adar a m\u00e1quina vir\u00adtu\u00adal e ini\u00adciar a insta\u00adla\u00e7\u00e3o do sis\u00adtema oper\u00ada\u00adti\u00advo. Os coman\u00addos seguintes cri\u00adam um m\u00e1quina vir\u00adtu\u00adal chama\u00adda <tt>myubun\u00adtu<\/tt>, usan\u00addo o mod\u00ade\u00adlo (<i>tem\u00adplate<\/i>) <tt>ubun\u00adtu<\/tt>, com um dis\u00adco vir\u00adtu\u00adal de&nbsp;<span class=\"caps\">100GB<\/span>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>vm create -t ubuntu -s 100G myubuntu<\/code><br><code>vm install myubuntu ubuntu-16.04.2-server-amd64.iso<\/code><br><\/pre>\n\n\n\n<p>\u00c9 necess\u00e1rio lig\u00adar\u00admo-nos \u00e0 con\u00adso\u00adla da m\u00e1quina vir\u00adtu\u00adal para poder\u00admos insta\u00adlar o sistema:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">vm console myubuntu<\/pre>\n\n\n\n<p>\u00c9 prefer\u00ad\u00edv\u00adel n\u00e3o usar a op\u00e7\u00e3o <span class=\"caps\">LVM<\/span>, por for\u00adma a ser mais pre\u00advis\u00edv\u00adel o <em>file&nbsp;sys\u00adtem<\/em> onde ser\u00e1 insta\u00adl\u00ada\u00addo o sis\u00adtema. O moti\u00advo para esta escol\u00adha \u00e9 expli\u00adca\u00addo abaixo.<\/p>\n\n\n\n<p>Proposi\u00adtada\u00admente, n\u00e3o referi que a \u00falti\u00adma ver\u00ads\u00e3o supor\u00adta\u00adda pelo BHyve de Ubun\u00adtu \u00e9 a ver\u00ads\u00e3o 16.04 (mais especi\u00adfi\u00adca\u00admente, pelo <tt>grub2-bhyve<\/tt>). Para con\u00adseguirmos arran\u00adcar ter\u00ade\u00admos que edi\u00adtar o ficheiro de con\u00adfig\u00adu\u00adra\u00e7\u00e3o da m\u00e1quina vir\u00adtu\u00adal e adi\u00adcionar duas lin\u00adhas que, resum\u00adi\u00adda\u00admente, dizem ao grub2-bhyve os coman\u00addos <span class=\"caps\">GRUB2<\/span> que ter\u00e3o que ser cor\u00adri\u00addos para ini\u00adciar o arranque da m\u00e1quina.<\/p>\n\n\n\n<p>\u00c9 necess\u00e1rio ver\u00adi\u00adficar qual o <em>ker\u00adnel<\/em> que est\u00e1 insta\u00adl\u00ada\u00addo na m\u00e1quina. No <em>prompt<\/em> grub&gt; escr\u00adev\u00ader o comando:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">ls (hd0,gpt2)\/boot<\/pre>\n\n\n\n<p>O <em>out\u00adput<\/em> deste coman\u00addo ser\u00e1 qual\u00adquer coisa pare\u00adci\u00adda&nbsp;com:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">grub\/ System.map-4.15.0-29-generic abi-4.15.0-29-generic config-4.15.0-29-generic initrd.img-4.15.0-29-generic retpoline-4.15.0-29-generic vmlinuz-4.15.0-29-generic<\/pre>\n\n\n\n<p>Con\u00adseguimos ver que o ficheiro que con\u00adt\u00e9m o <em>ker\u00adnel<\/em> se chama <tt>vmlinuz\u20114.15.0\u201329-generic<\/tt> e o <span class=\"caps\">RAM<\/span> disk, <tt>initrd.img\u20114.15.0\u201329-generic<\/tt>.<\/p>\n\n\n\n<p>Sendo assim, ter\u00ade\u00admos que con\u00adfig\u00adu\u00adrar a nos\u00adsa nova m\u00e1quina vir\u00adtu\u00adal como se&nbsp;segue:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">vm configure myubuntu<\/pre>\n\n\n\n<p>Adi\u00adcionar as lin\u00adhas seguintes ao ficheiro de configura\u00e7\u00e3o:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">grub_run0=\"linux (hd0,gpt2)\/boot\/vmlinuz-4.15.0-29-generic ro root=\/dev\/vda2\"<br>grub_run1=initrd (hd0,gpt2)\/boot\/initrd.img-4.15.0-29-generic\"<\/pre>\n\n\n\n<p>Ago\u00adra j\u00e1 \u00e9 pos\u00ads\u00edv\u00adel ini\u00adciar a nos\u00adsa nova m\u00e1quina vir\u00adtu\u00adal automaticamente.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">vm start myubuntu<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Actualizacoes\"><\/span>Actualiza\u00e7\u00f5es<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Esta abor\u00addagem tem ape\u00adnas um problema.<\/p>\n\n\n\n<p>Quan\u00addo se faz actu\u00adal\u00adiza\u00ad\u00e7\u00f5es do <em>ker\u00adnel<\/em> \u00e9 necess\u00e1rio, nova\u00admente, tomar nota do nome dos ficheiros do pr\u00f3prio <em>ker\u00adnel<\/em> e do <em>ini\u00adtrd<\/em> e actu\u00adalizar a con\u00adfig\u00adu\u00adra\u00e7\u00e3o da m\u00e1quina vir\u00adtu\u00adal com os nomes actualizados.<\/p>\n\n\n\n<p>Por exem\u00adp\u00adlo, ap\u00f3s a actu\u00adal\u00adiza\u00ad\u00e7\u00e3o do <em>ker\u00adnel<\/em> para a ver\u00ads\u00e3o 4.15.0\u201343, s\u00e3o insta\u00adl\u00ada\u00addos os ficheiros<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">initrd.img-4.15.0-43-generic<br>vmlinuz-4.15.0-43-generic<\/pre>\n\n\n\n<p>Para que a nos\u00adsa m\u00e1quina vir\u00adtu\u00adal use estes ficheiros, \u00e9 necess\u00e1rio edi\u00adtar a con\u00adfig\u00adu\u00adra\u00e7\u00e3o por for\u00adma a que a con\u00adfig\u00adu\u00adra\u00e7\u00e3o da mes\u00adma inclua as linhas:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">grub_run0=\"linux (hd0,gpt2)\/boot\/vmlinuz-4.15.0-43-generic ro root=\/dev\/vda2\"<br>grub_run1=initrd (hd0,gpt2)\/boot\/initrd.img-4.15.0-43-generic\"<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>BHyve Logo Des\u00adta vez vou escr\u00adev\u00ader sobre um tema que est\u00e1 muito em voga nos dias que cor\u00adrem: vir\u00adtu\u00adal\u00adiza\u00ad\u00e7\u00e3o. A seguir mostrarei como instalei Ubun\u00adtu Lin\u00adux 18.04 <span class=\"caps\">LTS<\/span> numa m\u00e1quina vir\u00adtu\u00adal&nbsp;BHyve. Como o BHyve do FreeB\u00adSD 11.2 ain\u00adda n\u00e3o supor\u00adta ofi\u00adcial\u00admente o Ubun\u00adtu 18.04 <span class=\"caps\">LTS<\/span> ser\u00e1 necess\u00e1rio um pequeno truque para funcionar.<\/p>\n","protected":false},"author":1,"featured_media":231,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"wp_typography_post_enhancements_disabled":false,"footnotes":""},"categories":[2,6],"tags":[14,16,12,18,15],"class_list":["post-170","post","type-post","status-publish","format-standard","has-post-thumbnail","","category-configuracao","category-instalacao","tag-bhyve","tag-instalacao","tag-linux","tag-ubuntu","tag-virtualizacao"],"_links":{"self":[{"href":"https:\/\/trindade.myphotos.cc\/freebsdparatodos\/wp-json\/wp\/v2\/posts\/170","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trindade.myphotos.cc\/freebsdparatodos\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/trindade.myphotos.cc\/freebsdparatodos\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/trindade.myphotos.cc\/freebsdparatodos\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/trindade.myphotos.cc\/freebsdparatodos\/wp-json\/wp\/v2\/comments?post=170"}],"version-history":[{"count":10,"href":"https:\/\/trindade.myphotos.cc\/freebsdparatodos\/wp-json\/wp\/v2\/posts\/170\/revisions"}],"predecessor-version":[{"id":232,"href":"https:\/\/trindade.myphotos.cc\/freebsdparatodos\/wp-json\/wp\/v2\/posts\/170\/revisions\/232"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/trindade.myphotos.cc\/freebsdparatodos\/wp-json\/wp\/v2\/media\/231"}],"wp:attachment":[{"href":"https:\/\/trindade.myphotos.cc\/freebsdparatodos\/wp-json\/wp\/v2\/media?parent=170"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/trindade.myphotos.cc\/freebsdparatodos\/wp-json\/wp\/v2\/categories?post=170"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/trindade.myphotos.cc\/freebsdparatodos\/wp-json\/wp\/v2\/tags?post=170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}