Latest commit

History

68 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

==Why Do We Need Varch?==
The use of virtualization is rapidly expanding in the Linux world, many Linux distributions have answered the move to virtualization with tool specific to their distributions for automated virtual machine provisioning.
The Fedora project spearheads the thincrust project (http://thincrust.org), and Ubuntu/Debian uses the vmbuilder tool. These tools can quickly generate installs of their distributions inside of virtual machine images that can then be used with KVM.
ArchLinux was therefore left in the dark, without a means to automate virtual machine provisioning. Not only this, but a number of special modifications need to be made to ensure that Arch is properly installed in a KVM virtual machine. This includes modifications to the mkinitcpio image as well as a careful installation of grub.
Varch was developed to solve these problems!
==How Does Varch Work?==
Many of the other virtual machine building tools are complicated, require sometimes many configuration files to be made, and a very long command line argument to create a virtual machine image. Varch is different, and made to be simple to use in the best efforts to follow KISS and the Arch way as possible.
Varch prepares a virtual machine image, mounts it using kpartx and then calls the Arch installation Framework to run the actual install, this ensures that arch is installed the "Arch" way without having to re-create an installer. This also means that varch is configured with the same files that configure AIF.
==Installation==
[http://aur.archlinux.org/packages.php?ID=42428 varch] can be installed from the community repository.
==Using Varch==
Using Varch is very simple, without arguments the varch command will generate a basic virtual machine image:
# varch
and the options are very basic, -c to pass a custom configuration file, -s to specify a size for the image, -f to tell the image to use another format (raw and qcow2 are supported) and -i to specify the output name of the virtual machine image. So, if using a custom config called custom.aif, making a qcow2 formatted image, with a size of 50 GiB and saving the image as "custom":
# varch -c custom.aif -f qcow2 -s 50G -i custom
By default Varch creates images for KVM, since KVM is the "blessed" Linux hypervisor, but since many other hypervisors exist, it would be folly to ignore them. So Varch also supports "generic" images, which are just raw disk images without virtio support, suitable for non hardware accelerated qemu use and converting into other virtual machine hard disks.
Varch also supports the Virtualbox vdi format.
=== Generic Image Support ===
Varch can also make non-KVM virtual machine images, this basically means that the virtio block drivers are not installed and the root disk is /dev/sda. To create a generic virtual machine image pass the -g or --generic flag:
# varch -g
=== Virtualbox Specific Images ===
Since Virtualbox is a popular choice for desktop virtualization support for Virtualbox vdi images has been added to Varch. Simply pass vdi as the format and the image will be made into a Virtualbox vdi image:
# varch -f vdi
=== Application of a File Overlay ===
While AIF can be used to easily modify the system post install, it can be difficult to script into the aif file the addition of many files. This is where the overlay feature comes into play.
The overlay option takes a directory, and anything in that directory will be copied, raw, into the the root of the virtual machine.
# varch -o ~/overlay/
Where ~/overlay contains a file system overlay.
=== Startup Script Generation ===
Since some virtual machines can be tricky to start, varch can generate startup scripts and configuration files.
==== KVM Startup Script ====
Since kvm virtual machines started with the qemu-kvm command can require additional arguments varch can generate a startup script for the kvm virtual machine. Add a -K argument and the script will be generated.
# varch -K
This will create a bash script named <vm name>-kvm.sh
==== Libvirt Startup Script ====
Libvirt can be the most powerful way to run virtual machines in Linux, varch can create a libvirt configuration file and a bash script to start the generated virtual machine. Simply add a -L flag to the virtual machine generation:
# varch -L

About

The Arch Linux virtual machine image generator

Resources

Stars

7 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

68 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

==Why Do We Need Varch?==
The use of virtualization is rapidly expanding in the Linux world, many Linux distributions have answered the move to virtualization with tool specific to their distributions for automated virtual machine provisioning.
The Fedora project spearheads the thincrust project (http://thincrust.org), and Ubuntu/Debian uses the vmbuilder tool. These tools can quickly generate installs of their distributions inside of virtual machine images that can then be used with KVM.
ArchLinux was therefore left in the dark, without a means to automate virtual machine provisioning. Not only this, but a number of special modifications need to be made to ensure that Arch is properly installed in a KVM virtual machine. This includes modifications to the mkinitcpio image as well as a careful installation of grub.
Varch was developed to solve these problems!
==How Does Varch Work?==
Many of the other virtual machine building tools are complicated, require sometimes many configuration files to be made, and a very long command line argument to create a virtual machine image. Varch is different, and made to be simple to use in the best efforts to follow KISS and the Arch way as possible.
Varch prepares a virtual machine image, mounts it using kpartx and then calls the Arch installation Framework to run the actual install, this ensures that arch is installed the "Arch" way without having to re-create an installer. This also means that varch is configured with the same files that configure AIF.
==Installation==
[http://aur.archlinux.org/packages.php?ID=42428 varch] can be installed from the community repository.
==Using Varch==
Using Varch is very simple, without arguments the varch command will generate a basic virtual machine image:
# varch
and the options are very basic, -c to pass a custom configuration file, -s to specify a size for the image, -f to tell the image to use another format (raw and qcow2 are supported) and -i to specify the output name of the virtual machine image. So, if using a custom config called custom.aif, making a qcow2 formatted image, with a size of 50 GiB and saving the image as "custom":
# varch -c custom.aif -f qcow2 -s 50G -i custom
By default Varch creates images for KVM, since KVM is the "blessed" Linux hypervisor, but since many other hypervisors exist, it would be folly to ignore them. So Varch also supports "generic" images, which are just raw disk images without virtio support, suitable for non hardware accelerated qemu use and converting into other virtual machine hard disks.
Varch also supports the Virtualbox vdi format.
=== Generic Image Support ===
Varch can also make non-KVM virtual machine images, this basically means that the virtio block drivers are not installed and the root disk is /dev/sda. To create a generic virtual machine image pass the -g or --generic flag:
# varch -g
=== Virtualbox Specific Images ===
Since Virtualbox is a popular choice for desktop virtualization support for Virtualbox vdi images has been added to Varch. Simply pass vdi as the format and the image will be made into a Virtualbox vdi image:
# varch -f vdi
=== Application of a File Overlay ===
While AIF can be used to easily modify the system post install, it can be difficult to script into the aif file the addition of many files. This is where the overlay feature comes into play.
The overlay option takes a directory, and anything in that directory will be copied, raw, into the the root of the virtual machine.
# varch -o ~/overlay/
Where ~/overlay contains a file system overlay.
=== Startup Script Generation ===
Since some virtual machines can be tricky to start, varch can generate startup scripts and configuration files.
==== KVM Startup Script ====
Since kvm virtual machines started with the qemu-kvm command can require additional arguments varch can generate a startup script for the kvm virtual machine. Add a -K argument and the script will be generated.
# varch -K
This will create a bash script named <vm name>-kvm.sh
==== Libvirt Startup Script ====
Libvirt can be the most powerful way to run virtual machines in Linux, varch can create a libvirt configuration file and a bash script to start the generated virtual machine. Simply add a -L flag to the virtual machine generation:
# varch -L

About

The Arch Linux virtual machine image generator

Resources

Stars

7 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

68 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

==Why Do We Need Varch?==
The use of virtualization is rapidly expanding in the Linux world, many Linux distributions have answered the move to virtualization with tool specific to their distributions for automated virtual machine provisioning.
The Fedora project spearheads the thincrust project (http://thincrust.org), and Ubuntu/Debian uses the vmbuilder tool. These tools can quickly generate installs of their distributions inside of virtual machine images that can then be used with KVM.
ArchLinux was therefore left in the dark, without a means to automate virtual machine provisioning. Not only this, but a number of special modifications need to be made to ensure that Arch is properly installed in a KVM virtual machine. This includes modifications to the mkinitcpio image as well as a careful installation of grub.
Varch was developed to solve these problems!
==How Does Varch Work?==
Many of the other virtual machine building tools are complicated, require sometimes many configuration files to be made, and a very long command line argument to create a virtual machine image. Varch is different, and made to be simple to use in the best efforts to follow KISS and the Arch way as possible.
Varch prepares a virtual machine image, mounts it using kpartx and then calls the Arch installation Framework to run the actual install, this ensures that arch is installed the "Arch" way without having to re-create an installer. This also means that varch is configured with the same files that configure AIF.
==Installation==
[http://aur.archlinux.org/packages.php?ID=42428 varch] can be installed from the community repository.
==Using Varch==
Using Varch is very simple, without arguments the varch command will generate a basic virtual machine image:
# varch
and the options are very basic, -c to pass a custom configuration file, -s to specify a size for the image, -f to tell the image to use another format (raw and qcow2 are supported) and -i to specify the output name of the virtual machine image. So, if using a custom config called custom.aif, making a qcow2 formatted image, with a size of 50 GiB and saving the image as "custom":
# varch -c custom.aif -f qcow2 -s 50G -i custom
By default Varch creates images for KVM, since KVM is the "blessed" Linux hypervisor, but since many other hypervisors exist, it would be folly to ignore them. So Varch also supports "generic" images, which are just raw disk images without virtio support, suitable for non hardware accelerated qemu use and converting into other virtual machine hard disks.
Varch also supports the Virtualbox vdi format.
=== Generic Image Support ===
Varch can also make non-KVM virtual machine images, this basically means that the virtio block drivers are not installed and the root disk is /dev/sda. To create a generic virtual machine image pass the -g or --generic flag:
# varch -g
=== Virtualbox Specific Images ===
Since Virtualbox is a popular choice for desktop virtualization support for Virtualbox vdi images has been added to Varch. Simply pass vdi as the format and the image will be made into a Virtualbox vdi image:
# varch -f vdi
=== Application of a File Overlay ===
While AIF can be used to easily modify the system post install, it can be difficult to script into the aif file the addition of many files. This is where the overlay feature comes into play.
The overlay option takes a directory, and anything in that directory will be copied, raw, into the the root of the virtual machine.
# varch -o ~/overlay/
Where ~/overlay contains a file system overlay.
=== Startup Script Generation ===
Since some virtual machines can be tricky to start, varch can generate startup scripts and configuration files.
==== KVM Startup Script ====
Since kvm virtual machines started with the qemu-kvm command can require additional arguments varch can generate a startup script for the kvm virtual machine. Add a -K argument and the script will be generated.
# varch -K
This will create a bash script named <vm name>-kvm.sh
==== Libvirt Startup Script ====
Libvirt can be the most powerful way to run virtual machines in Linux, varch can create a libvirt configuration file and a bash script to start the generated virtual machine. Simply add a -L flag to the virtual machine generation:
# varch -L

About

The Arch Linux virtual machine image generator

Resources

Stars

7 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

68 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

==Why Do We Need Varch?==
The use of virtualization is rapidly expanding in the Linux world, many Linux distributions have answered the move to virtualization with tool specific to their distributions for automated virtual machine provisioning.
The Fedora project spearheads the thincrust project (http://thincrust.org), and Ubuntu/Debian uses the vmbuilder tool. These tools can quickly generate installs of their distributions inside of virtual machine images that can then be used with KVM.
ArchLinux was therefore left in the dark, without a means to automate virtual machine provisioning. Not only this, but a number of special modifications need to be made to ensure that Arch is properly installed in a KVM virtual machine. This includes modifications to the mkinitcpio image as well as a careful installation of grub.
Varch was developed to solve these problems!
==How Does Varch Work?==
Many of the other virtual machine building tools are complicated, require sometimes many configuration files to be made, and a very long command line argument to create a virtual machine image. Varch is different, and made to be simple to use in the best efforts to follow KISS and the Arch way as possible.
Varch prepares a virtual machine image, mounts it using kpartx and then calls the Arch installation Framework to run the actual install, this ensures that arch is installed the "Arch" way without having to re-create an installer. This also means that varch is configured with the same files that configure AIF.
==Installation==
[http://aur.archlinux.org/packages.php?ID=42428 varch] can be installed from the community repository.
==Using Varch==
Using Varch is very simple, without arguments the varch command will generate a basic virtual machine image:
# varch
and the options are very basic, -c to pass a custom configuration file, -s to specify a size for the image, -f to tell the image to use another format (raw and qcow2 are supported) and -i to specify the output name of the virtual machine image. So, if using a custom config called custom.aif, making a qcow2 formatted image, with a size of 50 GiB and saving the image as "custom":
# varch -c custom.aif -f qcow2 -s 50G -i custom
By default Varch creates images for KVM, since KVM is the "blessed" Linux hypervisor, but since many other hypervisors exist, it would be folly to ignore them. So Varch also supports "generic" images, which are just raw disk images without virtio support, suitable for non hardware accelerated qemu use and converting into other virtual machine hard disks.
Varch also supports the Virtualbox vdi format.
=== Generic Image Support ===
Varch can also make non-KVM virtual machine images, this basically means that the virtio block drivers are not installed and the root disk is /dev/sda. To create a generic virtual machine image pass the -g or --generic flag:
# varch -g
=== Virtualbox Specific Images ===
Since Virtualbox is a popular choice for desktop virtualization support for Virtualbox vdi images has been added to Varch. Simply pass vdi as the format and the image will be made into a Virtualbox vdi image:
# varch -f vdi
=== Application of a File Overlay ===
While AIF can be used to easily modify the system post install, it can be difficult to script into the aif file the addition of many files. This is where the overlay feature comes into play.
The overlay option takes a directory, and anything in that directory will be copied, raw, into the the root of the virtual machine.
# varch -o ~/overlay/
Where ~/overlay contains a file system overlay.
=== Startup Script Generation ===
Since some virtual machines can be tricky to start, varch can generate startup scripts and configuration files.
==== KVM Startup Script ====
Since kvm virtual machines started with the qemu-kvm command can require additional arguments varch can generate a startup script for the kvm virtual machine. Add a -K argument and the script will be generated.
# varch -K
This will create a bash script named <vm name>-kvm.sh
==== Libvirt Startup Script ====
Libvirt can be the most powerful way to run virtual machines in Linux, varch can create a libvirt configuration file and a bash script to start the generated virtual machine. Simply add a -L flag to the virtual machine generation:
# varch -L

About

The Arch Linux virtual machine image generator

Resources

Stars

7 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

68 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

==Why Do We Need Varch?==
The use of virtualization is rapidly expanding in the Linux world, many Linux distributions have answered the move to virtualization with tool specific to their distributions for automated virtual machine provisioning.
The Fedora project spearheads the thincrust project (http://thincrust.org), and Ubuntu/Debian uses the vmbuilder tool. These tools can quickly generate installs of their distributions inside of virtual machine images that can then be used with KVM.
ArchLinux was therefore left in the dark, without a means to automate virtual machine provisioning. Not only this, but a number of special modifications need to be made to ensure that Arch is properly installed in a KVM virtual machine. This includes modifications to the mkinitcpio image as well as a careful installation of grub.
Varch was developed to solve these problems!
==How Does Varch Work?==
Many of the other virtual machine building tools are complicated, require sometimes many configuration files to be made, and a very long command line argument to create a virtual machine image. Varch is different, and made to be simple to use in the best efforts to follow KISS and the Arch way as possible.
Varch prepares a virtual machine image, mounts it using kpartx and then calls the Arch installation Framework to run the actual install, this ensures that arch is installed the "Arch" way without having to re-create an installer. This also means that varch is configured with the same files that configure AIF.
==Installation==
[http://aur.archlinux.org/packages.php?ID=42428 varch] can be installed from the community repository.
==Using Varch==
Using Varch is very simple, without arguments the varch command will generate a basic virtual machine image:
# varch
and the options are very basic, -c to pass a custom configuration file, -s to specify a size for the image, -f to tell the image to use another format (raw and qcow2 are supported) and -i to specify the output name of the virtual machine image. So, if using a custom config called custom.aif, making a qcow2 formatted image, with a size of 50 GiB and saving the image as "custom":
# varch -c custom.aif -f qcow2 -s 50G -i custom
By default Varch creates images for KVM, since KVM is the "blessed" Linux hypervisor, but since many other hypervisors exist, it would be folly to ignore them. So Varch also supports "generic" images, which are just raw disk images without virtio support, suitable for non hardware accelerated qemu use and converting into other virtual machine hard disks.
Varch also supports the Virtualbox vdi format.
=== Generic Image Support ===
Varch can also make non-KVM virtual machine images, this basically means that the virtio block drivers are not installed and the root disk is /dev/sda. To create a generic virtual machine image pass the -g or --generic flag:
# varch -g
=== Virtualbox Specific Images ===
Since Virtualbox is a popular choice for desktop virtualization support for Virtualbox vdi images has been added to Varch. Simply pass vdi as the format and the image will be made into a Virtualbox vdi image:
# varch -f vdi
=== Application of a File Overlay ===
While AIF can be used to easily modify the system post install, it can be difficult to script into the aif file the addition of many files. This is where the overlay feature comes into play.
The overlay option takes a directory, and anything in that directory will be copied, raw, into the the root of the virtual machine.
# varch -o ~/overlay/
Where ~/overlay contains a file system overlay.
=== Startup Script Generation ===
Since some virtual machines can be tricky to start, varch can generate startup scripts and configuration files.
==== KVM Startup Script ====
Since kvm virtual machines started with the qemu-kvm command can require additional arguments varch can generate a startup script for the kvm virtual machine. Add a -K argument and the script will be generated.
# varch -K
This will create a bash script named <vm name>-kvm.sh
==== Libvirt Startup Script ====
Libvirt can be the most powerful way to run virtual machines in Linux, varch can create a libvirt configuration file and a bash script to start the generated virtual machine. Simply add a -L flag to the virtual machine generation:
# varch -L

About

The Arch Linux virtual machine image generator

Resources

Stars

7 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

68 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

==Why Do We Need Varch?==
The use of virtualization is rapidly expanding in the Linux world, many Linux distributions have answered the move to virtualization with tool specific to their distributions for automated virtual machine provisioning.
The Fedora project spearheads the thincrust project (http://thincrust.org), and Ubuntu/Debian uses the vmbuilder tool. These tools can quickly generate installs of their distributions inside of virtual machine images that can then be used with KVM.
ArchLinux was therefore left in the dark, without a means to automate virtual machine provisioning. Not only this, but a number of special modifications need to be made to ensure that Arch is properly installed in a KVM virtual machine. This includes modifications to the mkinitcpio image as well as a careful installation of grub.
Varch was developed to solve these problems!
==How Does Varch Work?==
Many of the other virtual machine building tools are complicated, require sometimes many configuration files to be made, and a very long command line argument to create a virtual machine image. Varch is different, and made to be simple to use in the best efforts to follow KISS and the Arch way as possible.
Varch prepares a virtual machine image, mounts it using kpartx and then calls the Arch installation Framework to run the actual install, this ensures that arch is installed the "Arch" way without having to re-create an installer. This also means that varch is configured with the same files that configure AIF.
==Installation==
[http://aur.archlinux.org/packages.php?ID=42428 varch] can be installed from the community repository.
==Using Varch==
Using Varch is very simple, without arguments the varch command will generate a basic virtual machine image:
# varch
and the options are very basic, -c to pass a custom configuration file, -s to specify a size for the image, -f to tell the image to use another format (raw and qcow2 are supported) and -i to specify the output name of the virtual machine image. So, if using a custom config called custom.aif, making a qcow2 formatted image, with a size of 50 GiB and saving the image as "custom":
# varch -c custom.aif -f qcow2 -s 50G -i custom
By default Varch creates images for KVM, since KVM is the "blessed" Linux hypervisor, but since many other hypervisors exist, it would be folly to ignore them. So Varch also supports "generic" images, which are just raw disk images without virtio support, suitable for non hardware accelerated qemu use and converting into other virtual machine hard disks.
Varch also supports the Virtualbox vdi format.
=== Generic Image Support ===
Varch can also make non-KVM virtual machine images, this basically means that the virtio block drivers are not installed and the root disk is /dev/sda. To create a generic virtual machine image pass the -g or --generic flag:
# varch -g
=== Virtualbox Specific Images ===
Since Virtualbox is a popular choice for desktop virtualization support for Virtualbox vdi images has been added to Varch. Simply pass vdi as the format and the image will be made into a Virtualbox vdi image:
# varch -f vdi
=== Application of a File Overlay ===
While AIF can be used to easily modify the system post install, it can be difficult to script into the aif file the addition of many files. This is where the overlay feature comes into play.
The overlay option takes a directory, and anything in that directory will be copied, raw, into the the root of the virtual machine.
# varch -o ~/overlay/
Where ~/overlay contains a file system overlay.
=== Startup Script Generation ===
Since some virtual machines can be tricky to start, varch can generate startup scripts and configuration files.
==== KVM Startup Script ====
Since kvm virtual machines started with the qemu-kvm command can require additional arguments varch can generate a startup script for the kvm virtual machine. Add a -K argument and the script will be generated.
# varch -K
This will create a bash script named <vm name>-kvm.sh
==== Libvirt Startup Script ====
Libvirt can be the most powerful way to run virtual machines in Linux, varch can create a libvirt configuration file and a bash script to start the generated virtual machine. Simply add a -L flag to the virtual machine generation:
# varch -L

About

The Arch Linux virtual machine image generator

Resources

Stars

7 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

68 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

==Why Do We Need Varch?==
The use of virtualization is rapidly expanding in the Linux world, many Linux distributions have answered the move to virtualization with tool specific to their distributions for automated virtual machine provisioning.
The Fedora project spearheads the thincrust project (http://thincrust.org), and Ubuntu/Debian uses the vmbuilder tool. These tools can quickly generate installs of their distributions inside of virtual machine images that can then be used with KVM.
ArchLinux was therefore left in the dark, without a means to automate virtual machine provisioning. Not only this, but a number of special modifications need to be made to ensure that Arch is properly installed in a KVM virtual machine. This includes modifications to the mkinitcpio image as well as a careful installation of grub.
Varch was developed to solve these problems!
==How Does Varch Work?==
Many of the other virtual machine building tools are complicated, require sometimes many configuration files to be made, and a very long command line argument to create a virtual machine image. Varch is different, and made to be simple to use in the best efforts to follow KISS and the Arch way as possible.
Varch prepares a virtual machine image, mounts it using kpartx and then calls the Arch installation Framework to run the actual install, this ensures that arch is installed the "Arch" way without having to re-create an installer. This also means that varch is configured with the same files that configure AIF.
==Installation==
[http://aur.archlinux.org/packages.php?ID=42428 varch] can be installed from the community repository.
==Using Varch==
Using Varch is very simple, without arguments the varch command will generate a basic virtual machine image:
# varch
and the options are very basic, -c to pass a custom configuration file, -s to specify a size for the image, -f to tell the image to use another format (raw and qcow2 are supported) and -i to specify the output name of the virtual machine image. So, if using a custom config called custom.aif, making a qcow2 formatted image, with a size of 50 GiB and saving the image as "custom":
# varch -c custom.aif -f qcow2 -s 50G -i custom
By default Varch creates images for KVM, since KVM is the "blessed" Linux hypervisor, but since many other hypervisors exist, it would be folly to ignore them. So Varch also supports "generic" images, which are just raw disk images without virtio support, suitable for non hardware accelerated qemu use and converting into other virtual machine hard disks.
Varch also supports the Virtualbox vdi format.
=== Generic Image Support ===
Varch can also make non-KVM virtual machine images, this basically means that the virtio block drivers are not installed and the root disk is /dev/sda. To create a generic virtual machine image pass the -g or --generic flag:
# varch -g
=== Virtualbox Specific Images ===
Since Virtualbox is a popular choice for desktop virtualization support for Virtualbox vdi images has been added to Varch. Simply pass vdi as the format and the image will be made into a Virtualbox vdi image:
# varch -f vdi
=== Application of a File Overlay ===
While AIF can be used to easily modify the system post install, it can be difficult to script into the aif file the addition of many files. This is where the overlay feature comes into play.
The overlay option takes a directory, and anything in that directory will be copied, raw, into the the root of the virtual machine.
# varch -o ~/overlay/
Where ~/overlay contains a file system overlay.
=== Startup Script Generation ===
Since some virtual machines can be tricky to start, varch can generate startup scripts and configuration files.
==== KVM Startup Script ====
Since kvm virtual machines started with the qemu-kvm command can require additional arguments varch can generate a startup script for the kvm virtual machine. Add a -K argument and the script will be generated.
# varch -K
This will create a bash script named <vm name>-kvm.sh
==== Libvirt Startup Script ====
Libvirt can be the most powerful way to run virtual machines in Linux, varch can create a libvirt configuration file and a bash script to start the generated virtual machine. Simply add a -L flag to the virtual machine generation:
# varch -L

About

The Arch Linux virtual machine image generator

Resources

Stars

7 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

68 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

==Why Do We Need Varch?==
The use of virtualization is rapidly expanding in the Linux world, many Linux distributions have answered the move to virtualization with tool specific to their distributions for automated virtual machine provisioning.
The Fedora project spearheads the thincrust project (http://thincrust.org), and Ubuntu/Debian uses the vmbuilder tool. These tools can quickly generate installs of their distributions inside of virtual machine images that can then be used with KVM.
ArchLinux was therefore left in the dark, without a means to automate virtual machine provisioning. Not only this, but a number of special modifications need to be made to ensure that Arch is properly installed in a KVM virtual machine. This includes modifications to the mkinitcpio image as well as a careful installation of grub.
Varch was developed to solve these problems!
==How Does Varch Work?==
Many of the other virtual machine building tools are complicated, require sometimes many configuration files to be made, and a very long command line argument to create a virtual machine image. Varch is different, and made to be simple to use in the best efforts to follow KISS and the Arch way as possible.
Varch prepares a virtual machine image, mounts it using kpartx and then calls the Arch installation Framework to run the actual install, this ensures that arch is installed the "Arch" way without having to re-create an installer. This also means that varch is configured with the same files that configure AIF.
==Installation==
[http://aur.archlinux.org/packages.php?ID=42428 varch] can be installed from the community repository.
==Using Varch==
Using Varch is very simple, without arguments the varch command will generate a basic virtual machine image:
# varch
and the options are very basic, -c to pass a custom configuration file, -s to specify a size for the image, -f to tell the image to use another format (raw and qcow2 are supported) and -i to specify the output name of the virtual machine image. So, if using a custom config called custom.aif, making a qcow2 formatted image, with a size of 50 GiB and saving the image as "custom":
# varch -c custom.aif -f qcow2 -s 50G -i custom
By default Varch creates images for KVM, since KVM is the "blessed" Linux hypervisor, but since many other hypervisors exist, it would be folly to ignore them. So Varch also supports "generic" images, which are just raw disk images without virtio support, suitable for non hardware accelerated qemu use and converting into other virtual machine hard disks.
Varch also supports the Virtualbox vdi format.
=== Generic Image Support ===
Varch can also make non-KVM virtual machine images, this basically means that the virtio block drivers are not installed and the root disk is /dev/sda. To create a generic virtual machine image pass the -g or --generic flag:
# varch -g
=== Virtualbox Specific Images ===
Since Virtualbox is a popular choice for desktop virtualization support for Virtualbox vdi images has been added to Varch. Simply pass vdi as the format and the image will be made into a Virtualbox vdi image:
# varch -f vdi
=== Application of a File Overlay ===
While AIF can be used to easily modify the system post install, it can be difficult to script into the aif file the addition of many files. This is where the overlay feature comes into play.
The overlay option takes a directory, and anything in that directory will be copied, raw, into the the root of the virtual machine.
# varch -o ~/overlay/
Where ~/overlay contains a file system overlay.
=== Startup Script Generation ===
Since some virtual machines can be tricky to start, varch can generate startup scripts and configuration files.
==== KVM Startup Script ====
Since kvm virtual machines started with the qemu-kvm command can require additional arguments varch can generate a startup script for the kvm virtual machine. Add a -K argument and the script will be generated.
# varch -K
This will create a bash script named <vm name>-kvm.sh
==== Libvirt Startup Script ====
Libvirt can be the most powerful way to run virtual machines in Linux, varch can create a libvirt configuration file and a bash script to start the generated virtual machine. Simply add a -L flag to the virtual machine generation:
# varch -L

About

The Arch Linux virtual machine image generator

Resources

Stars

7 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages