<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Linuxdev Documentation]]></title><description><![CDATA[Linuxdev, a VM environment for developers with Vagrant, Linux and Docker]]></description><link>https://kenny.yeoyou.net/linuxdev</link><generator>GatsbyJS</generator><lastBuildDate>Sat, 21 Jan 2023 13:48:36 GMT</lastBuildDate><item><title><![CDATA[No title]]></title><description><![CDATA[Linuxdev Boot up Linux development env using Vagrant  Docker Desktop Linuxdev with Vagrant Docker hub account signin is required if you want…]]></description><link>https://kenny.yeoyou.net/linuxdev/README/</link><guid isPermaLink="false">https://kenny.yeoyou.net/linuxdev/README/</guid><content:encoded>&lt;h1 id=&quot;linuxdev&quot; style=&quot;position:relative;&quot; class=&quot;title&quot;&gt;&lt;a href=&quot;#linuxdev&quot; aria-label=&quot;linuxdev permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Linuxdev&lt;/h1&gt;
&lt;p&gt;Boot up Linux development env using Vagrant&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Docker Desktop&lt;/th&gt;
&lt;th&gt;Linuxdev with Vagrant&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Docker hub account&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;signin is required if you want to stop checking updates&lt;/sub&gt;&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;✅&lt;strong&gt;login to Docker hub is not necessary&lt;/strong&gt;&lt;/sub&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Control over the Docker Engine Version&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;Should use latest above v3, unless the user ignore the updates&lt;/sub&gt;&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;✅&lt;strong&gt;have the controll for docker-ce (community edition)&lt;/strong&gt;&lt;/sub&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Licensing&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;free for small business and personal, but auto-checking-update&lt;/sub&gt;&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;✅&lt;strong&gt;free of charge (w/o VB extension pack)&lt;/strong&gt;&lt;/sub&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Network setup&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;Host network	&lt;/sub&gt;&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;✅&lt;strong&gt;Can Choose &lt;br&gt;. Bridge(host) &lt;br&gt;. NAT + Host-only&lt;/strong&gt;&lt;/sub&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;. Hyper-v VM; might be slightly better but it likely consumes more memory&lt;/sub&gt;&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;. Virtualbox VM; not so bad&lt;br&gt;. Has alternatives (Hyper-v/VMWare/Virtualbox)&lt;/sub&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Environment&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;Slightly different environment between&lt;br&gt;. Windows WSL2 (Custom distro integration required for Docker host access)&lt;br&gt;. Windows VM (w/o Docker host acess)&lt;br&gt;. Mac VM (w/o Docker host acess)&lt;/sub&gt;&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;✅&lt;strong&gt;Common Linux environment available in Mac/Windows&lt;br&gt;. Full Linux VM will be provided as a Docker host&lt;br&gt;  (Files can be shared natively in Linux host)&lt;br&gt;. Docker engine can be also accessed from the host OS&lt;br&gt;  (docker and docker-compose client installation required)&lt;/strong&gt;&lt;/sub&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Installation&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;Installer provided&lt;/sub&gt;&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;Install scripts provided&lt;/sub&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Starting Docker&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;&lt;strong&gt;Autostart configurable&lt;/strong&gt;&lt;/sub&gt;&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;Startup script is provided both for Windows and Mac&lt;/sub&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clients&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;Provided along with the Docker Desktop installer&lt;/sub&gt;&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;Install scripts provided&lt;/sub&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Config&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;✅&lt;strong&gt;Configurable in GUI&lt;/strong&gt;&lt;/sub&gt;&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;Configurable in script&lt;/sub&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Docker storage&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;Configurable size&lt;/sub&gt;&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;✅&lt;strong&gt;Configurable 2k block size with a lot of inodes&lt;/strong&gt;&lt;/sub&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Logs/status&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;✅&lt;strong&gt;GUI provided&lt;/strong&gt;&lt;/sub&gt;&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;Only available in CLI&lt;/sub&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Limiting memory usuage&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;.wslconfig file for WSL2/GUI for VM&lt;/sub&gt;&lt;/td&gt;
&lt;td&gt;&lt;sub&gt;.env file/VirtualBox GUI&lt;/sub&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;-note-for-windows-vbs-virtualization-based-security-or-device-guard&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#-note-for-windows-vbs-virtualization-based-security-or-device-guard&quot; aria-label=&quot; note for windows vbs virtualization based security or device guard permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;⚠ Note for Windows VBS (Virtualization-based security or Device Guard)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Some&lt;/strong&gt; recent windows update enables VBS and it will turn on hyper-v
and that would make Vrtualbox slow and unstable.&lt;/p&gt;
&lt;p&gt;If &lt;code class=&quot;language-text&quot;&gt;systeminfo&lt;/code&gt; command shows following at the bottom, it’s good to use Virtualbox.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Hyper-V Requirements:      VM Monitor Mode Extensions: Yes
                           Virtualization Enabled In Firmware: Yes
                           Second Level Address Translation: Yes
                           Data Execution Prevention Available: Yes&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pease follow &lt;a href=&quot;https://github.com/kennyhyun/linuxdev/issues/71&quot;&gt;he issue&lt;/a&gt; for further guidance.&lt;/p&gt;
&lt;h2 id=&quot;why&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#why&quot; aria-label=&quot;why permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Why?&lt;/h2&gt;
&lt;p&gt;Docker is necessary for developing nowadays. But if you are not using Linux as the OS, it requires VM for Docker engine.&lt;/p&gt;
&lt;p&gt;I was using Linux in Virtualbox for many years and found that was quite nice and had no problem for using docker in it. And personally satisfied with the performance of docker in VM
In the other hand, Docker Desktop, I found couple of issue with using Docker Desktop in Windows recently.&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;What I didn&apos;t like about WSL/Docker Desktop&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;Memory usage is keep growing upto VM memory limitation&lt;/li&gt;
&lt;li&gt;some file was missing for binding into docker&lt;/li&gt;
&lt;li&gt;Additional settings to ssh in to the linux&lt;/li&gt;
&lt;li&gt;ssh connection env was a bit different (not sure) when used in terminal&lt;/li&gt;
&lt;li&gt;X client was blocked by Windows Firewall&lt;/li&gt;
&lt;li&gt;not sure what it was but felt heavy&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id=&quot;some-known-docker-desktop-for-windows-issue&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#some-known-docker-desktop-for-windows-issue&quot; aria-label=&quot;some known docker desktop for windows issue permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Some known Docker Desktop for Windows issue&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Watching files in the host is not working&lt;/li&gt;
&lt;li&gt;Hyper-v is not returning unused memory frequently so the host can be struggling with memory.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So it’s generally recommended to use WSL2 Ubunu but I would rather use VM&lt;/p&gt;
&lt;h3 id=&quot;linuxdev-with-vagrant-virtualbox&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#linuxdev-with-vagrant-virtualbox&quot; aria-label=&quot;linuxdev with vagrant virtualbox permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Linuxdev with Vagrant (VirtualBox)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Virtualbox seems to be able to run many containers more stable and does not apply much pressure to the host memory. (compared to WSL2)&lt;/li&gt;
&lt;li&gt;Generally there are less issues in developing in Linux than Windows (Same reason to use WSL2)&lt;/li&gt;
&lt;li&gt;Full configurable linux host (docker)&lt;/li&gt;
&lt;li&gt;USB ports can be used directly in VM (Note: USB3 in VB is available in the extension pack, which is free for only personal users)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;also-for-mac-users&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#also-for-mac-users&quot; aria-label=&quot;also for mac users permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Also for Mac Users&lt;/h3&gt;
&lt;p&gt;Not only for the Windows users, there would be some advantage for Mac users as well&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Easily backup/cleanup VM/dev env&lt;/li&gt;
&lt;li&gt;The dev env is a sandbox&lt;/li&gt;
&lt;li&gt;A reference environment for Linux env&lt;/li&gt;
&lt;li&gt;Run linux GUI apps using X server and tunneling&lt;/li&gt;
&lt;li&gt;Docker is running Linux VM already, why not?&lt;/li&gt;
&lt;li&gt;Multiple network interfaces available&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And if you are familiar with the Linux command line, using Linux makes more senses than using Docker Desktop.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Share VM when you need to bootcamp to windows&lt;/li&gt;
&lt;li&gt;Access to docker host&lt;/li&gt;
&lt;li&gt;Unlimited access to host(Linux VM) root directory&lt;/li&gt;
&lt;li&gt;Faster host(Linux VM) volume sharing&lt;/li&gt;
&lt;li&gt;Free&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;performance-comparison&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#performance-comparison&quot; aria-label=&quot;performance comparison permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Performance comparison&lt;/h3&gt;
&lt;p&gt;For comparison, I tried one of my project which builds multiple docker images with node.js and filling up 20GB of docker storage.&lt;/p&gt;
&lt;p&gt;Building includes installing node packages and webpack.
Docker build kit was used for cache mounting.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Env&lt;/th&gt;
&lt;th&gt;Build Time&lt;/th&gt;
&lt;th&gt;Note&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Linuxdev (Windows host)&lt;br&gt;6GB, i7 4 cores&lt;/td&gt;
&lt;td&gt;24m 12s&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WSL2 (Docker Descktop)&lt;br&gt;16GB, i7 6 cores (no .wslconfig)&lt;/td&gt;
&lt;td&gt;19m 18s&lt;/td&gt;
&lt;td&gt;spent up to 13GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WSL2 (Docker Descktop)&lt;br&gt;8GB, i7 6 cores (with .wslconfig)&lt;/td&gt;
&lt;td&gt;18m 22s&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Linuxdev (Windows host)&lt;br&gt;8GB , i7 6 cores&lt;/td&gt;
&lt;td&gt;✅ &lt;strong&gt;14m 39s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mac OSX (Docker Descktop)&lt;br&gt;8GB, i7 6 cores&lt;/td&gt;
&lt;td&gt;19m 37s&lt;/td&gt;
&lt;td&gt;First build failed after 1 hour&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Linuxdev (Windows host)&lt;br&gt;8GB , i7 4 cores&lt;/td&gt;
&lt;td&gt;21m 13s&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;This was just an instance of the build. Just to let you know.
As you noticed, Linuxdev was the best in some situation.&lt;/p&gt;
&lt;h2 id=&quot;setting-up-the-linuxdev-environment&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#setting-up-the-linuxdev-environment&quot; aria-label=&quot;setting up the linuxdev environment permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Setting up the Linuxdev environment&lt;/h2&gt;
&lt;h3 id=&quot;-note-for-windows-users&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#-note-for-windows-users&quot; aria-label=&quot; note for windows users permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;⚠ Note for Windows users&lt;/h3&gt;
&lt;p&gt;The script will disable Hyper-v (WSL2) and replace with VM and you can also use Docker from the host OS&lt;/p&gt;
&lt;h3 id=&quot;running-scripts&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#running-scripts&quot; aria-label=&quot;running scripts permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Running scripts&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Unzip or git clone this repo
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/kennyhyun/linuxdev/archive/refs/heads/main.zip&quot;&gt;https://github.com/kennyhyun/linuxdev/archive/refs/heads/main.zip&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run setup scripts
&lt;ul&gt;
&lt;li&gt;Windows
&lt;ol&gt;
&lt;li&gt;Install host dependencies and dev tools
&lt;ul&gt;
&lt;li&gt;Open powershell as Admin and run
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass&lt;/code&gt;: enables ps1 for this powersell process&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;setup.ps1&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;This might require rebooting.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Bootup vagrant with provision
&lt;ul&gt;
&lt;li&gt;Open terminal (git bash) and run &lt;code class=&quot;language-text&quot;&gt;bootstrap.sh&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Mac
&lt;ol&gt;
&lt;li&gt;Install host dependencies and dev tools
&lt;ul&gt;
&lt;li&gt;Open teminal and run &lt;code class=&quot;language-text&quot;&gt;setup.sh&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Bootup vagrant with provision
&lt;ul&gt;
&lt;li&gt;continue to run &lt;code class=&quot;language-text&quot;&gt;bootstrap.sh&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Wait until bootstrap.sh does
&lt;ul&gt;
&lt;li&gt;input username to use in the VM&lt;/li&gt;
&lt;li&gt;Install Debian Linux 10.10&lt;/li&gt;
&lt;li&gt;Install Docker v20.10.8 (configurable in config/env_var.sh; remove VERSION if you want the latest)&lt;/li&gt;
&lt;li&gt;Install docker-compose (v1.29.2; configurable in .env &lt;code class=&quot;language-text&quot;&gt;__VM__COMPOSE_VERSION&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Create a user with UID 1000 and sudoer&lt;/li&gt;
&lt;li&gt;ohmyzsh&lt;/li&gt;
&lt;li&gt;expose samba share, &lt;code class=&quot;language-text&quot;&gt;Projects&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;generate id_rsa key and show public key&lt;/li&gt;
&lt;li&gt;add ssh config for linuxdev&lt;/li&gt;
&lt;li&gt;generate docker certificates and set bash variables&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It’s okay to repeat this bootstrap script if something went wrong.&lt;/p&gt;
&lt;h3 id=&quot;after-finished-bootstraping&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#after-finished-bootstraping&quot; aria-label=&quot;after finished bootstraping permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;After finished bootstraping&lt;/h3&gt;
&lt;p&gt;Copy and paste ssh public key to use in Github and where ever it’s required.&lt;/p&gt;
&lt;p&gt;Now you can ssh into Linux dev env&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;ssh&lt;/span&gt; linuxdev&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;and you can also run any linux commands from the host terminal&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;ssh&lt;/span&gt; linuxdev -t &lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; hello from VM&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;For Windows Terminal, there is also a profile generated for the machine.&lt;/p&gt;
&lt;p&gt;An additional external configuration &lt;a href=&quot;https://github.com/kennyhyun/dotfiles&quot;&gt;dotfiles project like this&lt;/a&gt; can be added&lt;/p&gt;
&lt;p&gt;If DOTFILES_REPO has been defined in &lt;code class=&quot;language-text&quot;&gt;.env&lt;/code&gt;, it clones the repo to ~/dotfiles and try to run&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bootstrap*&lt;/li&gt;
&lt;li&gt;init*&lt;/li&gt;
&lt;li&gt;install*&lt;/li&gt;
&lt;li&gt;setup*&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;any of files which is executable.&lt;/p&gt;
&lt;h2 id=&quot;demo&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#demo&quot; aria-label=&quot;demo permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Demo&lt;/h2&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;setup.ps1&lt;/code&gt; (Windows Powershell script; Use setup.sh for Mac)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://asciinema.org/a/IqGHfToxLcfSwSJRoBIHZBoWY&quot;&gt;&lt;img src=&quot;https://asciinema.org/a/IqGHfToxLcfSwSJRoBIHZBoWY.svg&quot; alt=&quot;asciicast&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;bootstrap.sh&lt;/code&gt; (Mac; You can also use it in Git bash in Windows Terminal)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://asciinema.org/a/o7HNUExImgO6gCKjlUTczwK7G&quot;&gt;&lt;img src=&quot;https://asciinema.org/a/o7HNUExImgO6gCKjlUTczwK7G.svg&quot; alt=&quot;asciicast&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;packages-managed-by-linuxdev&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#packages-managed-by-linuxdev&quot; aria-label=&quot;packages managed by linuxdev permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Packages managed by Linuxdev&lt;/h2&gt;
&lt;h3 id=&quot;packages-covered-by-setup-host&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#packages-covered-by-setup-host&quot; aria-label=&quot;packages covered by setup host permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Packages covered by setup (host)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;vagrant&lt;/li&gt;
&lt;li&gt;virtualbox&lt;/li&gt;
&lt;li&gt;vscode&lt;/li&gt;
&lt;li&gt;git&lt;/li&gt;
&lt;li&gt;Windows Terminal (Windows)&lt;/li&gt;
&lt;li&gt;iterm2 (Mac)&lt;/li&gt;
&lt;li&gt;gnu-sed (Mac)&lt;/li&gt;
&lt;li&gt;and so on…&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;packages-covered-by-bootstrap-vm&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#packages-covered-by-bootstrap-vm&quot; aria-label=&quot;packages covered by bootstrap vm permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Packages covered by bootstrap (VM)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;docker (installed by vagrant provision)&lt;/li&gt;
&lt;li&gt;docker-compose&lt;/li&gt;
&lt;li&gt;python3-pip&lt;/li&gt;
&lt;li&gt;git&lt;/li&gt;
&lt;li&gt;zsh&lt;/li&gt;
&lt;li&gt;oh-my-zsh&lt;/li&gt;
&lt;li&gt;vim-gtk (for vim-python3)&lt;/li&gt;
&lt;li&gt;dnsutils&lt;/li&gt;
&lt;li&gt;and so on…&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;tips&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#tips&quot; aria-label=&quot;tips permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;a href=&quot;./docs/tips&quot;&gt;Tips&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&quot;configuring-vm&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#configuring-vm&quot; aria-label=&quot;configuring vm permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;a href=&quot;./docs/configuring-vm&quot;&gt;Configuring VM&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&quot;installing-and-using-docker-clients&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#installing-and-using-docker-clients&quot; aria-label=&quot;installing and using docker clients permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Installing and using docker clients&lt;/h2&gt;
&lt;p&gt;This vm provides docker connection in &lt;code class=&quot;language-text&quot;&gt;2376&lt;/code&gt; port.
If you have docker client and set the env vars you can use docker from the host like Docker Desktop.&lt;/p&gt;
&lt;p&gt;You can also install docker and docker-compose by running install-docker-clients script.&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;.bashrc&lt;/code&gt; or &lt;code class=&quot;language-text&quot;&gt;.zshrc&lt;/code&gt; has DOCKER_HOST and required variables for Mac/Git-bash and &lt;code class=&quot;language-text&quot;&gt;docker_env.bat&lt;/code&gt; will set variables in the command terminal in Windows.&lt;/p&gt;
&lt;p&gt;Bootstrap installes the required variables automaticaly so you can use docker straightaway.&lt;/p&gt;
&lt;h2 id=&quot;additional-goals&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#additional-goals&quot; aria-label=&quot;additional goals permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Additional Goals&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Share virtualbox env across Bootcamp&lt;/li&gt;
&lt;li&gt;Provide recommended fonts with Powerline patch&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;license&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#license&quot; aria-label=&quot;license permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;License&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/kennyhyun/linuxdev/blob/main/LICENSE&quot;&gt;MIT License&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Configuring VM]]></title><description><![CDATA[Configuring the VM You can create .env to customize the VM environment. Bootstrap interactively inputs the required values with some default…]]></description><link>https://kenny.yeoyou.net/linuxdev/docs/configuring-vm/</link><guid isPermaLink="false">https://kenny.yeoyou.net/linuxdev/docs/configuring-vm/</guid><pubDate>Fri, 15 Oct 2021 00:00:00 GMT</pubDate><content:encoded>&lt;h1 id=&quot;configuring-the-vm&quot; style=&quot;position:relative;&quot; class=&quot;title&quot;&gt;&lt;a href=&quot;#configuring-the-vm&quot; aria-label=&quot;configuring the vm permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Configuring the VM&lt;/h1&gt;
&lt;p&gt;You can create .env to customize the VM environment. Bootstrap interactively inputs the required values with some default values.&lt;/p&gt;
&lt;h2 id=&quot;interactive-variables&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#interactive-variables&quot; aria-label=&quot;interactive variables permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Interactive Variables&lt;/h2&gt;
&lt;p&gt;They have default values and are asked during bootstrap.sh and saved so it’s not asked again.&lt;/p&gt;
&lt;h3 id=&quot;name&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#name&quot; aria-label=&quot;name permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Name&lt;/h3&gt;
&lt;p&gt;Machine name&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;NAME=awesome-name&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This will rename the machine name in VirtualBox. run &lt;code class=&quot;language-text&quot;&gt;vagrant reload&lt;/code&gt; to apply when updated.&lt;/p&gt;
&lt;p&gt;It will also set the hostname of VM&lt;/p&gt;
&lt;h3 id=&quot;cpus-and-memory&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#cpus-and-memory&quot; aria-label=&quot;cpus and memory permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Cpus and memory&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;CPUS=4
MEMORY=8192&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This will adjust cpus and memory, run &lt;code class=&quot;language-text&quot;&gt;vagrant reload&lt;/code&gt; to apply when updated.&lt;/p&gt;
&lt;h3 id=&quot;vagrant-username&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#vagrant-username&quot; aria-label=&quot;vagrant username permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Vagrant Username&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;EXPAND_DISK_GB=10&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;dotfiles-repo&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#dotfiles-repo&quot; aria-label=&quot;dotfiles repo permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Dotfiles Repo&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;DOTFILES_REPO=https://github.com/kennyhyun/dotfiles.git&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This will make bootstrap continue to set VM environment using this external script repo&lt;/p&gt;
&lt;p&gt;** This has no default variable&lt;/p&gt;
&lt;h2 id=&quot;optional-variables&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#optional-variables&quot; aria-label=&quot;optional variables permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Optional Variables&lt;/h2&gt;
&lt;p&gt;it’s not saved automatically but you can manually add by editing .env file&lt;/p&gt;
&lt;h3 id=&quot;expand-disk-size&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#expand-disk-size&quot; aria-label=&quot;expand disk size permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Expand disk size&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;EXPAND_DISK_GB=10&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;It’s using 60GB of disk image but it’s dynamically allocated.
It’s is great in most case but when the disk space is expanded, the VM performance will be deteriorated.&lt;/p&gt;
&lt;p&gt;This will expand the disk during bootstrap.
And you will have some slowness on the VM for a while but would not be slow while using the VM afterwhile.&lt;/p&gt;
&lt;p&gt;This should be setup before running bootstrap.
Or you can retry after removing &lt;code class=&quot;language-text&quot;&gt;/dummy&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&quot;docker-lib-disk&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#docker-lib-disk&quot; aria-label=&quot;docker lib disk permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Docker lib disk&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;DOCKER_DISK_SIZE_GB=45&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This creates a dedicated docker disk and mount to &lt;code class=&quot;language-text&quot;&gt;/var/lib/docker&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This uses a &lt;strong&gt;Fixed&lt;/strong&gt; size disk image for the performance, so please check the free space before setting this.
There is a startup script to check empty disk partition and format to utilise as a docker disk.
If you want to change the size, shutdown the VM and remove the image and delete existing, and change this and start the VM. Please note any data in the container &lt;strong&gt;will be gone&lt;/strong&gt; with the previous disk image.&lt;/p&gt;
&lt;p&gt;Please note that creating a fixed size image can take a few minutes, but maybe longer in Mac (like an hour). Please be patience.&lt;/p&gt;
&lt;p&gt;This has no default value so it uses the dynamic sized system disk image (maximum 60GB).&lt;/p&gt;
&lt;p&gt;If you had some data left in the system disk docker libs, you can see that by 1. stop docker, 2. unmounting /var/lib/docker, 3. start docker again. You can also delete that after unmounting if you don’t need that any more.&lt;/p&gt;
&lt;h3 id=&quot;docker-compose-version&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#docker-compose-version&quot; aria-label=&quot;docker compose version permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;docker-compose version&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;COMPOSE_VERSION=1.29.2&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Downloads docker-compose from &lt;code class=&quot;language-text&quot;&gt;https://github.com/docker/compose/releases/download/\${dc_version}/docker-compose-$(uname -s)-$(uname -m)&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&quot;share-host-directories&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#share-host-directories&quot; aria-label=&quot;share host directories permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Share host directories&lt;/h3&gt;
&lt;p&gt;You can add shared directory by envionment variables. You will need to &lt;code class=&quot;language-text&quot;&gt;vagrat reload&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;HOST_PATHS=~/Projects,C:\ProgramData&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If you use &lt;strong&gt;docker&lt;/strong&gt; in the host OS and binding volumes, the source volume should be in the HOST_PATHS&lt;/p&gt;
&lt;p&gt;If the path does not exist, it creates a blank directory and shares&lt;/p&gt;
&lt;h3 id=&quot;setting-vm-environment-variables&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#setting-vm-environment-variables&quot; aria-label=&quot;setting vm environment variables permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Setting VM environment variables&lt;/h3&gt;
&lt;p&gt;If you want to set VM environment variables by the host .env file, use &lt;code class=&quot;language-text&quot;&gt;__VM__&lt;/code&gt; prefix&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;__VM__VERSION=1.2.3&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Will set&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;VERSION=1.2.3&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;in the VM&lt;/p&gt;
&lt;p&gt;** __VM__ZSH_THEME will set the omz theme in the VM. Please try your favorite one&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/ohmyzsh/ohmyzsh/wiki/Themes&quot;&gt;https://github.com/ohmyzsh/ohmyzsh/wiki/Themes&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;setting-vm-hosts-entries&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#setting-vm-hosts-entries&quot; aria-label=&quot;setting vm hosts entries permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Setting VM hosts entries&lt;/h3&gt;
&lt;p&gt;If you want to add some hosts entry from the host &lt;code class=&quot;language-text&quot;&gt;.env&lt;/code&gt; file, use &lt;code class=&quot;language-text&quot;&gt;__VMHOSTS__&lt;/code&gt; prefix&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;__VMHOSTS__127_0_0_1=somehost&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Note that underscores (&lt;code class=&quot;language-text&quot;&gt;_&lt;/code&gt;) will be replaced to &lt;code class=&quot;language-text&quot;&gt;.&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Will addd&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;127.0.0.1 somehost&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;to &lt;code class=&quot;language-text&quot;&gt;/etc/hosts&lt;/code&gt; in the VM&lt;/p&gt;
&lt;p&gt;If you need multiple enrties with the same IP address, you will need some suffix to distinguish enrties&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;__VMHOSTS__127_0_0_1=somehost
__VMHOSTS__127_0_0_1_a=anotherhost
__VMHOSTS__127_0_0_1_t=theotherhost&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Anything after 4th underscore is ignored&lt;/p&gt;
&lt;h3 id=&quot;fonts&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#fonts&quot; aria-label=&quot;fonts permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Fonts&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;FONT_URLS=https://www.fontsquirrel.com/fonts/download/camingocode
PATCHED_FONT_URLS=https://github.com/tonsky/FiraCode/releases/download/5.2/Fira_Code_v5.2.zip&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;will download url and install those automatically.&lt;/p&gt;
&lt;p&gt;you can use urls for ttfs or zip files separated with comma&lt;/p&gt;
&lt;p&gt;It patches font for powerline with &lt;a href=&quot;https://www.nerdfonts.com/&quot;&gt;nerd fonts&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For already patched fonts, it can be used in &lt;code class=&quot;language-text&quot;&gt;PATCHED_FONT_URLS&lt;/code&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Trouble shooting and advanced usages]]></title><description><![CDATA[Trouble shooting and advanced usages Want to change the host only network IP  is hardcoded in  so you can edit Want to destroy the VM but…]]></description><link>https://kenny.yeoyou.net/linuxdev/docs/trouble-shooting-and-advanced-usages/</link><guid isPermaLink="false">https://kenny.yeoyou.net/linuxdev/docs/trouble-shooting-and-advanced-usages/</guid><pubDate>Fri, 15 Oct 2021 00:00:00 GMT</pubDate><content:encoded>&lt;h1 id=&quot;trouble-shooting-and-advanced-usages&quot; style=&quot;position:relative;&quot; class=&quot;title&quot;&gt;&lt;a href=&quot;#trouble-shooting-and-advanced-usages&quot; aria-label=&quot;trouble shooting and advanced usages permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Trouble shooting and advanced usages&lt;/h1&gt;
&lt;h2 id=&quot;want-to-change-the-host-only-network-ip&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#want-to-change-the-host-only-network-ip&quot; aria-label=&quot;want to change the host only network ip permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Want to change the host only network IP&lt;/h2&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;192.168.99.123&lt;/code&gt; is hardcoded in &lt;code class=&quot;language-text&quot;&gt;Vagrantfile&lt;/code&gt; so you can edit&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;ruby&quot;&gt;&lt;pre class=&quot;language-ruby&quot;&gt;&lt;code class=&quot;language-ruby&quot;&gt;  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;vm&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;network &lt;span class=&quot;token string&quot;&gt;&quot;private_network&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; ip&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;192.168.99.123&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;want-to-destroy-the-vm-but-use-the-docker-lib-storage-in-the-new-vm&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#want-to-destroy-the-vm-but-use-the-docker-lib-storage-in-the-new-vm&quot; aria-label=&quot;want to destroy the vm but use the docker lib storage in the new vm permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Want to destroy the VM but use the docker lib storage in the new VM&lt;/h2&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;vagrant destory&lt;/code&gt; will remove all the VM storage attached.&lt;/p&gt;
&lt;p&gt;To avoid deletion of the storage attached,&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Shutdown the VM first with &lt;code class=&quot;language-text&quot;&gt;vagrant halt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;dettach the disk using Virtualbox
&lt;ol&gt;
&lt;li&gt;Open Oracle VM VirtualBox&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/5399854/137492415-55e4939a-e0fc-4b2c-9310-0c80cc0a4835.png&quot; alt=&quot;image&quot;&gt;
2. In Tools &gt; Media, identify docker.xx.vdi in the right pane, which is used in the VM
3. right click and click Release
&lt;img src=&quot;https://user-images.githubusercontent.com/5399854/137492552-765d1f06-52e9-4c98-b7ed-8b153c3fd7db.png&quot; alt=&quot;image&quot;&gt;
3. destroy the VM running &lt;code class=&quot;language-text&quot;&gt;./destroy.sh&lt;/code&gt; in linuxdev dir
4. bootstrap.sh
5. run &lt;code class=&quot;language-text&quot;&gt;sudo /root/docker.disk.sh /dev/sdb1&lt;/code&gt; to attach the storage&lt;/p&gt;
&lt;h2 id=&quot;want-to-create-another-vm&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#want-to-create-another-vm&quot; aria-label=&quot;want to create another vm permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Want to create another VM&lt;/h2&gt;
&lt;p&gt;Clone this repo in the other directory and use different machine name during &lt;code class=&quot;language-text&quot;&gt;bootstrap.sh&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You will need to manage DOCKER_xxx variables manually&lt;/p&gt;
&lt;h2 id=&quot;creating-machine-failed&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#creating-machine-failed&quot; aria-label=&quot;creating machine failed permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Creating machine failed&lt;/h2&gt;
&lt;p&gt;Find &lt;code class=&quot;language-text&quot;&gt;%USERPROFILE%\VirualBox VMs\&amp;lt;machine_name&gt;\Logs&lt;/code&gt; and try to delete.
If it cannot be deleted, see the Task Manager and&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/5399854/137558547-1dc16fcf-6484-4482-bb4b-abd27bde586e.png&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;End tasks for &lt;code class=&quot;language-text&quot;&gt;VirtualBox Headless Frontend&lt;/code&gt; and try to remove the Logs directory and try again.&lt;/p&gt;
&lt;h2 id=&quot;osx-big-sur&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#osx-big-sur&quot; aria-label=&quot;osx big sur permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;OSX Big Sur&lt;/h2&gt;
&lt;p&gt;VirtualBox fails to add host-only network when it’s not allowed in the &lt;code class=&quot;language-text&quot;&gt;Security &amp;amp; Privacy&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/5399854/137605674-07023bcc-cd73-4159-9c9c-bcd3220611e1.png&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;Without this, creating VM using Vagrant won’t work.&lt;/p&gt;
&lt;h3 id=&quot;version-114&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#version-114&quot; aria-label=&quot;version 114 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Version 11.4?&lt;/h3&gt;
&lt;p&gt;I had some issue with granting the Virtualbox kernel extension, which was keep asking the permission after rebooting. Allowing actually was not working.&lt;/p&gt;
&lt;p&gt;The issue was fixed I upgrade OSX to 16.&lt;/p&gt;
&lt;p&gt;If you have 11.4, please consider upgrade to 11.6 or the latest.&lt;/p&gt;
&lt;h2 id=&quot;use-ext4-partition-on-windows-10&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#use-ext4-partition-on-windows-10&quot; aria-label=&quot;use ext4 partition on windows 10 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Use ext4 partition on Windows 10&lt;/h2&gt;
&lt;p&gt;This would be just an instace how to use ext4 partitions&lt;/p&gt;
&lt;p&gt;USB external disks can be mounted directly to the Linux on VM and if you have VirtualBox Extension pack, USB3 is also supported.&lt;/p&gt;
&lt;p&gt;The following instruction is mounting external disk to VirtualBox without the extension pack.&lt;/p&gt;
&lt;h3 id=&quot;mount-entire-system-disk-to-virutalbox&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#mount-entire-system-disk-to-virutalbox&quot; aria-label=&quot;mount entire system disk to virutalbox permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Mount entire system disk to Virutalbox&lt;/h3&gt;
&lt;h4 id=&quot;create-vmdk-file-for-the-physical-drive&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#create-vmdk-file-for-the-physical-drive&quot; aria-label=&quot;create vmdk file for the physical drive permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;create vmdk file for the physical drive&lt;/h4&gt;
&lt;p&gt;Windows Disk Management will show the external disks with the number like 0, 1, 2&lt;/p&gt;
&lt;p&gt;if you have the only system drive, it will be 0. so the find the number of the disk which you want to mount.&lt;/p&gt;
&lt;p&gt;And run following command in Powershell (admin)
with modifying the number &lt;code class=&quot;language-text&quot;&gt;2&lt;/code&gt; to the number of your disk&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;powershell&quot;&gt;&lt;pre class=&quot;language-powershell&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;VBoxManage internalcommands createrawvmdk &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;filename &lt;span class=&quot;token string&quot;&gt;&quot;&lt;span class=&quot;token variable&quot;&gt;$env&lt;/span&gt;:USERPROFILE\VirtualBox VMs\external-disk-2.vmdk&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;rawdisk \\&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;\PhysicalDrive2&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;add the vmdk to your virtualbox.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;ruby&quot;&gt;&lt;pre class=&quot;language-ruby&quot;&gt;&lt;code class=&quot;language-ruby&quot;&gt;  config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;vm&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;provider &lt;span class=&quot;token string&quot;&gt;&quot;virtualbox&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt;vb&lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;
    disk_filename &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token constant&quot;&gt;ENV&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;USERPROFILE&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;/VirtualBox VMs/ext4t2.vmdk&quot;&lt;/span&gt;
    vb&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;customize &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;storageattach&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token symbol&quot;&gt;:id&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;--storagectl&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;SATA Controller&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;--port&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;--type&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;hdd&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;--medium&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; disk_filename&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You will need Administrator privileges to starth the VM.&lt;/p&gt;
&lt;p&gt;Shutdown all the running VirtualBox VM and kill close Virtualbox and kill all running VBox related tasks. and runt &lt;code class=&quot;language-text&quot;&gt;vagrant reload&lt;/code&gt; command as Admnistrator.&lt;/p&gt;
&lt;p&gt;When the VM is running, you can check the partitions by&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;ls&lt;/span&gt; -la /dev/disk/by-uuid/&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;or by root (&lt;code class=&quot;language-text&quot;&gt;sudo su -&lt;/code&gt;)&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;fdisk&lt;/span&gt; -l&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;mount the partition by &lt;code class=&quot;language-text&quot;&gt;mount /dev/disk/by-uuid/4fcc4aba-dd74-4212-b6f0-154c49c69242 /mnt/external-disk-2&lt;/code&gt;
or add that to &lt;code class=&quot;language-text&quot;&gt;/etc/fstab&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;And you can use &lt;code class=&quot;language-text&quot;&gt;startup_as_admin.bat&lt;/code&gt; in the scripts directory to start the VM as administrator&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Tips]]></title><description><![CDATA[Tips Useful Commands  to shut down the VM  to turn on the VM  apply .env settings like MEMORY, CPUS with rebooting vm  to destroy the VM and…]]></description><link>https://kenny.yeoyou.net/linuxdev/docs/tips/</link><guid isPermaLink="false">https://kenny.yeoyou.net/linuxdev/docs/tips/</guid><pubDate>Sun, 26 Sep 2021 00:00:00 GMT</pubDate><content:encoded>&lt;h1 id=&quot;tips&quot; style=&quot;position:relative;&quot; class=&quot;title&quot;&gt;&lt;a href=&quot;#tips&quot; aria-label=&quot;tips permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Tips&lt;/h1&gt;
&lt;h2 id=&quot;useful-commands&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#useful-commands&quot; aria-label=&quot;useful commands permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Useful Commands&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;vagrant halt&lt;/code&gt; to shut down the VM&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;vagrant up&lt;/code&gt; to turn on the VM&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;vagrant reload&lt;/code&gt; apply .env settings like MEMORY, CPUS with &lt;strong&gt;rebooting vm&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;./destory.sh&lt;/code&gt; to destroy the VM and start from scratch&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want to repeat from scratch for some reason, you can run &lt;code class=&quot;language-text&quot;&gt;./destroy.sh&lt;/code&gt; and retry &lt;code class=&quot;language-text&quot;&gt;bootstrap.sh&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;docker&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#docker&quot; aria-label=&quot;docker permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Docker&lt;/h2&gt;
&lt;p&gt;docker is available and you will see the samba container running for the VM&lt;/p&gt;
&lt;p&gt;Please use install-docker-clients script if you don’t have docker clients installed.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.vagrantmanager.com/&quot;&gt;Vagrant Manager&lt;/a&gt; would be nice to have. Try setup.ps1 with &lt;code class=&quot;language-text&quot;&gt;-withvagrantmanager&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&quot;mapping-network-drive-from-the-machine&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#mapping-network-drive-from-the-machine&quot; aria-label=&quot;mapping network drive from the machine permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Mapping network drive from the machine&lt;/h2&gt;
&lt;p&gt;Virtualbox machine has IP of 192.168.99.123 by default
and it shares Projects directory so Host machine can see the files in it.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;\\192.168.99.123\Projects&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;** Windows git global config should have filemode turned off&lt;/p&gt;
&lt;h2 id=&quot;setup-parameters&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#setup-parameters&quot; aria-label=&quot;setup parameters permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Setup parameters&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;powershell&quot;&gt;&lt;pre class=&quot;language-powershell&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;\setup&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ps1 &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;nodevtools&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;or&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;./setup.sh --no-devtools&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;will skip installing git(for Mac), vscode, and terminal.&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;--no-{vscode,git,vagrant,virtualbox,...}&lt;/code&gt; is also available&lt;/p&gt;
&lt;p&gt;** git should be required for Windows to run git-bash&lt;/p&gt;
&lt;h3 id=&quot;basic-os-setting&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#basic-os-setting&quot; aria-label=&quot;basic os setting permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;basic os setting&lt;/h3&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;-withosconfig&lt;/code&gt; will update registry for&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Disable Secure Desktop (UAC Dimming)&lt;/li&gt;
&lt;li&gt;Set active hour (8am to 2am)&lt;/li&gt;
&lt;li&gt;Show hidden files and extensions&lt;/li&gt;
&lt;li&gt;Disable Windows Update&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can also run separately by &lt;code class=&quot;language-text&quot;&gt;scripts/basic-config.ps1&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&quot;docker-storage&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#docker-storage&quot; aria-label=&quot;docker storage permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Docker Storage&lt;/h2&gt;
&lt;p&gt;Docker tend to use many small files especially for node.js projects&lt;/p&gt;
&lt;p&gt;If the main storage has not enough inodes, docker can fail because of the disk space.
You can check that &lt;code class=&quot;language-text&quot;&gt;df -h&lt;/code&gt; has some free space but &lt;code class=&quot;language-text&quot;&gt;df -hi&lt;/code&gt; shows a low free space.&lt;/p&gt;
&lt;p&gt;BTW, You can prune unused file by following docker command but it would rebuild required files soon.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;docker system prune --volumes&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This vgrantfile has additional space file of 40GB and it can be configured by &lt;code class=&quot;language-text&quot;&gt;DOCKER_DISK_SIZE_GB=40&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&quot;details-for-windows-10-users&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#details-for-windows-10-users&quot; aria-label=&quot;details for windows 10 users permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Details For Windows 10 users&lt;/h2&gt;
&lt;h3 id=&quot;setupps1&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#setupps1&quot; aria-label=&quot;setupps1 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;setup.ps1&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;:warning: &lt;strong&gt;Note that this script will disable WSL2(Hyper-V).&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Please backup any required files before running. Docker will be still available by this VM&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Right click windows menu and click Windows Powershell (Admin)&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;powershell&quot;&gt;&lt;pre class=&quot;language-powershell&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Set-ExecutionPolicy&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Scope &lt;span class=&quot;token keyword&quot;&gt;Process&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;ExecutionPolicy Bypass&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Run the setup script in the directory of this repo&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;powershell&quot;&gt;&lt;pre class=&quot;language-powershell&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;\Users\xxx\linuxdev\setup&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ps1&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;** Running setup script again will check updates and install if newer version found&lt;/p&gt;
&lt;h3 id=&quot;bootstrapsh&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#bootstrapsh&quot; aria-label=&quot;bootstrapsh permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;bootstrap.sh&lt;/h3&gt;
&lt;p&gt;Open Windows Terminal for Gitbash or just Git Bash&lt;/p&gt;
&lt;p&gt;In linuxdev dir (this repo)&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;./bootstrap.sh&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This will create virtualbox machine and bootup and config&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Tips]]></title><description><![CDATA[팁 유용한 명령  로 VM을 종료합니다  으로 VM을 시작합니다  로 MEMORY, CPUS와 같은 .env 세팅을 적용하고 재부팅 합니다  로 VM…]]></description><link>https://kenny.yeoyou.net/linuxdev/ko/docs/tips/</link><guid isPermaLink="false">https://kenny.yeoyou.net/linuxdev/ko/docs/tips/</guid><pubDate>Sun, 26 Sep 2021 00:00:00 GMT</pubDate><content:encoded>&lt;h1 id=&quot;팁&quot; style=&quot;position:relative;&quot; class=&quot;title&quot;&gt;&lt;a href=&quot;#%ED%8C%81&quot; aria-label=&quot;팁 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;팁&lt;/h1&gt;
&lt;h2 id=&quot;유용한-명령&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#%EC%9C%A0%EC%9A%A9%ED%95%9C-%EB%AA%85%EB%A0%B9&quot; aria-label=&quot;유용한 명령 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;유용한 명령&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;vagrant halt&lt;/code&gt; 로 VM을 종료합니다&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;vagrant up&lt;/code&gt; 으로 VM을 시작합니다&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;vagrant reload&lt;/code&gt; 로 MEMORY, CPUS와 같은 .env 세팅을 적용하고 &lt;strong&gt;재부팅&lt;/strong&gt; 합니다&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;./destory.sh&lt;/code&gt; 로 VM을 파기하고 생성전의 상태로 돌아갑니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;여러가지 이유로 처음부터 시작하고 싶다면, &lt;code class=&quot;language-text&quot;&gt;./destroy.sh&lt;/code&gt; 한 후 다시 &lt;code class=&quot;language-text&quot;&gt;bootstrap.sh&lt;/code&gt; 명령을 실행하면 됩니다.&lt;/p&gt;
&lt;h2 id=&quot;도커&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#%EB%8F%84%EC%BB%A4&quot; aria-label=&quot;도커 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;도커&lt;/h2&gt;
&lt;p&gt;VM안에서 도커가 이용가능하고 VM을 위해 작동중인 samba 컨테이너를 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;호스트쪽에서도 도커를 사용할 수 있습니다.&lt;/p&gt;
&lt;p&gt;도커 실행파일이 설치되어있지 않으면 install-docker-clients 스크립트를 이용해 도커 명령어를 설치할 수 있습니다&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.vagrantmanager.com/&quot;&gt;Vagrant 매니저&lt;/a&gt; 도 사용하시면 좋습니다.&lt;/p&gt;
&lt;h2 id=&quot;vm으로부터-네트웍-드라이브-매핑&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#vm%EC%9C%BC%EB%A1%9C%EB%B6%80%ED%84%B0-%EB%84%A4%ED%8A%B8%EC%9B%8D-%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B8%8C-%EB%A7%A4%ED%95%91&quot; aria-label=&quot;vm으로부터 네트웍 드라이브 매핑 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;VM으로부터 네트웍 드라이브 매핑&lt;/h2&gt;
&lt;p&gt;Virtualbox 머신은 디폴트로 IP어드레스 192.168.99.123 가 설정됩니다.
그리고 유저 홈의 Projects 디렉토리를 공유하고 있습니다. 호스트 머신은 VM내의 Projects 디렉토리를 매핑할 수 있습니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;\\192.168.99.123\Projects&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;** 윈도우쪽에 설치된 git을 사용하는 경우는 global config의 filemode를 off로 설정하여야 합니다.&lt;/p&gt;
&lt;h2 id=&quot;setup-명령-파라메터&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#setup-%EB%AA%85%EB%A0%B9-%ED%8C%8C%EB%9D%BC%EB%A9%94%ED%84%B0&quot; aria-label=&quot;setup 명령 파라메터 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Setup 명령 파라메터&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;powershell&quot;&gt;&lt;pre class=&quot;language-powershell&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;\setup&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ps1 &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;nodevtools&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;또는&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;./setup.sh --no-devtools&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;는 git(for Mac), vscode, terminal 등의 설치를 건너뜁니다.&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;--no-{vscode,git,vagrant,virtualbox,...}&lt;/code&gt; 옵션도 사용 할 수 있습니다&lt;/p&gt;
&lt;p&gt;** 윈도우에서 git은 gitbash 때문에 필수입니다.&lt;/p&gt;
&lt;h3 id=&quot;basic-os-setting&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#basic-os-setting&quot; aria-label=&quot;basic os setting permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;basic os setting&lt;/h3&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;-withosconfig&lt;/code&gt; 로 다음과 같이 필수 레지스트리를 수정 합니다&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Secure Desktop (UAC Dimming) 비활성&lt;/li&gt;
&lt;li&gt;active hour 설정 (오전 8시 부터 오전 2시)&lt;/li&gt;
&lt;li&gt;숨김파일 및 확장자 표시&lt;/li&gt;
&lt;li&gt;Windows Update 비활성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can also run separately by &lt;code class=&quot;language-text&quot;&gt;scripts/basic-config.ps1&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&quot;도커-저장소&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#%EB%8F%84%EC%BB%A4-%EC%A0%80%EC%9E%A5%EC%86%8C&quot; aria-label=&quot;도커 저장소 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;도커 저장소&lt;/h2&gt;
&lt;p&gt;도커는 특히 node.js 프로젝트를 사용하는 경우 많은 작은 파일을 사용하게 됩니다.&lt;/p&gt;
&lt;p&gt;만약 주 디스크 용량이 inode 갯수가 부족한 경우는 도커 명령이 실패할 수 있습니다.
만약 그러한 상황일 경우 &lt;code class=&quot;language-text&quot;&gt;df -h&lt;/code&gt;명령으로는 공간이 좀 남아있지만, &lt;code class=&quot;language-text&quot;&gt;df -hi&lt;/code&gt;명령으로는 여유가 없는 것을 확인할 수 있을 것입니다.&lt;/p&gt;
&lt;p&gt;그럴 때에 보통 도커 커맨드로 사용하지 않는 파일들을 지워서 공간을 확보할 수 있지만 곳 다시 용량부족으로 문제가 될 수 있습니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;sh&quot;&gt;&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;docker system prune --volumes&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;본 Vagrantfile은 &lt;code class=&quot;language-text&quot;&gt;DOCKER_DISK_SIZE_GB=40&lt;/code&gt; 설정으로 40GB용량의 도커만의 고유 디스크 저장소를 확보 할 수 있습니다.&lt;/p&gt;
&lt;h2 id=&quot;윈도우10-사용자를-위한-추가-설명&quot; style=&quot;position:relative;&quot; class=&quot;subtitle&quot;&gt;&lt;a href=&quot;#%EC%9C%88%EB%8F%84%EC%9A%B010-%EC%82%AC%EC%9A%A9%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%B6%94%EA%B0%80-%EC%84%A4%EB%AA%85&quot; aria-label=&quot;윈도우10 사용자를 위한 추가 설명 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;윈도우10 사용자를 위한 추가 설명&lt;/h2&gt;
&lt;h3 id=&quot;setupps1&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#setupps1&quot; aria-label=&quot;setupps1 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;setup.ps1&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;:warning: &lt;strong&gt;본 스크립트는 WSL2(Hyper-V)를 비활성 합니다.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;실행전에 WSL쪽에서 필요한 파일들을 백업하세요. 도커는 VM을 통해서 다시 이용가능합니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;윈도우 메뉴버튼을 오른클릭 하여 윈도우 파워쉘 (관리자)를 클릭합니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;powershell&quot;&gt;&lt;pre class=&quot;language-powershell&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Set-ExecutionPolicy&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Scope &lt;span class=&quot;token keyword&quot;&gt;Process&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;ExecutionPolicy Bypass&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;본 리포지터리의 폴더 (linuxdev)의 셋업 스크립트를 실행합니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;powershell&quot;&gt;&lt;pre class=&quot;language-powershell&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;\Users\xxx\linuxdev\setup&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ps1&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;** 셋업 스크립트를 다시 실행하게 되면 최신버전을 확인하고 새 버전이 있으면 설치합니다.&lt;/p&gt;
&lt;h3 id=&quot;bootstrapsh&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#bootstrapsh&quot; aria-label=&quot;bootstrapsh permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;bootstrap.sh&lt;/h3&gt;
&lt;p&gt;Windows Terminal의 Gitbash를 열거나 Git Bash창을 엽니다.&lt;/p&gt;
&lt;p&gt;linuxdev 디렉토리 (본 리포지터리) 에서&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;./bootstrap.sh&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;위 명령은 virtualbox 머신을 생성하고 부팅시키고 자동 설정을 수행합니다.&lt;/p&gt;</content:encoded></item></channel></rss>