1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
debug: 0.819
semantic: 0.796
hypervisor: 0.786
user-level: 0.784
mistranslation: 0.779
graphic: 0.768
KVM: 0.766
device: 0.759
TCG: 0.743
register: 0.737
vnc: 0.735
virtual: 0.733
PID: 0.732
assembly: 0.731
peripherals: 0.724
performance: 0.724
permissions: 0.723
ppc: 0.717
arm: 0.710
VMM: 0.704
files: 0.700
architecture: 0.688
risc-v: 0.679
network: 0.677
socket: 0.674
kernel: 0.644
boot: 0.633
x86: 0.594
i386: 0.476
daemoniz not working on MacOS
OS: MacOS Catalina 10.15.2
Qemu install via brew: brew install qemu
qemu-system-x86_64 -version
QEMU emulator version 4.2.50 (v4.2.0-13-g084a398bf8-dirty)
Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers
---
Start Ubuntu Desktop 18.04 client as follow:
IMG_CD=$HOME/Downloads/iso/ubuntu-18.04.3-desktop-amd64.iso
IMG_FILE=$HOME/code/vm/qemu/u64d01.qcow2
MAC_ADDR=xx:xx:xx:xx:xx:xx
qemu-system-x86_64 \
-no-user-config -nodefaults \
-show-cursor \
-name u64d01 \
-M q35,accel=hvf,usb=off,vmport=off \
-cpu host -smp 4 -m 2048 \
-overcommit mem-lock=off \
-overcommit cpu-pm=off \
-rtc base=utc,clock=host \
\
-device virtio-tablet-pci \
-device virtio-vga \
\
-device virtio-blk-pci,drive=ssd1 \
-drive id=ssd1,file=$IMG_FILE,if=none,format=qcow2 \
\
-device virtio-net-pci,netdev=nic1,mac=$MAC_ADDR \
-netdev user,id=nic1,ipv4=on,ipv6=on,hostname=u64d01,hostfwd=tcp::2222-:22 \
\
-device ich9-intel-hda,id=snd,msi=on \
-device hda-output,id=snd-codec0,bus=snd.0,cad=0,audiodev=snd0 \
-audiodev coreaudio,id=snd0,out.buffer-count=10000 \
\
-daemonize
Give following error:
objc[3432]: +[NSNumber initialize] may have been in progress in another thread when fork() was called.
objc[3432]: +[NSNumber initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
I checked "ps -ef|grep qemu" before and after the command, there was no qemu process running.
Have you tried to disable the GUI with "-display none" already?
I tried with following and it work:
qemu-system-x86_64 -no-user-config -nodefaults -name u64d01 -M q35,accel=hvf,usb=off,vmport=off -cpu host -smp 4 -m 8192 -overcommit mem-lock=off -overcommit cpu-pm=off -rtc base=utc,clock=host -device virtio-blk-pci,drive=ssd1 -drive id=ssd1,file=/Users/js/code/vm/qemu/u64s01.qcow2,if=none,format=qcow2 -device virtio-net-pci,netdev=nic1,mac=52:54:98:76:54:33 -netdev user,id=nic1,ipv4=on,ipv6=on,hostname=u64d01,hostfwd=tcp::2222-:22 -daemonize -display none -device virtio-tablet-pci -device virtio-vga -show-cursor
The difference from my original command:
(1) removed -audiodev
(2) added -display none
So (1) and (2) together allow -daemonize work correctly.
Other observation during testing:
- If I only do (1), but not (2), the command will not exit, I cannot ssh into the vm. So it seems vm initialization is stuck. I can ctrl-c to break it.
- If I don't do (2), regardless of (1), I get following errors:
objc[1962]: +[NSNumber initialize] may have been in progress in another thread when fork() was called.
objc[1962]: +[NSNumber initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
Not sure if above observations are expected or unhandled error.
I mixed up some thing in #2 above. Please ignore it and use following:
---
I tried with following and it work:
qemu-system-x86_64 -no-user-config -nodefaults -name u64d01 -M q35,accel=hvf,usb=off,vmport=off -cpu host -smp 4 -m 8192 -overcommit mem-lock=off -overcommit cpu-pm=off -rtc base=utc,clock=host -device virtio-blk-pci,drive=ssd1 -drive id=ssd1,file=/Users/js/code/vm/qemu/u64s01.qcow2,if=none,format=qcow2 -device virtio-net-pci,netdev=nic1,mac=52:54:98:76:54:33 -netdev user,id=nic1,ipv4=on,ipv6=on,hostname=u64d01,hostfwd=tcp::2222-:22 -daemonize -display none -device virtio-tablet-pci -device virtio-vga -show-cursor
The difference from my original command:
(1) removed -audiodev
(2) added -display none
So (1) and (2) together allow -daemonize work correctly.
Other observation during testing:
- If I only do (1), but not (2):
- The command will not exit. I can break it with ctrl-c.
- A qemu-system-x86_64 process is created in background, but I cannot ssh into the it. I have use 'kill' to kill it.
- If I don't do (1), regardless of (2), I get following errors(as in my bug description):
objc[1962]: +[NSNumber initialize] may have been in progress in another thread when fork() was called.
objc[1962]: +[NSNumber initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
Not sure if above observations are expected or unhandled error.
Anything else I should supply to move status away from incomplete?
[Expired for QEMU because there has been no activity for 60 days.]
|