[2025-jun-17] The SlackDocs mailing lists at https://lists.alienbase.nl/mailman/listinfo have been retired. No one has been using these lists for years and it's time to say goodbye. The list archives remain available at https://scalzi.slackware.nl/mailman/listinfo/slackdocs
[2025-jun-17] The SlackDocs Wiki has moved to a new server, in order to make it more performant.
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
howtos:emulators:helper_script_for_managing_qemu_virtual_machines [2016/09/01 09:25 (UTC)] – [Using Qemu from Unprivileged Users] louigi600 | howtos:emulators:helper_script_for_managing_qemu_virtual_machines [2023/12/12 08:13 (UTC)] (current) – [Sources] zeebra | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ====== |
- | Qemu is a popular and powerful open-source emulator often used for running KVM virtual machines. In fact qemu supports emulating so many thins that it can be quite challenging, | + | <!--I took the liberty to fix this headline, if it should have another name, change it --- // |
+ | ===== Preface | ||
+ | Qemu is a popular and powerful open-source emulator often used for running KVM Virtual Machines (VMs). In fact qemu supports emulating so many things | ||
qemu-system-arm -name armedslack -M versatilepb -m 256 -k en-us -vnc :5,password -usb -kernel / | qemu-system-arm -name armedslack -M versatilepb -m 256 -k en-us -vnc :5,password -usb -kernel / | ||
- | Ok everyone might want console redirect on vnc and monitor redirect via telnet but non the less that's still a relatively small subset of the options supported by qemu-system-arm and only has one disk one cdrom and one Network Interface Controller (NIC) so things can be much worse then this. | + | Not everyone might want console redirect on vnc and monitor redirect via telnet but non the less that's still a relatively small subset of the options supported by qemu-system-arm and only has one disk one cdrom and one Network Interface Controller (NIC) so things can be much worse then this. |
- | Is is common | + | Is is common, for people running qemu VMs, to use some sort of software |
- | Over the years I've radically changed the helper script form having text configuration files for each VM to a centarl VM configuration database. I'd like to share my experience in doing so without presumptuously declaring that I do this any better then anyone else, letting you decide what's good or bad for your needs. It's likely that someone else has done this and a lot better then me but nevertheless I's still like to hare with you the route I took. | + | Over the years I've radically changed the helper script form having text configuration files for each VM to a centarl VM configuration database. I'd like to share my experience in doing so without presumptuously declaring that I do this any better then anyone else, letting you decide what's good or bad for your needs. It's likely that someone else has done this and a lot better then me but nevertheless I'd still like to hare with you the route I took. |
====== Problems ====== | ====== Problems ====== | ||
Line 14: | Line 16: | ||
* ability to run both x86 and ARM virtual machines | * ability to run both x86 and ARM virtual machines | ||
* ability to run several VMs simultaneously | * ability to run several VMs simultaneously | ||
+ | * have the VMs appear as a real server in the LAN | ||
* flexibility on the number of disks assigned to a VM | * flexibility on the number of disks assigned to a VM | ||
* flexibility on the number of NICs assigned to a VM | * flexibility on the number of NICs assigned to a VM | ||
- | * avoid conflicts on tap and MAC address | ||
* avoid conflicts on VM console vnc port | * avoid conflicts on VM console vnc port | ||
* avoid conflicts on VM monitor port | * avoid conflicts on VM monitor port | ||
- | Dealing with such issues on a text based configuration file per each VM started making the code unnecessarily complicated. | ||
- | Manually creating a configuration file for a new VM required looking for information across all previously configured VMs configuration files. | ||
- | Another problem that you may come across while running VMs in general is networking | + | Wanting |
+ | |||
+ | Using the initial, per VM text based configuration, | ||
====== Proposed Solution ====== | ====== Proposed Solution ====== | ||
- | It quickly became apparent to me that the VM configuration would need to be generated rather then manually created and that a central configuration repository would much aid the process. Again a text based central configuration file would make the code in inherently complicated (having to deal with an arbitrary number of VMs each with arbitrary number of disks and NICs). | + | It quickly became apparent to me that the VM configuration would need to be generated rather then manually created and that a central configuration repository would much aid the process. Again a text based central configuration file would make, either |
- | Having some experience on database administration made it a little unappealing to use LDAP for central repository and even if I had no DB experience at all I doubt I'd actually want the overhead of running LDAP just for this. Running MariaDB or Postgres | + | Having some experience on database administration made it a little unappealing to use LDAP for central repository and even if I had no DB experience at all I doubt I'd actually want the overhead of running LDAP just for this. Running MariaDB or Postgres was equally |
+ | |||
+ | |||
+ | Another thing that quickly became apparent was the almost repetitive code required to prompt for all the options so I decided to address that in 2 ways: | ||
+ | - have as much of the promoting automatically generated with a clever workaround | ||
+ | - use dialog to further simplify the UI for prompting | ||
- | Another thing quickly became apparent was that a lot of code was required to prompt for all the options on the text console. I find that dialog can be really handy for this along with making a better appealing interface. | ||
===== Basic Configuration ===== | ===== Basic Configuration ===== | ||
- | To get better flexibility | + | To get better flexibility |
* Path to folder that will contain all the VMs | * Path to folder that will contain all the VMs | ||
* Path to where the centralized VM configuration DB is | * Path to where the centralized VM configuration DB is | ||
Line 617: | Line 624: | ||
====== Sources ====== | ====== Sources ====== | ||
+ | I've a blog entry on LQ where I talk a little more extensively on minimizing the code in bash scripts. | ||
+ | [[http:// | ||
<!-- If you are copying information from another source, then specify that source --> | <!-- If you are copying information from another source, then specify that source --> |