Skip to content

Commit 5797c1d

Browse files
committed
pkg/machine: don't use dummy linger service
There is no reason to deifne a dummy service to run sleep just to get the podman.socket enabled. Enabeling a service is just creating the symlink so we can do that for the user sessions as well. Signed-off-by: Paul Holzinger <pholzing@redhat.com>
1 parent 79a857e commit 5797c1d

File tree

3 files changed

+12
-59
lines changed

3 files changed

+12
-59
lines changed

pkg/machine/ignition/ignition.go

Lines changed: 7 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ func (ign *DynamicIgnition) GenerateIgnitionConfig() error {
138138
ignStorage := Storage{
139139
Directories: getDirs(ign.Name),
140140
Files: getFiles(ign.Name, ign.UID, ign.Rootful, ign.VMType, ign.NetRecover, ign.Swap),
141-
Links: getLinks(ign.Name),
141+
Links: getLinks(),
142142
}
143143

144144
// Add or set the time zone for the machine
@@ -281,7 +281,6 @@ func getDirs(usrName string) []Directory {
281281
"/home/" + usrName + "/.config/containers",
282282
"/home/" + usrName + "/.config/systemd",
283283
"/home/" + usrName + "/.config/systemd/user",
284-
"/home/" + usrName + "/.config/systemd/user/default.target.wants",
285284
}
286285
var (
287286
dirs = make([]Directory, len(newDirs))
@@ -321,16 +320,6 @@ func getFiles(usrName string, uid int, rootful bool, vmtype define.VMType, _ boo
321320
},
322321
})
323322

324-
lingerExample := parser.NewUnitFile()
325-
lingerExample.Add("Unit", "Description", "A systemd user unit demo")
326-
lingerExample.Add("Unit", "After", "network-online.target")
327-
lingerExample.Add("Unit", "Wants", "network-online.target podman.socket")
328-
lingerExample.Add("Service", "ExecStart", "/usr/bin/sleep infinity")
329-
lingerExampleFile, err := lingerExample.ToString()
330-
if err != nil {
331-
logrus.Warn(err.Error())
332-
}
333-
334323
containers := `[containers]
335324
netns="bridge"
336325
pids_limit=0
@@ -349,22 +338,6 @@ pids_limit=0
349338
}
350339
etcSubUID := fmt.Sprintf(`%s:%d:%d`, usrName, subUID, subUIDs)
351340

352-
// Add a fake systemd service to get the user socket rolling
353-
files = append(files, File{
354-
Node: Node{
355-
Group: GetNodeGrp(usrName),
356-
Path: "/home/" + usrName + "/.config/systemd/user/linger-example.service",
357-
User: GetNodeUsr(usrName),
358-
},
359-
FileEmbedded1: FileEmbedded1{
360-
Append: nil,
361-
Contents: Resource{
362-
Source: EncodeDataURLPtr(lingerExampleFile),
363-
},
364-
Mode: IntToPtr(0744),
365-
},
366-
})
367-
368341
// Set containers.conf up for core user to use networks
369342
// by default
370343
files = append(files, File{
@@ -606,16 +579,17 @@ func getSSLFile(path, content string) File {
606579
}
607580
}
608581

609-
func getLinks(usrName string) []Link {
582+
func getLinks() []Link {
610583
return []Link{{
611584
Node: Node{
612-
Group: GetNodeGrp(usrName),
613-
Path: "/home/" + usrName + "/.config/systemd/user/default.target.wants/linger-example.service",
614-
User: GetNodeUsr(usrName),
585+
Group: GetNodeGrp("root"),
586+
Path: "/etc/systemd/user/sockets.target.wants/podman.socket",
587+
User: GetNodeUsr("root"),
588+
Overwrite: BoolToPtr(true),
615589
},
616590
LinkEmbedded1: LinkEmbedded1{
617591
Hard: BoolToPtr(false),
618-
Target: "/home/" + usrName + "/.config/systemd/user/linger-example.service",
592+
Target: "/usr/lib/systemd/user/podman.socket",
619593
},
620594
}, {
621595
Node: Node{

pkg/machine/wsl/declares.go

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ const changePort = `sed -E -i 's/^Port[[:space:]]+[0-9]+/Port %d/' /etc/ssh/sshd
2828

2929
const configServices = `ln -fs /usr/lib/systemd/system/sshd.service /etc/systemd/system/multi-user.target.wants/sshd.service
3030
ln -fs /usr/lib/systemd/system/podman.socket /etc/systemd/system/sockets.target.wants/podman.socket
31+
ln -fs /usr/lib/systemd/user/podman.socket /etc/systemd/user/sockets.target.wants/podman.socket
3132
rm -f /etc/systemd/system/getty.target.wants/console-getty.service
3233
rm -f /etc/systemd/system/getty.target.wants/getty@tty1.service
3334
rm -f /etc/systemd/system/multi-user.target.wants/systemd-resolved.service
@@ -106,19 +107,6 @@ const overrideSysusers = `[Service]
106107
LoadCredential=
107108
`
108109

109-
const lingerService = `[Unit]
110-
Description=A systemd user unit demo
111-
After=network-online.target
112-
Wants=network-online.target podman.socket
113-
[Service]
114-
ExecStart=/usr/bin/sleep infinity
115-
`
116-
117-
const lingerSetup = `mkdir -p /home/[USER]/.config/systemd/user/default.target.wants
118-
ln -fs /home/[USER]/.config/systemd/user/linger-example.service \
119-
/home/[USER]/.config/systemd/user/default.target.wants/linger-example.service
120-
`
121-
122110
const bindMountSystemService = `
123111
[Unit]
124112
Description=Bind mount for system podman sockets

pkg/machine/wsl/machine.go

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -173,19 +173,10 @@ func configureSystem(mc *vmconfigs.MachineConfig, dist string, ansibleConfig *vm
173173
}
174174
}
175175

176-
lingerCmd := withUser("cat > /home/[USER]/.config/systemd/[USER]/linger-example.service", user)
177-
if err := wslPipe(lingerService, dist, "sh", "-c", lingerCmd); err != nil {
178-
return fmt.Errorf("could not generate linger service for guest OS: %w", err)
179-
}
180-
181176
if err := enableUserLinger(mc, dist); err != nil {
182177
return err
183178
}
184179

185-
if err := wslPipe(withUser(lingerSetup, user), dist, "sh"); err != nil {
186-
return fmt.Errorf("could not configure systemd settings for guest OS: %w", err)
187-
}
188-
189180
if err := wslPipe(containersConf, dist, "sh", "-c", "cat > /etc/containers/containers.conf"); err != nil {
190181
return fmt.Errorf("could not create containers.conf for guest OS: %w", err)
191182
}
@@ -214,6 +205,10 @@ func configureBindMounts(dist string, user string) error {
214205
return fmt.Errorf("could not create podman binding service file for guest OS: %w", err)
215206
}
216207

208+
if err := wslPipe(getConfigBindServicesScript(user), dist, "sh"); err != nil {
209+
return fmt.Errorf("could not configure podman binding services for guest OS: %w", err)
210+
}
211+
217212
catUserService := "cat > " + getUserUnitPath(user)
218213
if err := wslPipe(getBindMountUserService(dist), dist, "sh", "-c", catUserService); err != nil {
219214
return fmt.Errorf("could not create podman binding user service file for guest OS: %w", err)
@@ -223,10 +218,6 @@ func configureBindMounts(dist string, user string) error {
223218
return fmt.Errorf("could not create podman binding fstab entry for guest OS: %w", err)
224219
}
225220

226-
if err := wslPipe(getConfigBindServicesScript(user), dist, "sh"); err != nil {
227-
return fmt.Errorf("could not configure podman binding services for guest OS: %w", err)
228-
}
229-
230221
catGroupDropin := fmt.Sprintf("cat > %s/%s", podmanSocketDropinPath, "10-group.conf")
231222
if err := wslPipe(overrideSocketGroup, dist, "sh", "-c", catGroupDropin); err != nil {
232223
return fmt.Errorf("could not configure podman socket group override: %w", err)

0 commit comments

Comments
 (0)