-
Notifications
You must be signed in to change notification settings - Fork 318
/
NEWS
866 lines (711 loc) · 33.7 KB
/
NEWS
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
* crun-1.19.1
- linux: fix a hang if there are no reads from the tty. Use non
blocking sockets to read and write from the tty so that the "crun
exec" process doesn't hang when the terminal is not consuming any
data.
- linux: remove the workaround needed to mount a cgroup on top of
another cgroup mount. The workaround had the disadvantage to
temporarily leak a mount on the host. The alternative that is
currently used is to mount a temporary tmpfs between the two cgroup
mounts.
* crun-1.19
- wasm: add new handler wamr.
- criu: allow passing network lock method to libcriu.
- linux: honor exec cpu affinity mask.
- build: fix build with musl libc.
- crun: use mount API to self-clone.
- cgroup, systemd: do not override devices on update. If the "update" request has no
device block configured, do not reset the previously configuration.
- cgroup: handle case where cgroup v1 freezer is disabled. On systems without the
freezer controller, containers were mistakenly reported as paused.
- cgroup: do not stop process on exec. The cpu mask is configured on the systemd
scope, the previous workaround to stop the container until the cgroup is fully
configured is no longer needed.
* crun-1.18.2
- cgroup, systemd: fix a regression when a configuration file includes only one
default rule.
* crun-1.18.1
- cgroup: deprecate cgroup v1.
- cgroup: fix regression setting up the devices cgroup on cgroup v1.
- cgroup: fix regression and work again with the default Docker devices
configuration on systemd.
- linux: fix setting up user namespace when newuidmap/newgidmap are not available.
* crun-1.18
- cgroup: support running without a sub-cgroup with systemd. Use the
d-bus API to set the container limits on the systemd scope itself.
It allows running without a sub-cgroup when the systemd driver is
used, the run.oci.systemd.subgroup annotation controls it. For now,
a sub-cgroup is still created, but it might be changed in future.
- cgroup: add support for the misc controller.
- linux: fix running on kernel without user namespaces.
- criu, restore: add lsm-profile option.
- criu, restore: add lsm-mount-context option.
- linux: add duplicate namespace detection.
* crun-1.17
- Add `--log-level` option. It accepts `error`, `warning` and `error`.
- Add debug logs for container creation.
- Fix double-free in crun exec code that could lead to a crash.
- Allow passing an ID to the journald log driver.
- Report "executable not found" errors after tty has been setup.
- Do not treat EPIPE from hooks as an error.
- Make sure `DefaultDependencies` is correctly set in the systemd scope.
- Improve the error message when the container process is not found.
- Improve error handling for the mnt namespace restoration.
- Fix error handling for `getpwuid_r`, `recvfrom` and `libcrun_kill_linux`.
- Fix handling of device paths with trailing slashes.
* crun-1.16.1
- fix a regression introduced by 1.16 where using 'rshared' rootfs
mount propagation and the rootfs itself is a mountpoint.
- inherit user from original process on exec, if not overridden.
* crun-1.16
- build: fix build for s390x.
- linux: fix mount of special files with rro. Open the mount target
with O_PATH to prevent open(2) failures with special files like
FIFOs or UNIX sockets.
- Fix sd-bus error handling for cpu quota and period props update.
- container: use relative path for rootfs if possible. If the rootfs
cannot be resolved and it is below the current working directory,
only use its relative path.
- wasmedge: access container environment variables for the WasmEdge
configuration.
- cgroup, systemd: use MemoryMax instead of MemoryLimit. Fixes a
warning for using an old configuration name.
- cgroup, systemd: improve checks for sd_bus_message_append errors
* crun-1.15
- fix a mount point leak under /run/crun, add a retry mechanism to
unmount the directory if the removal failed with EBUSY.
- linux: cgroups: fix potential mount leak when /sys/fs/cgroup is
already mounted, causing the posthooks to not run.
- release: build s390x binaries using musl libc.
- features: add support for potentiallyUnsafeConfigAnnotations.
- handlers: add option to load wasi-nn plugin for wasmedge.
- linux: fix "harden chdir()" security measure. The previous check
was not correct.
- crun: add option --keep to the run command. When specified the
container is not automatically deleted when it exits.
* crun-1.14.4
- linux: fix mount of file with recursive flags. Do not assume it is
a directory, but check the source type.
* crun-1.14.3
- follow up for 1.14.2. Drop the version check for each command.
* crun-1.14.2
- crun: drop check for OCI version. A recent bump in the OCI runtime
specs caused crun to fail with every config file. Just drop the
check since it doesn't add any value.
* crun-1.14.1
- there was recently a security vulnerability (CVE-2024-21626) in runc
that allowed a malicious user to chdir(2) to a /proc/*/fd entry that is
outside the container rootfs. While crun is not affected directly,
harden chdir by validating that we are still inside the container
rootfs.
- container: attempt to close all the files before execv(2).
if we leak any fd, it prevents execv to gain access to files outside
the container rootfs through /proc/self/fd/$fd.
- fix a regression caused by 1.14 when installing the ebpf filter on a
kernel older than 5.11.
- cgroup, systemd: fix segfault if the resources block is not specified.
* crun-1.14
- build: drop dependency on libgcrypt. Use blake3 to compute the cache
key.
- cpuset: don't clobber parent cgroup value when writing the cpuset
value.
- linux: force umask(0). Iit ensures that the `mknodat` syscall is
not affected by the umask of the calling process, allowing file
permissions to be set as specified in the OCI configuration.
- ebpf: do not require MEMLOCK for eBPF programs. This requirement
was relaxed in Linux 5.11.
* crun-1.13
- src: use O_CLOEXEC for all open/openat calls
- cgroup v1: use "max" when pids limit < 0.
- improve error message when idmap mount fails because the underlying
file system has no support for it.
- libcrun: fix compilation when building without libseccomp and libcap.
- fix relative idmapped mount when using the custom annotation.
* crun-1.12
- add new WebAssembly handler: spin.
- systemd: fallback to system bus if session bus is not available.
- configure the cpu rt and cpuset controllers before joining them to
avoid running temporarily the workload on the wrong cpus.
- preconfigure the cpuset with required resources instead of using the
parent's set. This prevents needless churn in the kernel as it
tracks which CPUs have load balancing disabled.
- try attr/<lsm>/* before the attr/* files. Writes to the attr/*
files may fail if apparmor is not the first "major" LSM in the list
of loaded LSMs (e.g. lsm=apparmor,bpf vs lsm=bpf,apparmor).
* crun-1.11.2
- fix a regression caused by 1.11.1 where the process crashes if there
are no CPU limits configured on cgroup v1.
- fix error code check for the ptsname_r function.
* crun-1.11.1
- force a remount operation with bind mounts from the host to correctly
set all the mount flags.
* crun-1.11
- cgroup: honor cpu burst.
- systemd: set CPUQuota and CPUPeriod on the scope cgroup.
- linux: append tmpfs mode if missing for mounts. This is the same
behavior of runc.
- cgroup: always use the user session for rootless.
* crun-1.10
- support for Intel Resource Director Technology (RDT).
- new mount option "copy-symlink". When provided for a mount, if the
source is a symlink, then it is copied in the container instead of
attempting a mount.
- linux: open mounts before setgroups if in a userns. This solves a
problem where a directory that was previously accessible to the
user, become inaccessible after setgroups causing the bind mount to
fail.
* crun-1.9.2
- cgroup: reset the inherited cpu affinity after moving to cgroup.
Old kernels do that automatically, but new kernels remember the
affinity that was set before the cgroup move, so we need to reset
it in order to honor the cpuset configuration.
* crun-1.9.1
- utils: ignore ENOTSUP when chmod a symlink. It fixes a problem on
Linux 6.6 that always refuses chmod on a symlink.
- build: fix build on CentOS 7
- linux: add new fallback when mount fails with EBUSY, so that there
is not an additional tmpfs mount if not needed.
- utils: improve error message when a directory cannot be created as
a component of the path is already existing as a non directory.
* crun-1.9
- linux: support arbitrary idmapped mounts. Now it is possible to
specify a mapping for any type of mount, not only bind mounts.
- linux: add support for "ridmap" mount option to support recursive
idmapped mounts.
- crun delete: call systemd's reset-failed. In case systemd cgroup
driver is used, and the systemd unit has failed (e.g. oom-killed),
systemd won't remove the unit (that is, unless the "CollectMode:
inactive-or-failed" property is set).
- linux: fix check for oom_score_adj. Write the oom_score_adj file
even when the new value is 0.
- features: Support mountExtensions.
- linux: correctly handle unknown signal string when it doesn't start
with a digit.
- linux: do not attempt to join again already joined namespace.
- wasmer: use latest wasix API.
* crun-1.8.7
- linux: fix a race condition when an exec was performed
immediately after the start and the setns with the procfd failed.
- features: Fix annotations formatting.
- linux: do not write some errors twice.
- libcrun: handle SIGWINCH by resizing the terminal file descriptor.
- crun: new command "crun features".
- linux: fix handling of idmapped mounts when the container joins
an existing PID namespace.
- linux: support io_priority from the OCI specs.
- linux: handle correctly the case where the status file is not
written yet for a container.
- crun: fix segfault for "ps" when the container is not using cgroups.
- cgroup: allow setting swap to 0.
* crun-1.8.6
- crun: new command "crun features".
- linux: fix handling of idmapped mounts when the container joins
an existing PID namespace.
- linux: support io_priority from the OCI specs.
- linux: handle correctly the case where the status file is not
written yet for a container.
- crun: fix segfault for "ps" when the container is not using cgroups.
- cgroup: allow setting swap to 0.
* crun-1.8.5
- scheduler: use definition from the OCI configuration file instead of the custom
label that is now dropped and not supported anymore.
- cgroup: fix creating cgroup under "domain threaded".
- cgroup, systemd: set the memory limit on the system scope.
- restore tty settings from the correct file descriptor. It was previously
restoring the settings from the wrong file descriptor causing the tty settings
to be changed on the calling terminal.
- criu: check if the criu_join_ns_add function exists. Fix a segfault with new
versions of CRIU.
- linux: do not precreate devs with euid > 0. Fix creating devices when running
the OCI runtime as non root user.
- linux: improve PID detection on systems that lack pidfd. While there is still a
window of time that the PID could be recycled, now it is now reduced to a minimum.
- criu: fix memory leak.
- logging: improve error message when dlopen fails.
* crun-1.8.4
- fix build on CentOS 7.
- drop custom annotation to set the time namespace and use the OCI
specs instead.
- cgroup: workaround cpu quota/period issue with v1. Sometimes
setting CPU quota period fails when a new period is lower, and a
parent cgroup has CPU quota limit set.
- cgroup: fix set quota to -1 on cgroup v1.
- criu: drop loading unused functions.
* crun-1.8.3
- update: initialize the rt limits only on cgroup v1.
* crun-1.8.2
- lua bindings for libcrun.
- wasmedge: add current directory to preopen paths.
- linux: inherit parent mount flags when making a path masked.
- libcrun: custom annotation to set the scheduler for the container process.
- cgroup: fallback to blkio.bfq files if blkio is not available on cgroup v1.
- cgroup: initialize rt limits when using systemd.
- tty: chown the tty to the exec user instead of the user specified
to create the container.
- cgroup: fallback to create cgroupfs as sibling of the current cgroup if there
is none specified and it cannot be created in the root cgroup.
* crun-1.8.1
- linux: idmapped mounts expect the same configuration as the user
namespace mappings. Before they were expecting the inverted
mapping. It is a breaking change, but the behavior was aligned to
what runc will do as well.
- krun: always allow /dev/kvm in the cgroup configuration.
- handlers: disable exec for handlers that do not support it.
- selinux: allow setting fscontext using a custom annotation.
- cgroup: reset systemd unit if start fails.
- cgroup: rmdir the entire systemd scope. It fixes a leak on cgroupv1.
- cgroup: always delete the cgroup on errors. On some errors it could
have been leaked before.
* crun-1.8
- linux: precreate devices on the host.
- cgroup: support cpuset mounted with noprefix.
- linux: mount the source cgroup if cgroupns=host.
- libcrun: don't clone self from read-only mount.
- build: fix build without dlfcn.h.
- linux: set PR_SET_DUMPABLE.
- utils: fix applying AppArmor profile.
- linux: write setgroups=deny when mapping a single uid/gid.
- cgroup: fix enter cgroupv1 mount on RHEL 7.
* crun-1.7.2
- criu: hardcode library name to libcriu.so.2.
- cgroup: always enable all controllers, even if the cgroup was already joined.
Regression caused by crun-1.7.
* crun-1.7.1
- criu: load libcriu dynamically.
- seccomp: initialize libgcrypt.
- handlers: fix rewriting the argv if the full cmdline doesn't fit.
- utils: honor SELinux label when using a custom handler.
- utils: honor AppArmor label when using a custom handler.
- krun: copy the OCI configuration file into the container.
- utils: fix creating the default user namespace when running with euid != 0.
- Add setlinebuf() when --debug and --log=file: are used.
- Fix timestamp format in the error messages.
- krun: disable libkrun's collection of env vars
* crun-1.7
- seccomp: use a cache for the generated BPF.
- add support for setting the domainname through the OCI spec.
- handlers: define wasm and krun.
- wasmtime: add support for compiling .wat format.
- cgroup: honor checkBeforeUpdate on cgroupv2.
- crun: chown std streams before joining the user namespace.
- crun: display rundir in --version output.
- container: with cgroupfs use clone3 to join directly the target cgroup.
- linux: create parent directories for created devices with mode 0755.
- wasm: inherit environment variables in the WasmEdge handler.
* crun-1.6
- runc compatibility: -v now prints the version string.
- build: fix build with glibc 2.36.
- container: drop intermediate userns custom feature.
- cgroup: change the delegate cgroup semantic so that the cgroup is
created in the container payload after the cgroup namespace is created.
- seccomp: use helper process to send file descriptor to the listener
socket. It enables to be notified on every syscall without hanging
the main process.
- linux: add a fallback to using kill(2) if pidfd_send_signal(2) fails
with ENOSYS.
- krun: add support for krun-sev.
- wasmtime: always grant file system capability for workdir inside the container.
- wasmtime: inherit arguments list from the handler instead of the current process.
- wasmedge: use released wasmedge library instead of libwasmedge_c.so.
* crun-1.5
- add mono based native .NET handler
- new Wasmtime backend for running WebAssembly
- add support for wasmedge 0.10 and dropping support for wasmedge 0.9.x
- dropping support for experimental `WasmEdgeProcess` from wasmedge handler
- honor process user's uid when setting the HOME environment variable
- create the current working directory if it is missing in the container
- fallback to using a tmpfs mount if umount of /sys and /proc fails
- fallback to netlink to setup lo device
- fix creating devices in the rootfs
- fallback to using io.weight if io.bfq.weight doesn't exist
- remove tun/tap from the default allow list
- linux: devices mounts have noexec and nosuid
- fix copyup of files from the container to the tmpfs
- honor $PATH for newgidmap and newguidmap
- krun: limit the number of vCPUs to 8
- cgroup: add support for cpu.idle
* crun-1.4.5
- CRIU: add support for different manage cgroups modes.
- linux: the hook processes inherit the crun process environment if
there is no environment block specified in the OCI configuration.
- exec: fix double free when using --apparmor and --process-label.
* crun-1.4.4
- wasm, kubernetes: support wasm for kubernetes infrastructure with side-cars
- Resolve symlinks in bind mounts when creating a user namespace.
- Fix CVE-2022-27650: exec does not set inheritable capabilities.
* crun-1.4.3
- cgroup: avoid infinite loop when deleting a cgroup if it contains
processes that cannot be terminated.
- support additional options for idmap mounts. It is now possible to
specify what mappings must be used for the idmapped mount.
- open the source for a bind mount in the host. It is useful when
creating a user namespace so that the parent directories for the
source directory are not required to be accessible to the users in
the user namespace.
* crun-1.4.2
- CRIU: add pre-dump support.
- Fix running with a read-only /dev. The /dev/console file is created
before re-mounting /dev as read-only.
- Ignore EROFS when chowning standard stream files.
- Add validation for sysctls before applying them.
- Attempt looking up the executable after the setresuid syscall, this
solves an issue on NFS when the executable file is not owned by root
in the container, but the UID:GID combination configured for the
container can access it.
* crun-1.4.1
- Fix check for an invalid path. crun was performing the wrong check
to validate a path, causing spurious failures at runtime.
- Allow deleting a container while in `created` state. It goes
against what the OCI runtime specs dictate, but it is the expected
behavior since runc allows it.
- Fix regression when joining a container that has explicit paths for
the namespaces.
- cgroup: do not set cpu limits if number of shares is set to 0.
Moby uses 0 to indicate no limits.
- Fix build issues when configured with --enable-shared.
- Fix build on systems where OPEN_TREE_CLOEXEC is not defined.
- Improve diagnostics for errors returned by dbus.
* crun-1.4
- wasm: support for running on kubernetes with containerd.
- linux: add support for recursive mount options. e.g. it is possible
to specify "rro" to make the mount read-only recursively.
- add support for idmapped mounts through a new mount option "idmap".
- linux: improve detection of /dev target. Previously a mount like
`/dev/` was not properly detected as mounting /dev/ from the host.
- now crun exec uses CLONE_INTO_CGROUP on supported kernels when
using cgroup v2.
- retry the openat2 syscall if it fails with EAGAIN.
- cgroup: set the CPUWeight/CPUShares on the systemd scope cgroup.
- on new kernels, use setns with pidfd.
- attempt the chdir again with the specified user if it failed before
changing credentials.
- ebpf: fix build on 32 bits systems.
- crun --version shows the configured handlers.
* crun-1.3
- add support to natively build and run WebAssembly workload and
WebAssembly containers.
- allow to specify sub-cgroup for exec.
- chown std streams if they are not a TTY.
- attach the correct streams if the container is suspended and
restored multiple times.
- fix race condition when enabling controllers on cgroup v2.
- the fallback code to mount cgroupfs bind mounts the current
cgroup path instead of the host /sys.
* crun-1.2
- exec: fix regression in 1.1 where containers are being wrongly
reported as paused.
- criu: add support for external ipc, uts and time namespaces.
* crun-1.1
- cgroup: use cgroup.kill when available. It is faster to kill a
container through its cgroup as there is no need to recurse over the
cgroup pids and terminate each one of them.
- exec: refuse to exec in a paused container/cgroup.
- container: Set primary process to 1 via LISTEN_PID by default if
user configuration is missing.
- criu: Add support for external PID namespace.
- criu: fix save of external descriptors. Now restored containers
attach correctly their standard streams.
- utils: retry openat2 on EAGAIN. If the openat2 syscall is
interrupted, try again.
* crun-1.0
- cgroup: chown the current container cgroup to root in the container.
- linux: treat pidfd_open failures EINVAL as ESRCH
- cgroup: add support for setting memory.use_hierarchy on cgroup v1.
- Makefile.am: fix link error when using directly libcrun.
- Fix symlink target mangling for tmpcopyup targets.
* crun-0.21
- honor memory swappiness set to 0
- status: add fields for owner and created timestamp
- cgroup: lookup pids controller as well when the memory controller
is not available
- when compiled with krun, automatically use it if the current
executable file is called "krun".
* crun-0.20.1
- container: ignore error when resetting the SELinux label for the
keyring.
* crun-0.20
- container: call prestart hooks before rootfs is RO.
- cgroup: added support cleaning custom controllers on cgroupv1.
- spec: add support for --bundle.
- exec: add --no-new-privs.
- exec: add --process-label and --apparmor to change SELinux and
AppArmor labels.
- cgroup: kill procs in cgroup on EBUSY.
- cgroup: ignore devices errors when running in a user namespace.
- seccomp: drop SECCOMP_FILTER_FLAG_LOG by default.
- seccomp: report correct action in error message.
- apply SELinux label to keyring.
- add custom annotation run.oci.delegate-cgroup.
- close_range fallbacks to close on EPERM.
- report error if the cgroup path was set and the cgroup could not be
joined.
* crun-0.19.1
- on exec, honor additional_gids from the process spec, not the
container definition.
- spec: add cgroup ns if on cgroup v2.
- systemd: support array of strings for cgroup annotation.
* crun-0.19
- join all the cgroup v1 controllers.
- raise a warning when newuidmap/newgidmap fail.
- handle eBPF access(dev_name, F_OK) call correctly.
- fix some memory leaks on errors when libcrun is used by a long
running process.
- fix the SELinux label for masked directories.
- support default seccomp errno value.
- fail if no default seccomp action specified.
- support OCI seccomp notify listener.
- improve OOM error messages.
- ignore unknown capabilities and raise a warning.
- always remount bind mounts to drop not requested mount flags.
* crun-0.18
- fix build without CLONE_NEWCGROUP.
- fix conversion from blkio to io.
- add custom annotation to load raw BPF.
- set working directory for libkrun
- fix symlink lookup on old kernels that lack openat2
- skip +cpu on EINVAL in cgroup root. Enabling the cpu controller is
not permitted if there are already realtime processes running on the
system.
- Fix permission error when using NOTIFY_SOCKET with username spaces.
- set HOME to root if the user not found.
- simplify mount logic to not use a temporary mount.
- ignore ENOSYS from keyctl.
* crun-0.17
- allow creating user namespaces without root being mapped.
- allow arbitrary IDs with single ID userns.
- use close_range(CLOSE_RANGE_CLOEXEC) where available.
- honor /sys/kernel/cgroup/delegate.
- fix an issue with hooks running in the container PID namespace.
- fix building without seccomp.
- fix building without libcap.
* crun-0.16
- CRIU support.
- fallback to openat if openat2 returns EPERM.
- ignore ENOENT for cgroup v1 mounts, if the mount fails with
ENOENT, the controller might have been unmounted.
- fix another race reading cgroup freeze. Reading from the cgroup
fails with ENODEV if the cgroup was deleted in the meanwhile.
* crun-0.15.1
- add experimental support for libkrun.
- fix check for pidfd availability on older kernels.
- linux: do not set data when remounting read-only. Fix 'ro' mounts
on older kernels when SELinux is enabled.
- linux: label the cgroup v1 tmpfs when SELinux is enabled.
- container: truncate the pid file before writing to it.
- exec: fix check for read bytes from the sync socket.
- check the process has a cgroup before allowing pause and resume.
- linux: always create a user namespace if not running with euid == 0.
- libcrun can use a hook instead of executing a container process.
- use libyajl to generate hooks json input.
- handle correctly ENOENT for seccomp notifications.
* crun-0.15
- add support for OCI unified cgroup v2.
- add json format option to `crun list`.
- get last kernel capability dynamically instead of using a build
time constant.
- enable all available cgroup controllers.
- support the seccomp SCMP_ACT_LOG action.
- support the seccomp SCMP_ACT_KILL_THREAD action.
- properly set a SELinux label for the mqueue mount.
- `crun kill` uses pidfd when supported.
- experimental support for seccomp notifications.
- fix bundle option for `crun create` and `crun run`.
- allow to declare path to config file.
- check /sys/kernel/security/apparmor when using AppArmor.
- doesn't accept type=bind alone anymore, but require either "bind"
or "rbind" to be present in the mount flags.
* crun-0.14.1
- fix a regression in crun-0.14 where openat2(2) would fail when bind
mounting a symlink.
- various small fixes to allow running regression tests outside of
source tree.
* crun-0.14
- cgroup, systemd: create container under subcgroup. Now a "/container"
sub-cgroup is created and fully managed by libcrun. This is a different
behaviour than what runc does.
- libcrun: use the openat2 syscall available since Linux 5.6.
- container: allow hooks output to file through an annotation.
- linux: support joining PID/IPC namespace not owned by the user namespace.
Requires Linux 5.3.
- linux: avoid double fork for creating the init process if not needed.
- linux: fix an issue where the basename for $NOTIFY_SOCKET is different
than /notify.
- rootless: allow /dev/{tty,ptmx} to be present in linux.devices.
- cgroup: fix an issue on CentOS 7.8 when using net_cls and net_prio.
- seccomp: honor errnoRet from OCI spec runtime.
- exec: set setresuid/setresgid before setting up the terminal.
- cgroup, v2: fix crun update with both --memory -1 --memory-swap -1.
- cgroup, v2: fixing setting unlimited swap.
- cgroup, v2: allow to set unlimited swap per se.
- cgroup, v2: treat negative numbers as "max"
- cgroup, v2: raise error if swap is set without memory limit.
- cgroup: ignore cpu resources if set to 0.
- libcrun: audit errno in crun_make_error calls
- libcrun: fix read_pid_stat usage.
- linux: fix double close on the same file descriptor.
- container: Prevent deletion of not stopped container
- status: Use process start time for identification
- CRIU: several improvements.
- linux: fix path lookups for relative paths containing '/'.
- linux: use the SELinux mount label for the notify socket.
- status: delete doesn't fail if the process already exited.
* crun-0.13
- license: change license to gplv2+ and lgpl2.1+.
- criu: initial support for `container restore`.
- state: If a container is paused, report its state as 'paused'.
- cgroup: use the memory controller to ready PIDs. The pid controller
is not available on kernels older than 4.3.
- linux: drop context= for remount. Older linux versions complain
when the selinux label is specified on a remount.
- utils: fix mount on not writeable path.
- cgroup: support systemd properties via annotations.
- systemd: do not set hard-code collectmode value. It can be set
through an annotation.
- cgroup: write the correct blkio settings.
- exec: do not inherit env variables from main pid.
- ebpf: fix endianness issue on s390x.
- linux: fix recursive mount on cgroup v1.
* crun-0.12.2.1
- when not using a cgroup namespace, mount only the cgroup v1 subpath.
* crun-0.12.2
- do not require read permissions on /
- add support for the "time" namespace via a custom annotation
- fix mount of cgroup v1 when using a cgroup namespace
- set default umask to 0022
- use the correct path for notify socket with "crun run -d"
- always use setsid
- use correct indices for seccomp generation
- fixed several issues with cgroup v2 and the cgroupfs driver
* crun-0.12.1
- fix the order of clone syscall arguments on s390 and cris.
- if no mode is specified use 0666 for devices.
- fix running with a relative bundle directory.
- fix some regressions in the mounts path resolution.
- drop a warning when cgroup are not available for rootless.
* crun-0.12
- masked paths use only MS_UNBINDABLE
- mount doesn't specify mount data when there are no options
- support new hook types: createRuntime, createContainer and startContainer
- safer mount options. A temporary mount is prepared outside of the
rootfs before being moved to it.
- apply selinux/apparmor before the pivot_root.
- handle correctly proc remounts. It is now supported to specify hidepid=
- fix exec if a namespace is not available.
- handle swap limit with the same semantic as on cgroup v1.
- bring network device up.
- reset all signal handlers to default.
* crun-0.11
- cgroups2: map memory reservation to memory.low
- statx fallbacks to stat on EINVAL
- utils: do not fail if the path we are trying to create already
exists
- generate seccomp profile in the parent process, not in the container
init process. Memory usage is more reliable now and a container can
run with ~250K of max memory.
- support for Linux personality.
- support for umask.
- support for the hugetlb controller on cgroup v2.
- PIDs from a cgroup are read recursively.
- do not fork on "create".
- now by default seccomp doesn't fail on an unknown syscall. The
previous behavior can be enabled with an annotation.
- fix joining cgroup on cgroup v2 when a named hierarchy is also
present.
- fix creating user namespaces with more than 2^32 IDs mapped.
- on exec, keep the SELinux label or AppArmor profile from the
- container configuration.
- runtime specific annotation are prefixed with run.oci.
* crun-0.10.6
- when running with a terminal, change the ownership for the terminal
to the specified user
- spec: honor the --rootless flag
- linux: make sure the source path is resolved when checking the file
type. Regression introduced with 0.10.5.
* crun-0.10.5
- fix CVE-2019-18837
- fix running on CentOS/RHEL 8
- report errors opening the console socket
- not leave config.json around if the container could not be created
* crun-0.10.4
- ignore errors creating /dev/console
- add an annotation "io.crun.keep_original_groups", if it is set then
crun won't drop additional groups when creating the container
* crun-0.10.3
- systemd: set collectmode=inactive-or-failed
- fix build on Alpine
- use the current working directory to lookup local paths
- improve the error message when a hook fails
- add granular enable/disable configure options
* crun-0.10.2
- fix a regression in 0.10.1 where cgroups v1 could not be created
- correctly chown cgroups when using a user namespace so that systemd
can run in a container that uses a user namespace
* crun-0.10.1
- linux: Keep MS_RDONLY when remounting bind mount of a read-only
source. It solves an issue on Fedora Silverblue where /usr is
mounted read only.
- fix exec of rootless containers when cgroups are not available
* crun-0.10
- support for AppArmor
- fix for CVE-2019-16884, make sure writes to /proc for the SELinux
and AppArmor labels are on procfs.
- exec supports --preserve-fds
- seccomp: fix lookup for pseudo syscalls, seccomp now works fine on
non native archs
- cgroup: ignore rootless errors if manager != systemd
- error: always write errors to stderr
- chroot: follow symlinks for the last component
- set $HOME if it is not already defined
* crun-0.9.1
- fix an issue with tmpcopyup that didn't work correctly with symlinks
- create a new cgroup namespace before mounting the cgroup file
system, so that it uses the correct namespace
* crun-0.9
- fix exec into containers running systemd on cgroups v2
- kill: honor --all
- kill: when not using a PID namespace, use the freezer controller to
prevent the container forking new processes
- linux: handle tmpcopyup option to copy files from the rootfs to the
new mounted tmpfs.
- OCI: honor seccomp options. If not specified any seccomp option,
now crun will default to using SECCOMP_FILTER_FLAG_SPEC_ALLOW |
SECCOMP_FILTER_FLAG_LOG when using the seccomp(2)
syscall
* crun-0.8
- executable lookup. Now create fails immediately if the specified
executable doesn't exist
- subreaper enabled only when crun is attached
- fix notify socket when used from create and prevent it hanging
indefinitely when the container exits
- correctly write cpu controller resources when using cgroups v2
- support for the freezer controller when using cgroups v2
- honor unspecified minor/major number for devices when using cgroups v2
- reintroduce --no-pivot
- do not add a cgroup path again if it was already specified in the
OCI configuration
* crun-0.7
- support devices on cgroups v2 using eBPF.
- new option --cgroup-manager=MANAGER. Accepted values are cgroupfs,
systemd and disabled.
- can run without using cgroups also as root.
- NOTIFY_SOCKET works also for containers created via create/start.
- when using systemd, create the same name for the scope as runc does.
* crun-0.6
- tty: set the size on the exec tty.
- cgroup: enable only the controllers needed.
- cgroup: in unified mode report the errors also for rootless.
- cgroup2: add support for the cpuset controller.
- linux: ignore tmpcopyup.
* crun-0.5
- logging: support --log=syslog: and log=journald.
- seccomp: if the syscall is not known, ignore it.
- container: move set oom before entering userns.
- status: always honor XDG_RUNTIME_DIR.
- linux: resolve symlinks in the target for bind mounts.
- fix all issues found by Coverity.
- pass Kubernetes e2e tests on Fedora with CRI-O.
* crun-0.4
- partial support for cgroup v2 (cpu, io, memory, pids controllers).
- pass all the OCI validation tests (https://github.com/opencontainers/runtime-tools).
- implement --log-format. crun now works with containerd.
- fixed some issues that prevented crun to work on older kernels.