NetBSD-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Running docker containers with podman (on NetBSD!)
coypu%sdf.org@localhost writes:
> Hi all,
>
Hello coypu!
> I added a package to pkgsrc called Podman.
> It's a tool for running OCI containers, and it has the same command line
> behaviour as the docker command line argument.
>
> There are some selling points for it over docker, but the most important
> for us is the fact it has a mode where it spawns a Linux VM to talk to
> for you, so it runs on NetBSD!
>
That's really nice, thank you very much for working on it!
> One caveat is that NetBSD somewhat struggles running virtualized Linux
> by default. The virtualized ticks are just too slow, so it panics with:
> Kernel panic - not syncing: IO-APIC + timer doesn't work! Boot with
> apic=debug and send a report. Then try booting with the 'noapic' option.
>
> One way to work around it, convenient for this purpose, is to rebuild
> your kernel with "options HZ=1000" added, then you don't need to edit
> the command line arguments in the VM.
> [...]
I was tempted to try the other workaround, i.e. append `noapic'
directly at the boot but... that was a bit challenging! :) So here all
the notes that I have collected.
1. Download the image via:
podman machine init
2. After the image is downloaded and extracted SSH keys will be
generated under ~/.ssh and there will be a Ignition config in
~/.config/containers/podman/machine/qemu/podman-machine-default.ign.
In order to append `noapic' to the kernel arguments we need to
adjust the following in podman-machine-default.ign:
2a. Reindent the JSON to be a bit easier to edit, e.g. via
`jq .'
2b. Bump .ignition.version to "3.3.0" (it is "3.2.0")
2c. At the end, after systemd object add a comma `,' and then
another JSON object:
"kernelArguments": {
"shouldExist": ["noapic"]
}
3. Manually run the image via QEMU in order to initialize it via the
ignite config so that `noapic' is appended. Assuming we are in our
home directory, e.g.:
qemu-system-x86_64 -accel nvmm -nographic -m 1G -smp 1 \
-fw_cfg name=opt/com.coreos/config,file=.config/containers/podman/machine/qemu/podman-machine-default.ign \
-drive if=virtio,file=.local/sif=virtio,file=.local/share/containers/podman/machine/qemu/podman-machine-default_fedora-coreos-34.20210821.1.1-qemu.x86_64.qcow2
4. In GRUB press `e' in order to edit the boot entry. In the kernel
line append at the end `noapic' and press Ctrl-x to boot it
5. The ignition config will be applied and it will reboot
6. In GRUB press `c' and then `halt' in order to poweroff the machine
(we're done!)
7. Start the machine as usual via `podman machine start'
Home |
Main Index |
Thread Index |
Old Index