Fix launch in nim version

This commit is contained in:
Martin 2021-12-08 22:15:04 +01:00
parent d9e5e0c974
commit 6976fe1e4d
Signed by: mawalu
GPG Key ID: BF556F989760A7C8
4 changed files with 29 additions and 20 deletions

View File

@ -32,8 +32,8 @@ pacman-key --init
pacman-key --populate archlinux pacman-key --populate archlinux
pacman -Syu --noconfirm pacman -Syu --noconfirm
pacman -S --noconfirm base linux linux-firmware mkinitcpio openssh kitty-terminfo pacman -S --noconfirm base linux linux-firmware mkinitcpio openssh kitty-terminfo dhcpcd
systemctl enable sshd systemctl enable sshd dhcpcd
# Standard Archlinux Setup # Standard Archlinux Setup
ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime

1
nim/README.md Normal file
View File

@ -0,0 +1 @@
nim rewrite, wip

View File

@ -15,8 +15,9 @@ proc mount(source: cstring, target: cstring, filesystemtype: cstring,
mountflags: culong, data: pointer): cint {.importc, header:"<sys/mount.h>"} mountflags: culong, data: pointer): cint {.importc, header:"<sys/mount.h>"}
const const
GID_MAP = "/proc/self/gid_map"
UID_MAP = "/proc/self/uid_map" UID_MAP = "/proc/self/uid_map"
GID_MAP = "/proc/self/gid_map"
SETGROUPS = "/proc/self/setgroups"
proc virtiofsd(paths: seq[string]): Pid = proc virtiofsd(paths: seq[string]): Pid =
let uid = getuid() let uid = getuid()
@ -36,6 +37,7 @@ proc virtiofsd(paths: seq[string]): Pid =
# map our uid to root # map our uid to root
writeFile(UID_MAP, &"0 {uid} 1") writeFile(UID_MAP, &"0 {uid} 1")
writeFile(SETGROUPS, "deny")
writeFile(GID_MAP, &"0 {gid} 1") writeFile(GID_MAP, &"0 {gid} 1")
# create a tmpfs in /var/run so virtiofsd can write there # create a tmpfs in /var/run so virtiofsd can write there
@ -61,13 +63,12 @@ proc virtiofsd(paths: seq[string]): Pid =
for process in procs: for process in procs:
discard waitForExit(process) discard waitForExit(process)
quit(0)
proc qemu*(args: OptParser) = proc qemu*(args: OptParser) =
let childPid = virtiofsd(@["/tmp", "/home"]) let childPid = virtiofsd(@["/tmp", "/home"])
let qemu = startProcess( let args = @[
command = "qemu-system-x86_64",
options = {poParentStreams, poUsePath},
args = @[
"-enable-kvm", "-cpu", "host", "-m", "512m", "-smp", "2", "-enable-kvm", "-cpu", "host", "-m", "512m", "-smp", "2",
"-kernel", "/home/martin/code/qemu/build-image/image/vmlinuz-linux", "-kernel", "/home/martin/code/qemu/build-image/image/vmlinuz-linux",
"-append", "earlyprintk=ttyS0 console=ttyS0 root=/dev/vda rw quiet", "-append", "earlyprintk=ttyS0 console=ttyS0 root=/dev/vda rw quiet",
@ -79,11 +80,18 @@ proc qemu*(args: OptParser) =
"-netdev", "user,id=net0,hostfwd=tcp::2222-:22", "-netdev", "user,id=net0,hostfwd=tcp::2222-:22",
"-device", "virtio-net-pci,netdev=net0", "-device", "virtio-net-pci,netdev=net0",
"-nodefaults", "-no-user-config", "-nographic", "-nodefaults", "-no-user-config", "-nographic",
"-chardev", "socket,id=share.1,path=/tmp/mount.0.sock",
"-device", "vhost-user-fs-pci,queue-size=1024,chardev=share.1,tag=share.1",
"-serial", "stdio" "-serial", "stdio"
] ]
let qemu = startProcess(
command = "qemu-system-x86_64",
options = {poParentStreams, poUsePath},
args = args
) )
discard waitForExit(qemu) discard waitForExit(qemu)
#discard kill(childPid, SIGTERM) discard kill(childPid, SIGTERM)
#discard waitPid(childPid,cast[var cint](nil),0) discard waitPid(childPid,cast[var cint](nil),0)