Compare commits
172 Commits
Author | SHA1 | Date |
---|---|---|
![]() |
631d5f72a2 | |
![]() |
acc629abb0 | |
![]() |
8bd7ddf819 | |
![]() |
80e70f76d9 | |
![]() |
5de6e4d56e | |
![]() |
5925266832 | |
![]() |
dcaff88ac9 | |
![]() |
d03fb675d8 | |
![]() |
34b1dd2e26 | |
![]() |
51ce8893d9 | |
![]() |
4753738b62 | |
![]() |
c656b612b1 | |
![]() |
d754e1c6f0 | |
![]() |
9371dcaba3 | |
![]() |
22a80629b4 | |
![]() |
c5907f82d8 | |
![]() |
83ea8cf001 | |
![]() |
56f4fb6cb7 | |
![]() |
857b17f090 | |
![]() |
e8121bfddd | |
![]() |
7f10c483b6 | |
![]() |
bc4f196f98 | |
![]() |
67fc670a88 | |
![]() |
22e683077a | |
![]() |
e86397de24 | |
![]() |
7ab1d00227 | |
![]() |
d40c49a8df | |
![]() |
ebafbd8241 | |
![]() |
35822f3997 | |
![]() |
b3d2dcb71e | |
![]() |
0e80ff72e0 | |
![]() |
164e5ebb11 | |
![]() |
1af4674319 | |
![]() |
7ffc5e388b | |
![]() |
c0a54f2993 | |
![]() |
97543cca48 | |
![]() |
50e7466843 | |
![]() |
f6f393f550 | |
![]() |
1549d5e898 | |
![]() |
4318533e14 | |
![]() |
6246da400f | |
![]() |
a247d2bc0d | |
![]() |
371b338a5f | |
![]() |
3f2c76bb14 | |
![]() |
fe8df0240a | |
![]() |
33cf47a608 | |
![]() |
4e85874108 | |
![]() |
813577e2ba | |
![]() |
7de9ffc057 | |
![]() |
3d8e1ad2ae | |
![]() |
d3b5bc17eb | |
![]() |
0af11c5ea5 | |
![]() |
3326e4c957 | |
![]() |
fec93bb221 | |
![]() |
dcbe23c14d | |
![]() |
e3bb1815bb | |
![]() |
d9c3c77437 | |
![]() |
14d97a6a28 | |
![]() |
475497b1bd | |
![]() |
bdac657bf6 | |
![]() |
06d47ded67 | |
![]() |
586d3e7664 | |
![]() |
7938935267 | |
![]() |
5b18b06c7d | |
![]() |
c459373448 | |
![]() |
e8c18c9f7f | |
![]() |
d5fd030cc2 | |
![]() |
dc3b976f33 | |
![]() |
d364ce8334 | |
![]() |
8104bf0e83 | |
![]() |
afe4a6dbb7 | |
![]() |
51d21c6b37 | |
![]() |
a9c6704643 | |
![]() |
94fc50262f | |
![]() |
3a0f423309 | |
![]() |
86bba3d4d4 | |
![]() |
1c3f79fb0a | |
![]() |
5789abcbe0 | |
![]() |
0b97790626 | |
![]() |
4855242ce5 | |
![]() |
049973b708 | |
![]() |
5d990a004b | |
![]() |
bf8738d31c | |
![]() |
f905c3a72c | |
![]() |
75ad269931 | |
![]() |
b9ba3c8bb8 | |
![]() |
3f56d481e8 | |
![]() |
5c2f72f152 | |
![]() |
1539845868 | |
![]() |
f6e6be245d | |
![]() |
e07b7ad0e7 | |
![]() |
51c06d9fea | |
![]() |
d502d2a816 | |
![]() |
96f3177c33 | |
![]() |
a1287c627f | |
![]() |
e19e38904c | |
![]() |
0c631efb10 | |
![]() |
5c5b73c681 | |
![]() |
9491e59928 | |
![]() |
10ed204f87 | |
![]() |
591118c56d | |
![]() |
768dd59ef0 | |
![]() |
acfd97a943 | |
![]() |
f1245b5bc1 | |
![]() |
3fb8723ce0 | |
![]() |
f6d16b6bbd | |
![]() |
dfbfd33b24 | |
![]() |
a93fbc4ae0 | |
![]() |
655c65e6ce | |
![]() |
4afdcba212 | |
![]() |
7374943ae3 | |
![]() |
c86f4d2860 | |
![]() |
b292ce7295 | |
![]() |
38320fce56 | |
![]() |
55468a2d40 | |
![]() |
ef0f848a67 | |
![]() |
19537f8943 | |
![]() |
b5cf7ec784 | |
![]() |
e2a61595d2 | |
![]() |
5ab18dee99 | |
![]() |
07977ee5c5 | |
![]() |
5ee7e249b8 | |
![]() |
74a4179948 | |
![]() |
b0bf8187d5 | |
![]() |
e509c638e6 | |
![]() |
c868feb1b1 | |
![]() |
9da76af8e7 | |
![]() |
f649cd10b2 | |
![]() |
cbd85597e3 | |
![]() |
0e5905315e | |
![]() |
d7acf107f2 | |
![]() |
3cc9f1c10c | |
![]() |
a7f5429cb8 | |
![]() |
dc21638c3f | |
![]() |
1beeaf3b71 | |
![]() |
6c71ba4121 | |
![]() |
a0f12fb6a0 | |
![]() |
ec50cec3bd | |
![]() |
acb18869e9 | |
![]() |
2f091b1707 | |
![]() |
f806a628aa | |
![]() |
6610093698 | |
![]() |
c7fbc0c890 | |
![]() |
f1138012c9 | |
![]() |
a97d2cedcf | |
![]() |
a2b6be4479 | |
![]() |
78557f05a6 | |
![]() |
2e3c5444d2 | |
![]() |
6a44426162 | |
![]() |
a97d6e2b13 | |
![]() |
563f543424 | |
![]() |
8b17105bed | |
![]() |
e0abf88a15 | |
![]() |
86bf2533d7 | |
![]() |
12beeac741 | |
![]() |
b12d91c431 | |
![]() |
5eb24aa21d | |
![]() |
7d205598c6 | |
![]() |
f4ea5f8734 | |
![]() |
6c673298f3 | |
![]() |
4cb086fa29 | |
![]() |
a277a5fc7a | |
![]() |
0a6007bf4f | |
![]() |
c1ab36139d | |
![]() |
9355cb8ea5 | |
![]() |
636d6df313 | |
![]() |
fa63c9be13 | |
![]() |
148e420be5 | |
![]() |
7275c6f6a0 | |
![]() |
c08bc8109d | |
![]() |
b9b6f0ee5b | |
![]() |
f634448b29 |
|
@ -28,7 +28,6 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
config:
|
config:
|
||||||
- { dockerfile: 'Dockerfile-Fedora-33', tag: 'fedora:33' }
|
|
||||||
- { dockerfile: 'Dockerfile-Fedora-latest', tag: 'fedora:latest' }
|
- { dockerfile: 'Dockerfile-Fedora-latest', tag: 'fedora:latest' }
|
||||||
- { dockerfile: 'Dockerfile-Fedora-rawhide', tag: 'fedora:rawhide' }
|
- { dockerfile: 'Dockerfile-Fedora-rawhide', tag: 'fedora:rawhide' }
|
||||||
- { dockerfile: 'Dockerfile-OpenSuse-latest', tag: 'opensuse:latest' }
|
- { dockerfile: 'Dockerfile-OpenSuse-latest', tag: 'opensuse:latest' }
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
/Makefile.inc
|
/Makefile.inc
|
||||||
/dracut.8
|
/man/dracut.8
|
||||||
/dracut-catimages.8
|
/man/dracut-catimages.8
|
||||||
/dracut.conf.5
|
/man/dracut.conf.5
|
||||||
/dracut.conf.d/*.conf
|
/dracut.conf.d/*.conf
|
||||||
/dracut-gencmdline.8
|
/man/dracut.cmdline.7
|
||||||
/dracut.html
|
/dracut.html
|
||||||
/dracut.kernel.7
|
/man/dracut.kernel.7
|
||||||
|
/man/dracut.bootup.7
|
||||||
|
/man/dracut.modules.7
|
||||||
|
/man/lsinitrd.1
|
||||||
/dracut.pc
|
/dracut.pc
|
||||||
/dracut-install
|
/dracut-install
|
||||||
/modules.d/99base/switch_root
|
/modules.d/99base/switch_root
|
||||||
|
@ -15,13 +18,13 @@ test*.img
|
||||||
/.buildpath
|
/.buildpath
|
||||||
/.project
|
/.project
|
||||||
/dracut-version.sh
|
/dracut-version.sh
|
||||||
/install/dracut-install
|
/src/install/dracut-install
|
||||||
/*.rpm
|
/*.rpm
|
||||||
/*.[0-9]
|
/*.[0-9]
|
||||||
/modules.d/98dracut-systemd/*.service.8
|
/modules.d/98dracut-systemd/*.service.8
|
||||||
/*.sign
|
/*.sign
|
||||||
*.o
|
*.o
|
||||||
skipcpio/skipcpio
|
/src/skipcpio/skipcpio
|
||||||
/util/util
|
/src/util/util
|
||||||
/dracut-util
|
/dracut-util
|
||||||
.idea/
|
.idea/
|
||||||
|
|
7
.mailmap
7
.mailmap
|
@ -2,9 +2,10 @@ Philippe Seewer <philippe.seewer@bfh.ch> <philippe.seewer-omB+W0Dpw2o@public.gm
|
||||||
Seewer Philippe <philippe.seewer@bfh.ch> <philippe.seewer@bfh.ch>
|
Seewer Philippe <philippe.seewer@bfh.ch> <philippe.seewer@bfh.ch>
|
||||||
Philippe Seewer <philippe.seewer@bfh.ch> <philippe.seewer@bfh.ch>
|
Philippe Seewer <philippe.seewer@bfh.ch> <philippe.seewer@bfh.ch>
|
||||||
Victor Lowther <victor.lowther@gmail.com> <victor.lowther-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
|
Victor Lowther <victor.lowther@gmail.com> <victor.lowther-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
|
||||||
Harald Hoyer <harald@redhat.com> <harald-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
|
Harald Hoyer <harald@profian.com> <harald-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
|
||||||
Harald Hoyer <harald@redhat.com> <harald@eeepc.(none)>
|
Harald Hoyer <harald@profian.com> <harald@eeepc.(none)>
|
||||||
Harald Hoyer <harald@redhat.com> <harald@hoyer.xyz>
|
Harald Hoyer <harald@profian.com> <harald@hoyer.xyz>
|
||||||
|
Harald Hoyer <harald@profian.com> <harald@redhat.com>
|
||||||
Mike Snitzer <snitzer@redhat.com> <msnitzer@redhat.com>
|
Mike Snitzer <snitzer@redhat.com> <msnitzer@redhat.com>
|
||||||
Amerigo Wang <amwang@redhat.com> <xiyou.wangcong@gmail.com>
|
Amerigo Wang <amwang@redhat.com> <xiyou.wangcong@gmail.com>
|
||||||
Andrey Borzenkov <arvidjaar@gmail.com> <arvidjaar@mail.ru>
|
Andrey Borzenkov <arvidjaar@gmail.com> <arvidjaar@mail.ru>
|
||||||
|
|
|
@ -33,7 +33,7 @@ jobs:
|
||||||
- job: propose_downstream
|
- job: propose_downstream
|
||||||
trigger: release
|
trigger: release
|
||||||
metadata:
|
metadata:
|
||||||
dist_git_branches: master
|
dist_git_branches: main
|
||||||
|
|
||||||
- job: tests
|
- job: tests
|
||||||
trigger: pull_request
|
trigger: pull_request
|
||||||
|
|
70
AUTHORS
70
AUTHORS
|
@ -1,11 +1,11 @@
|
||||||
Harald Hoyer <harald@redhat.com>
|
Harald Hoyer <harald@profian.com>
|
||||||
Victor Lowther <victor.lowther@gmail.com>
|
Victor Lowther <victor.lowther@gmail.com>
|
||||||
Jóhann B. Guðmundsson <johannbg@gmail.com>
|
Jóhann B. Guðmundsson <johannbg@gmail.com>
|
||||||
Amadeusz Żołnowski <aidecoe@aidecoe.name>
|
Amadeusz Żołnowski <aidecoe@aidecoe.name>
|
||||||
Daniel Molkentin <daniel.molkentin@suse.com>
|
Daniel Molkentin <daniel.molkentin@suse.com>
|
||||||
Hannes Reinecke <hare@suse.com>
|
Hannes Reinecke <hare@suse.com>
|
||||||
Will Woods <wwoods@redhat.com>
|
|
||||||
Kairui Song <kasong@redhat.com>
|
Kairui Song <kasong@redhat.com>
|
||||||
|
Will Woods <wwoods@redhat.com>
|
||||||
Philippe Seewer <philippe.seewer@bfh.ch>
|
Philippe Seewer <philippe.seewer@bfh.ch>
|
||||||
Warren Togami <wtogami@redhat.com>
|
Warren Togami <wtogami@redhat.com>
|
||||||
Dave Young <dyoung@redhat.com>
|
Dave Young <dyoung@redhat.com>
|
||||||
|
@ -15,60 +15,66 @@ David Dillow <dave@thedillows.org>
|
||||||
Lubomir Rintel <lkundrak@v3.sk>
|
Lubomir Rintel <lkundrak@v3.sk>
|
||||||
Michal Soltys <soltys@ziu.info>
|
Michal Soltys <soltys@ziu.info>
|
||||||
Colin Guthrie <colin@mageia.org>
|
Colin Guthrie <colin@mageia.org>
|
||||||
|
Martin Wilck <mwilck@suse.de>
|
||||||
Amerigo Wang <amwang@redhat.com>
|
Amerigo Wang <amwang@redhat.com>
|
||||||
Thomas Renninger <trenn@suse.com>
|
Thomas Renninger <trenn@suse.com>
|
||||||
Alexander Tsoy <alexander@tsoy.me>
|
Alexander Tsoy <alexander@tsoy.me>
|
||||||
Martin Wilck <mwilck@suse.de>
|
|
||||||
Frederick Grose <fgrose@sugarlabs.org>
|
Frederick Grose <fgrose@sugarlabs.org>
|
||||||
|
Antonio Alvarez Feijoo <antonio.feijoo@suse.com>
|
||||||
WANG Chao <chaowang@redhat.com>
|
WANG Chao <chaowang@redhat.com>
|
||||||
|
Beniamino Galvani <bgalvani@redhat.com>
|
||||||
Yu Watanabe <watanabe.yu+github@gmail.com>
|
Yu Watanabe <watanabe.yu+github@gmail.com>
|
||||||
Andrey Borzenkov <arvidjaar@gmail.com>
|
Andrey Borzenkov <arvidjaar@gmail.com>
|
||||||
|
Peter Robinson <pbrobinson@fedoraproject.org>
|
||||||
|
David Disseldorp <ddiss@suse.de>
|
||||||
Hans de Goede <hdegoede@redhat.com>
|
Hans de Goede <hdegoede@redhat.com>
|
||||||
Jonathan Lebon <jonathan@jlebon.com>
|
Jonathan Lebon <jonathan@jlebon.com>
|
||||||
Peter Jones <pjones@redhat.com>
|
|
||||||
Peter Robinson <pbrobinson@fedoraproject.org>
|
|
||||||
Andreas Thienemann <andreas@bawue.net>
|
|
||||||
Frantisek Sumsal <frantisek@sumsal.cz>
|
Frantisek Sumsal <frantisek@sumsal.cz>
|
||||||
|
Peter Jones <pjones@redhat.com>
|
||||||
|
Thomas Blume <thomas.blume@suse.com>
|
||||||
|
Andreas Thienemann <andreas@bawue.net>
|
||||||
|
Renaud Métrich <rmetrich@redhat.com>
|
||||||
|
Tomasz Paweł Gajc <tpgxyz@gmail.com>
|
||||||
Fabian Vogt <fvogt@suse.com>
|
Fabian Vogt <fvogt@suse.com>
|
||||||
Nicolas Chauvet <kwizart@gmail.com>
|
Nicolas Chauvet <kwizart@gmail.com>
|
||||||
Zoltán Böszörményi <zboszor@pr.hu>
|
Zoltán Böszörményi <zboszor@pr.hu>
|
||||||
Beniamino Galvani <bgalvani@redhat.com>
|
|
||||||
Colin Walters <walters@verbum.org>
|
Colin Walters <walters@verbum.org>
|
||||||
John Reiser <jreiser@bitwagon.com>
|
John Reiser <jreiser@bitwagon.com>
|
||||||
Luca Berra <bluca@vodka.it>
|
Luca Berra <bluca@vodka.it>
|
||||||
Tomasz Paweł Gajc <tpgxyz@gmail.com>
|
|
||||||
Xunlei Pang <xlpang@redhat.com>
|
Xunlei Pang <xlpang@redhat.com>
|
||||||
Brian C. Lane <bcl@redhat.com>
|
Brian C. Lane <bcl@redhat.com>
|
||||||
Daniel Drake <drake@endlessm.com>
|
Daniel Drake <drake@endlessm.com>
|
||||||
Renaud Métrich <rmetrich@redhat.com>
|
Dusty Mabe <dusty@dustymabe.com>
|
||||||
|
Shreenidhi Shedi <sshedi@vmware.com>
|
||||||
Angelo "pallotron" Failla <pallotron@fb.com>
|
Angelo "pallotron" Failla <pallotron@fb.com>
|
||||||
Thomas Blume <thomas.blume@suse.com>
|
Dan Horák <dhorak@redhat.com>
|
||||||
|
David Tardon <dtardon@redhat.com>
|
||||||
|
David Teigland <teigland@redhat.com>
|
||||||
Ville Skyttä <ville.skytta@iki.fi>
|
Ville Skyttä <ville.skytta@iki.fi>
|
||||||
Böszörményi Zoltán <zboszor@pr.hu>
|
Böszörményi Zoltán <zboszor@pr.hu>
|
||||||
Cristian Rodríguez <crrodriguez@opensuse.org>
|
Cristian Rodríguez <crrodriguez@opensuse.org>
|
||||||
Dan Horák <dhorak@redhat.com>
|
|
||||||
Javier Martinez Canillas <javierm@redhat.com>
|
Javier Martinez Canillas <javierm@redhat.com>
|
||||||
Ondrej Mosnacek <omosnace@redhat.com>
|
Ondrej Mosnacek <omosnace@redhat.com>
|
||||||
Baoquan He <bhe@redhat.com>
|
Baoquan He <bhe@redhat.com>
|
||||||
Brendan Germain <brendan.germain@nasdaqomx.com>
|
Brendan Germain <brendan.germain@nasdaqomx.com>
|
||||||
David Tardon <dtardon@redhat.com>
|
|
||||||
Dusty Mabe <dusty@dustymabe.com>
|
|
||||||
Jonas Witschel <diabonas@gmx.de>
|
Jonas Witschel <diabonas@gmx.de>
|
||||||
Leho Kraav <leho@kraav.com>
|
Leho Kraav <leho@kraav.com>
|
||||||
|
Marcos Mello <marcosfrm@gmail.com>
|
||||||
|
Mike Gilbert <floppym@gentoo.org>
|
||||||
Mikhail Novosyolov <m.novosyolov@rosalinux.ru>
|
Mikhail Novosyolov <m.novosyolov@rosalinux.ru>
|
||||||
Moritz Maxeiner <moritz@ucworks.org>
|
Moritz Maxeiner <moritz@ucworks.org>
|
||||||
Nathan Rini <nate@ucar.edu>
|
Nathan Rini <nate@ucar.edu>
|
||||||
Radek Vykydal <rvykydal@redhat.com>
|
Radek Vykydal <rvykydal@redhat.com>
|
||||||
|
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
|
||||||
Đoàn Trần Công Danh <congdanhqx@gmail.com>
|
Đoàn Trần Công Danh <congdanhqx@gmail.com>
|
||||||
Fabian Deutsch <fabiand@fedoraproject.org>
|
Fabian Deutsch <fabiand@fedoraproject.org>
|
||||||
Kamil Rytarowski <n54@gmx.com>
|
Kamil Rytarowski <n54@gmx.com>
|
||||||
|
Laszlo Gombos <laszlo.gombos@gmail.com>
|
||||||
Lidong Zhong <lidong.zhong@suse.com>
|
Lidong Zhong <lidong.zhong@suse.com>
|
||||||
Marc Grimme <grimme@atix.de>
|
Marc Grimme <grimme@atix.de>
|
||||||
Mike Gilbert <floppym@gentoo.org>
|
|
||||||
NeilBrown <neilb@suse.de>
|
NeilBrown <neilb@suse.de>
|
||||||
Peter Rajnoha <prajnoha@redhat.com>
|
Peter Rajnoha <prajnoha@redhat.com>
|
||||||
Thorsten Behrens <tbehrens@suse.com>
|
Thorsten Behrens <tbehrens@suse.com>
|
||||||
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
|
|
||||||
q66 <daniel@octaforge.org>
|
q66 <daniel@octaforge.org>
|
||||||
Adam Williamson <awilliam@redhat.com>
|
Adam Williamson <awilliam@redhat.com>
|
||||||
Chao Wang <chaowang@redhat.com>
|
Chao Wang <chaowang@redhat.com>
|
||||||
|
@ -78,9 +84,11 @@ Jesse Keating <jkeating@redhat.com>
|
||||||
Milan Broz <mbroz@redhat.com>
|
Milan Broz <mbroz@redhat.com>
|
||||||
Mimi Zohar <zohar@linux.vnet.ibm.com>
|
Mimi Zohar <zohar@linux.vnet.ibm.com>
|
||||||
Norbert Lange <norbert.lange@andritz.com>
|
Norbert Lange <norbert.lange@andritz.com>
|
||||||
|
Pingfan Liu <piliu@redhat.com>
|
||||||
Roberto Sassu <roberto.sassu@polito.it>
|
Roberto Sassu <roberto.sassu@polito.it>
|
||||||
Stefan Reimer <it@startux.de>
|
Stefan Reimer <it@startux.de>
|
||||||
Takashi Iwai <tiwai@suse.de>
|
Takashi Iwai <tiwai@suse.de>
|
||||||
|
Tony Asleson <tasleson@redhat.com>
|
||||||
Anton Blanchard <anton@samba.org>
|
Anton Blanchard <anton@samba.org>
|
||||||
Bill Nottingham <notting@redhat.com>
|
Bill Nottingham <notting@redhat.com>
|
||||||
Chapman Flack <g2@anastigmatix.net>
|
Chapman Flack <g2@anastigmatix.net>
|
||||||
|
@ -94,13 +102,14 @@ Jiri Konecny <jkonecny@redhat.com>
|
||||||
Jon Ander Hernandez <jonan.h@gmail.com>
|
Jon Ander Hernandez <jonan.h@gmail.com>
|
||||||
Juan RP <xtraeme@gmail.com>
|
Juan RP <xtraeme@gmail.com>
|
||||||
Lance Albertson <lance@osuosl.org>
|
Lance Albertson <lance@osuosl.org>
|
||||||
Marcos Mello <marcosfrm@gmail.com>
|
|
||||||
Marian Ganisin <mganisin@redhat.com>
|
Marian Ganisin <mganisin@redhat.com>
|
||||||
|
Masahiro Matsuya <mmatsuya@redhat.com>
|
||||||
Matthias Gerstner <matthias.gerstner@suse.de>
|
Matthias Gerstner <matthias.gerstner@suse.de>
|
||||||
Max Resch <resch.max@gmail.com>
|
Max Resch <resch.max@gmail.com>
|
||||||
Michael Ploujnikov <plouj@somanetworks.com>
|
Michael Ploujnikov <plouj@somanetworks.com>
|
||||||
Pratyush Anand <panand@redhat.com>
|
Pratyush Anand <panand@redhat.com>
|
||||||
Silvio Fricke <silvio.fricke@gmail.com>
|
Silvio Fricke <silvio.fricke@gmail.com>
|
||||||
|
Stefan Berger <stefanb@linux.ibm.com>
|
||||||
Steven Brudenell <steven.brudenell@gmail.com>
|
Steven Brudenell <steven.brudenell@gmail.com>
|
||||||
Stig Telfer <stelfer@cray.com>
|
Stig Telfer <stelfer@cray.com>
|
||||||
Thomas Backlund <tmb@mageia.org>
|
Thomas Backlund <tmb@mageia.org>
|
||||||
|
@ -110,10 +119,14 @@ Wim Muskee <wimmuskee@gmail.com>
|
||||||
Alan Jenkins <alan-jenkins@tuffmail.co.uk>
|
Alan Jenkins <alan-jenkins@tuffmail.co.uk>
|
||||||
Alan Pevec <apevec@redhat.com>
|
Alan Pevec <apevec@redhat.com>
|
||||||
Alex Harpin <development@landsofshadow.co.uk>
|
Alex Harpin <development@landsofshadow.co.uk>
|
||||||
|
Alexander Wenzel <alexander.wenzel@qbeyond.de>
|
||||||
Alexey Shabalin <shaba@altlinux.org>
|
Alexey Shabalin <shaba@altlinux.org>
|
||||||
|
Andre Russ <andre.russ@sap.com>
|
||||||
|
Andreas Schwab <schwab@suse.de>
|
||||||
Ankit Kumar <ankit@linux.vnet.ibm.com>
|
Ankit Kumar <ankit@linux.vnet.ibm.com>
|
||||||
Antony Messerli <amesserl@rackspace.com>
|
Antony Messerli <amesserl@rackspace.com>
|
||||||
Chao Fan <cfan@redhat.com>
|
Chao Fan <cfan@redhat.com>
|
||||||
|
Cornelius Hoffmann <coding@hoffmn.de>
|
||||||
Daniel Cordero <dracut@0xdc.io>
|
Daniel Cordero <dracut@0xdc.io>
|
||||||
Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
||||||
Daniel Schaal <farbing@web.de>
|
Daniel Schaal <farbing@web.de>
|
||||||
|
@ -128,7 +141,9 @@ Imran Haider <imran1008@gmail.com>
|
||||||
James Buren <ryuo@frugalware.org>
|
James Buren <ryuo@frugalware.org>
|
||||||
Jan Macku <jamacku@redhat.com>
|
Jan Macku <jamacku@redhat.com>
|
||||||
Joey Boggs <jboggs@redhat.com>
|
Joey Boggs <jboggs@redhat.com>
|
||||||
|
José María Fernández <josemariafg@gmail.com>
|
||||||
Julian Wolf <juwolf@suse.com>
|
Julian Wolf <juwolf@suse.com>
|
||||||
|
Kairui Song <kasong@tencent.com>
|
||||||
Koen Kooi <koen@dominion.thruhere.net>
|
Koen Kooi <koen@dominion.thruhere.net>
|
||||||
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
||||||
Kyle McMartin <kmcmarti@redhat.com>
|
Kyle McMartin <kmcmarti@redhat.com>
|
||||||
|
@ -144,28 +159,28 @@ Nikoli <nikoli@gmx.us>
|
||||||
Patrick Talbert <ptalbert@redhat.com>
|
Patrick Talbert <ptalbert@redhat.com>
|
||||||
Pedro Monreal <pmgdeb@gmail.com>
|
Pedro Monreal <pmgdeb@gmail.com>
|
||||||
Petr Pavlu <petr.pavlu@suse.com>
|
Petr Pavlu <petr.pavlu@suse.com>
|
||||||
Pingfan Liu <piliu@redhat.com>
|
|
||||||
Przemysław Rudy <prudy1@o2.pl>
|
Przemysław Rudy <prudy1@o2.pl>
|
||||||
Robert LeBlanc <robert@leblancnet.us>
|
Robert LeBlanc <robert@leblancnet.us>
|
||||||
Robert Scheck <robert@fedoraproject.org>
|
Robert Scheck <robert@fedoraproject.org>
|
||||||
Stefan Berger <stefanb@us.ibm.com>
|
Stefan Berger <stefanb@us.ibm.com>
|
||||||
Thomas Lange <lange@informatik.uni-koeln.de>
|
Thomas Lange <lange@informatik.uni-koeln.de>
|
||||||
Till Maas <opensource@till.name>
|
Till Maas <opensource@till.name>
|
||||||
Tony Asleson <tasleson@redhat.com>
|
|
||||||
Vivek Goyal <vgoyal@redhat.com>
|
Vivek Goyal <vgoyal@redhat.com>
|
||||||
Vladislav Bogdanov <bubble@hoster-ok.com>
|
Vladislav Bogdanov <bubble@hoster-ok.com>
|
||||||
|
Zoltán Böszörményi <zboszor@gmail.com>
|
||||||
Érico Rolim <erico.erc@gmail.com>
|
Érico Rolim <erico.erc@gmail.com>
|
||||||
наб <nabijaczleweli@nabijaczleweli.xyz>
|
наб <nabijaczleweli@nabijaczleweli.xyz>
|
||||||
A. Wilcox <AWilcox@Wilcox-Tech.com>
|
A. Wilcox <AWilcox@Wilcox-Tech.com>
|
||||||
Adam Alves <adamoa@gmail.com>
|
Adam Alves <adamoa@gmail.com>
|
||||||
|
Adrien Thierry <athierry@redhat.com>
|
||||||
Alexander Kurtz <alexander@kurtz.be>
|
Alexander Kurtz <alexander@kurtz.be>
|
||||||
Alexander Miroshnichenko <alex@millerson.name>
|
Alexander Miroshnichenko <alex@millerson.name>
|
||||||
Alexander Sosedkin <asosedkin@redhat.com>
|
Alexander Sosedkin <asosedkin@redhat.com>
|
||||||
Alexander Todorov <atodorov@redhat.com>
|
Alexander Todorov <atodorov@redhat.com>
|
||||||
Alexey Kodanev <alexey.kodanev@oracle.com>
|
Alexey Kodanev <alexey.kodanev@oracle.com>
|
||||||
Andreas Schwab <schwab@suse.de>
|
|
||||||
Andreas Stieger <astieger@suse.com>
|
Andreas Stieger <astieger@suse.com>
|
||||||
Andrew J. Hesford <ajh@sideband.org>
|
Andrew J. Hesford <ajh@sideband.org>
|
||||||
|
Andrey Sokolov <keremet@altlinux.org>
|
||||||
Andy Lutomirski <luto@mit.edu>
|
Andy Lutomirski <luto@mit.edu>
|
||||||
Anjali Kulkarni <anjali.k.kulkarni@oracle.com>
|
Anjali Kulkarni <anjali.k.kulkarni@oracle.com>
|
||||||
Anssi Hannula <anssi@mageia.org>
|
Anssi Hannula <anssi@mageia.org>
|
||||||
|
@ -177,22 +192,25 @@ B. Wilson <x@wilsonb.com>
|
||||||
Ben Howard <ben.howard@redhat.com>
|
Ben Howard <ben.howard@redhat.com>
|
||||||
Benjamin Marzinski <bmarzins@redhat.com>
|
Benjamin Marzinski <bmarzins@redhat.com>
|
||||||
Brandon Philips <brandon@ifup.co>
|
Brandon Philips <brandon@ifup.co>
|
||||||
|
Brandon Sloane <btsloane@verizon.net>
|
||||||
Bruno E. O. Meneguele <bmeneg@redhat.com>
|
Bruno E. O. Meneguele <bmeneg@redhat.com>
|
||||||
Bryn M. Reeves <bmr@redhat.com>
|
Bryn M. Reeves <bmr@redhat.com>
|
||||||
Canek Peláez Valdés <caneko@gmail.com>
|
Canek Peláez Valdés <caneko@gmail.com>
|
||||||
Carlo Caione <carlo@endlessm.com>
|
Carlo Caione <carlo@endlessm.com>
|
||||||
Chad Dupuis <chad.dupuis@cavium.com>
|
Chad Dupuis <chad.dupuis@cavium.com>
|
||||||
|
Charles Rose <charles.rose@dell.com>
|
||||||
Christian Heinz <christian.ch.heinz@gmail.com>
|
Christian Heinz <christian.ch.heinz@gmail.com>
|
||||||
|
Coiby Xu <coxu@redhat.com>
|
||||||
Cong Wang <amwang@redhat.com>
|
Cong Wang <amwang@redhat.com>
|
||||||
Dan Fuhry <dfuhry@datto.com>
|
Dan Fuhry <dfuhry@datto.com>
|
||||||
Dave Jones <davej@redhat.com>
|
Dave Jones <davej@redhat.com>
|
||||||
David Disseldorp <ddiss@suse.de>
|
|
||||||
David Hildenbrand <david@redhat.com>
|
David Hildenbrand <david@redhat.com>
|
||||||
David Michael <david.michael@coreos.com>
|
David Michael <david.michael@coreos.com>
|
||||||
Denis Volkov <denis@simpletexting.net>
|
Denis Volkov <denis@simpletexting.net>
|
||||||
Dennis Schridde <devurandom@gmx.net>
|
Dennis Schridde <devurandom@gmx.net>
|
||||||
Derek Hageman <hageman@inthat.cloud>
|
Derek Hageman <hageman@inthat.cloud>
|
||||||
Derek Higgins <derekh@redhat.com>
|
Derek Higgins <derekh@redhat.com>
|
||||||
|
Dirk Müller <dirk@dmllr.de>
|
||||||
Donovan Tremura <neurognostic@protonmail.ch>
|
Donovan Tremura <neurognostic@protonmail.ch>
|
||||||
Duane Griffin <duaneg@dghda.com>
|
Duane Griffin <duaneg@dghda.com>
|
||||||
Elan Ruusamäe <glen@delfi.ee>
|
Elan Ruusamäe <glen@delfi.ee>
|
||||||
|
@ -208,9 +226,12 @@ Frank Deng <frank.deng@oracle.com>
|
||||||
François Cami <fcami@fedoraproject.org>
|
François Cami <fcami@fedoraproject.org>
|
||||||
Gerd von Egidy <gerd.von.egidy@intra2net.com>
|
Gerd von Egidy <gerd.von.egidy@intra2net.com>
|
||||||
Glen Gray <slaine@slaine.org>
|
Glen Gray <slaine@slaine.org>
|
||||||
|
Glenn Morris <rgm@stanford.edu>
|
||||||
GuoChuang <guo.chuang@zte.com.cn>
|
GuoChuang <guo.chuang@zte.com.cn>
|
||||||
HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
|
HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
|
||||||
|
Hari Bathini <hbathini@linux.ibm.com>
|
||||||
Hendrik Brueckner <brueckner@linux.ibm.com>
|
Hendrik Brueckner <brueckner@linux.ibm.com>
|
||||||
|
Henrik Gombos <henrik99999@gmail.com>
|
||||||
Hermann Gausterer <git-dracut-2012@mrq1.org>
|
Hermann Gausterer <git-dracut-2012@mrq1.org>
|
||||||
Hiroaki Mizuguchi <hiroaki-m@iij.ad.jp>
|
Hiroaki Mizuguchi <hiroaki-m@iij.ad.jp>
|
||||||
Hongxu Jia <hongxu.jia@windriver.com>
|
Hongxu Jia <hongxu.jia@windriver.com>
|
||||||
|
@ -231,11 +252,14 @@ Jonas Jonsson <jonas@websystem.se>
|
||||||
Jonas Witschel <diabonas@archlinux.org>
|
Jonas Witschel <diabonas@archlinux.org>
|
||||||
Kevin Yung <Kevin.Yung@myob.com>
|
Kevin Yung <Kevin.Yung@myob.com>
|
||||||
Lars R. Damerow <lars@pixar.com>
|
Lars R. Damerow <lars@pixar.com>
|
||||||
|
Lars Wendler <polynomial-c@gentoo.org>
|
||||||
Lee Duncan <lduncan@suse.com>
|
Lee Duncan <lduncan@suse.com>
|
||||||
Lennart Poettering <lennart@poettering.net>
|
Lennart Poettering <lennart@poettering.net>
|
||||||
Lennert Buytenhek <buytenh@wantstofly.org>
|
Lennert Buytenhek <buytenh@wantstofly.org>
|
||||||
Lev Veyde <lveyde@redhat.com>
|
Lev Veyde <lveyde@redhat.com>
|
||||||
Lianbo Jiang <lijiang@redhat.com>
|
Lianbo Jiang <lijiang@redhat.com>
|
||||||
|
LinkTed <link.ted@mailbox.org>
|
||||||
|
Luca BRUNO <luca.bruno@coreos.com>
|
||||||
Lucas C. Villa Real <lucasvr@gmail.com>
|
Lucas C. Villa Real <lucasvr@gmail.com>
|
||||||
Major Hayden <major@mhtx.net>
|
Major Hayden <major@mhtx.net>
|
||||||
Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
|
Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
|
||||||
|
@ -244,6 +268,7 @@ Marian Csontos <mcsontos@redhat.com>
|
||||||
Mark Fasheh <mfasheh@suse.de>
|
Mark Fasheh <mfasheh@suse.de>
|
||||||
Matt <smoothsailing72@hotmail.com>
|
Matt <smoothsailing72@hotmail.com>
|
||||||
Matt Smith <shadowfax@gmx.com>
|
Matt Smith <shadowfax@gmx.com>
|
||||||
|
Matthias Berndt <matthias_berndt@gmx.de>
|
||||||
Mei Liu <liumbj@linux.vnet.ibm.com>
|
Mei Liu <liumbj@linux.vnet.ibm.com>
|
||||||
Michael Chapman <mike@very.puzzling.org>
|
Michael Chapman <mike@very.puzzling.org>
|
||||||
Michael McCracken <michael.mccracken@gmail.com>
|
Michael McCracken <michael.mccracken@gmail.com>
|
||||||
|
@ -259,6 +284,7 @@ Ondrej Dubaj <odubaj@redhat.com>
|
||||||
P J P <ppandit@redhat.com>
|
P J P <ppandit@redhat.com>
|
||||||
Paolo Bonzini <pbonzini@redhat.com>
|
Paolo Bonzini <pbonzini@redhat.com>
|
||||||
Paul Robins <exp@users.noreply.github.com>
|
Paul Robins <exp@users.noreply.github.com>
|
||||||
|
Pavel Valena <pvalena@redhat.com>
|
||||||
Pavel Zhukov <pzhukov@redhat.com>
|
Pavel Zhukov <pzhukov@redhat.com>
|
||||||
Pawel Wieczorkiewicz <pwieczorkiewicz@suse.de>
|
Pawel Wieczorkiewicz <pwieczorkiewicz@suse.de>
|
||||||
Pekka Wallendahl <wyrmiyu@gmail.com>
|
Pekka Wallendahl <wyrmiyu@gmail.com>
|
||||||
|
@ -279,12 +305,12 @@ Sergei Iudin <tsipa740@gmail.com>
|
||||||
Sergey Fionov <fionov@gmail.com>
|
Sergey Fionov <fionov@gmail.com>
|
||||||
Shawn W Dunn <sfalken@opensuse.org>
|
Shawn W Dunn <sfalken@opensuse.org>
|
||||||
Srinivasa T N <seenutn@linux.vnet.ibm.com>
|
Srinivasa T N <seenutn@linux.vnet.ibm.com>
|
||||||
Stefan Berger <stefanb@linux.ibm.com>
|
|
||||||
Stijn Hoop <stijn@sandcat.nl>
|
Stijn Hoop <stijn@sandcat.nl>
|
||||||
Sullivan (CTR), Austin <austin.sullivan.ctr@progeny.net>
|
Sullivan (CTR), Austin <austin.sullivan.ctr@progeny.net>
|
||||||
Thierry Vignaud <thierry.vignaud@gmail.com>
|
Thierry Vignaud <thierry.vignaud@gmail.com>
|
||||||
Thilo Bangert <thilo.bangert@gmx.net>
|
Thilo Bangert <thilo.bangert@gmx.net>
|
||||||
Thomas Abraham <tabraham@suse.com>
|
Thomas Abraham <tabraham@suse.com>
|
||||||
|
Thomas Haller <thaller@redhat.com>
|
||||||
Tobias Geerinckx <tobias.geerinckx@gmail.com>
|
Tobias Geerinckx <tobias.geerinckx@gmail.com>
|
||||||
Tobias Klauser <tklauser@distanz.ch>
|
Tobias Klauser <tklauser@distanz.ch>
|
||||||
Tom Gundersen <teg@jklm.no>
|
Tom Gundersen <teg@jklm.no>
|
||||||
|
@ -305,6 +331,8 @@ jbash aka John Bashinski <jbash@velvet.com>
|
||||||
jloeser <jloeser@suse.de>
|
jloeser <jloeser@suse.de>
|
||||||
johannes <johannes.brechtmann@gmail.com>
|
johannes <johannes.brechtmann@gmail.com>
|
||||||
jonathan-teh <30538043+jonathan-teh@users.noreply.github.com>
|
jonathan-teh <30538043+jonathan-teh@users.noreply.github.com>
|
||||||
|
joshuacov1 <joshuacov@gmail.com>
|
||||||
|
lapseofreason <lapseofreason0@gmail.com>
|
||||||
leo-lb <lle-bout@zaclys.net>
|
leo-lb <lle-bout@zaclys.net>
|
||||||
logan <logancaldwell23@gmail.com>
|
logan <logancaldwell23@gmail.com>
|
||||||
masem <matej.semian@gmail.com>
|
masem <matej.semian@gmail.com>
|
||||||
|
|
15
Makefile
15
Makefile
|
@ -102,6 +102,16 @@ ifeq ($(HAVE_SHFMT),yes)
|
||||||
shfmt -w -s .
|
shfmt -w -s .
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
src/dracut-cpio/target/release/dracut-cpio: src/dracut-cpio/src/main.rs
|
||||||
|
cargo --offline build --release --manifest-path src/dracut-cpio/Cargo.toml
|
||||||
|
|
||||||
|
dracut-cpio: src/dracut-cpio/target/release/dracut-cpio
|
||||||
|
ln -fs $< $@
|
||||||
|
|
||||||
|
ifeq ($(enable_dracut_cpio),yes)
|
||||||
|
all: dracut-cpio
|
||||||
|
endif
|
||||||
|
|
||||||
doc: $(manpages) dracut.html
|
doc: $(manpages) dracut.html
|
||||||
|
|
||||||
ifneq ($(enable_documentation),no)
|
ifneq ($(enable_documentation),no)
|
||||||
|
@ -168,6 +178,7 @@ ifneq ($(enable_documentation),no)
|
||||||
endif
|
endif
|
||||||
if [ -n "$(systemdsystemunitdir)" ]; then \
|
if [ -n "$(systemdsystemunitdir)" ]; then \
|
||||||
mkdir -p $(DESTDIR)$(systemdsystemunitdir); \
|
mkdir -p $(DESTDIR)$(systemdsystemunitdir); \
|
||||||
|
ln -srf $(DESTDIR)$(pkglibdir)/modules.d/98dracut-systemd/dracut-shutdown-onfailure.service $(DESTDIR)$(systemdsystemunitdir)/dracut-shutdown-onfailure.service; \
|
||||||
ln -srf $(DESTDIR)$(pkglibdir)/modules.d/98dracut-systemd/dracut-shutdown.service $(DESTDIR)$(systemdsystemunitdir)/dracut-shutdown.service; \
|
ln -srf $(DESTDIR)$(pkglibdir)/modules.d/98dracut-systemd/dracut-shutdown.service $(DESTDIR)$(systemdsystemunitdir)/dracut-shutdown.service; \
|
||||||
mkdir -p $(DESTDIR)$(systemdsystemunitdir)/sysinit.target.wants; \
|
mkdir -p $(DESTDIR)$(systemdsystemunitdir)/sysinit.target.wants; \
|
||||||
ln -s ../dracut-shutdown.service \
|
ln -s ../dracut-shutdown.service \
|
||||||
|
@ -196,6 +207,9 @@ endif
|
||||||
if [ -f dracut-util ]; then \
|
if [ -f dracut-util ]; then \
|
||||||
install -m 0755 dracut-util $(DESTDIR)$(pkglibdir)/dracut-util; \
|
install -m 0755 dracut-util $(DESTDIR)$(pkglibdir)/dracut-util; \
|
||||||
fi
|
fi
|
||||||
|
ifeq ($(enable_dracut_cpio),yes)
|
||||||
|
install -m 0755 dracut-cpio $(DESTDIR)$(pkglibdir)/dracut-cpio
|
||||||
|
endif
|
||||||
mkdir -p $(DESTDIR)${prefix}/lib/kernel/install.d
|
mkdir -p $(DESTDIR)${prefix}/lib/kernel/install.d
|
||||||
install -m 0755 install.d/50-dracut.install $(DESTDIR)${prefix}/lib/kernel/install.d/50-dracut.install
|
install -m 0755 install.d/50-dracut.install $(DESTDIR)${prefix}/lib/kernel/install.d/50-dracut.install
|
||||||
install -m 0755 install.d/51-dracut-rescue.install $(DESTDIR)${prefix}/lib/kernel/install.d/51-dracut-rescue.install
|
install -m 0755 install.d/51-dracut-rescue.install $(DESTDIR)${prefix}/lib/kernel/install.d/51-dracut-rescue.install
|
||||||
|
@ -222,6 +236,7 @@ clean:
|
||||||
$(RM) dracut-util util/util $(UTIL_OBJECTS)
|
$(RM) dracut-util util/util $(UTIL_OBJECTS)
|
||||||
$(RM) $(manpages) dracut.html
|
$(RM) $(manpages) dracut.html
|
||||||
$(RM) dracut.pc
|
$(RM) dracut.pc
|
||||||
|
$(RM) dracut-cpio src/dracut-cpio/target/release/dracut-cpio*
|
||||||
$(MAKE) -C test clean
|
$(MAKE) -C test clean
|
||||||
|
|
||||||
dist: dracut-$(DRACUT_MAIN_VERSION).tar.xz
|
dist: dracut-$(DRACUT_MAIN_VERSION).tar.xz
|
||||||
|
|
266
NEWS.md
266
NEWS.md
|
@ -1,5 +1,271 @@
|
||||||
[Rendered view](https://github.com/dracutdevs/dracut/blob/master/NEWS.md)
|
[Rendered view](https://github.com/dracutdevs/dracut/blob/master/NEWS.md)
|
||||||
|
|
||||||
|
dracut-056
|
||||||
|
==========
|
||||||
|
|
||||||
|
#### Bug Fixes
|
||||||
|
|
||||||
|
* **base:**
|
||||||
|
* do not change the provided UUID ([4e858741](https://github.com/dracutdevs/dracut/commit/4e858741087a5cfea891bd2c1fd51ea9b830aeaf))
|
||||||
|
* add default device choice ([e8c18c9f](https://github.com/dracutdevs/dracut/commit/e8c18c9f7f5ed94898f70e9ff5a5f94a815a2b49))
|
||||||
|
* tr needs to be installed ([dfbfd33b](https://github.com/dracutdevs/dracut/commit/dfbfd33b24524c0c10ad3594be143192f5b7da84))
|
||||||
|
* do not quote $initargs for switch_root ([f649cd10](https://github.com/dracutdevs/dracut/commit/f649cd10b2e920e9d65c532db9b9f89a7370ad99))
|
||||||
|
* repair installing dracut-util ([d7acf107](https://github.com/dracutdevs/dracut/commit/d7acf107f2ac619f73dfa29588ea9adfaf79e296))
|
||||||
|
* **bluetooth:**
|
||||||
|
* make hostonly configuration files optional ([d03fb675](https://github.com/dracutdevs/dracut/commit/d03fb675d8e904c6c44de9b91814b33c45043f4f))
|
||||||
|
* dbus configuration path fixes ([34b1dd2e](https://github.com/dracutdevs/dracut/commit/34b1dd2e26c343e9000094db01a7985b6851adf1))
|
||||||
|
* **cms:** reload NetworkManager connections ([07977ee5](https://github.com/dracutdevs/dracut/commit/07977ee5c5294a5d30c1f33f292a0b31303750fb))
|
||||||
|
* **cpio:**
|
||||||
|
* correct dev_t -> rmajor/rminor mapping ([acc629ab](https://github.com/dracutdevs/dracut/commit/acc629abb0d7a26f692f99e5a9cf8c8401bc6a86))
|
||||||
|
* write zeros instead of seek for padding and alignment ([0af11c5e](https://github.com/dracutdevs/dracut/commit/0af11c5ea5018a3e1049a2207a9a671049651876))
|
||||||
|
* **crypt:** remove quotes from cryptsetupopts ([e0abf88a](https://github.com/dracutdevs/dracut/commit/e0abf88a15d23fbf793cf872397016ad86aeaaa8), closes [#1528](https://github.com/dracutdevs/dracut/issues/1528))
|
||||||
|
* **crypt-gpg:**
|
||||||
|
* tr needs to be installed ([a93fbc4a](https://github.com/dracutdevs/dracut/commit/a93fbc4ae00d8c6ecda67319a6425f7966609bbe))
|
||||||
|
* execute --card-status on each try ([66100936](https://github.com/dracutdevs/dracut/commit/6610093698db25fda1d584b9771da1e2c2330095))
|
||||||
|
* **dasd_rules:**
|
||||||
|
* correct udev dasd rules parsing ([5de6e4d5](https://github.com/dracutdevs/dracut/commit/5de6e4d56e5206cb47f645ad1cb6d39794048c68))
|
||||||
|
* remove collect based udev rule creators ([ebafbd82](https://github.com/dracutdevs/dracut/commit/ebafbd824175e201ae9476576588a896c6b7d7eb))
|
||||||
|
* **dmsquash-live:**
|
||||||
|
* option to use overlayfs on a block device root ([813577e2](https://github.com/dracutdevs/dracut/commit/813577e2ba034b448d2cf2d2857b2d20d56c0259))
|
||||||
|
* do not install systemd files when systemd is not enabled ([bf8738d3](https://github.com/dracutdevs/dracut/commit/bf8738d31ca53ad6410c46c1f9b2a4a12273b9a3))
|
||||||
|
* iso-scan requires rmdir ([e19e3890](https://github.com/dracutdevs/dracut/commit/e19e38904c054664473207d2d6ef3c53bd938867))
|
||||||
|
* correct regression introduced with shellcheck changes ([0c631efb](https://github.com/dracutdevs/dracut/commit/0c631efb10bf4ce18ec8640277bd94712950298a))
|
||||||
|
* **dmsquash-live-ntfs:** fuse3 no longer requires ulockmgr_server ([75ad2699](https://github.com/dracutdevs/dracut/commit/75ad269931eccd266a5d60ba4000d93655143e00))
|
||||||
|
* **dracut:** be more robust when using 'set -u' ([22a80629](https://github.com/dracutdevs/dracut/commit/22a80629b4bbcef02eb8fe3611ea44e253ef4c61))
|
||||||
|
* **dracut-functions.sh:**
|
||||||
|
* ip route parsing ([d754e1c6](https://github.com/dracutdevs/dracut/commit/d754e1c6f081a6501cb7fdcb5caaa6c4977235af))
|
||||||
|
* get block device driver if in a virtual subsystem ([dc3b976f](https://github.com/dracutdevs/dracut/commit/dc3b976f3393d7a3fb75b349418fc8ee2c9142bd))
|
||||||
|
* **dracut-init:** unbreak a comment ([bc4f196f](https://github.com/dracutdevs/dracut/commit/bc4f196f9825029eaef7ccf525ec57f5229b2793))
|
||||||
|
* **dracut-initramfs-restore.sh:**
|
||||||
|
* add missing compression options ([e86397de](https://github.com/dracutdevs/dracut/commit/e86397de24f4efa6d36e2bb5ae84b7d9ec69b72d))
|
||||||
|
* add missing default paths ([3d8e1ad2](https://github.com/dracutdevs/dracut/commit/3d8e1ad2ae1e34244ddf700beea6358c1452e05c), closes [#1628](https://github.com/dracutdevs/dracut/issues/1628))
|
||||||
|
* **dracut-install:** tweaks to get_real_file() ([1beeaf3b](https://github.com/dracutdevs/dracut/commit/1beeaf3b71aed763d5fc7a9ee044d675f8906e8c))
|
||||||
|
* **dracut-shutdown:** add cleanup handler on failure ([7ab1d002](https://github.com/dracutdevs/dracut/commit/7ab1d00227cad6f1b86ba01fdc766769faebb031))
|
||||||
|
* **dracut-systemd:** do not use Requires for vconsole-setup.service ([a7f5429c](https://github.com/dracutdevs/dracut/commit/a7f5429cb81f7ffdf9bd5684af8d36725170b756))
|
||||||
|
* **dracut.sh:**
|
||||||
|
* do not ignore invalid config file or dir path ([7de9ffc0](https://github.com/dracutdevs/dracut/commit/7de9ffc0574790ecbad74b5a000ecd022d7736d4))
|
||||||
|
* check kernel zstd support early ([475497b1](https://github.com/dracutdevs/dracut/commit/475497b1bd12c006c782541124b6427cb7ef4cb7))
|
||||||
|
* check availability of configured compression ([bdac657b](https://github.com/dracutdevs/dracut/commit/bdac657bf65615438942a872491a818750735014))
|
||||||
|
* inform user about auto-selected compression method ([06d47ded](https://github.com/dracutdevs/dracut/commit/06d47ded679231e1370cc655c1df408fc865baac))
|
||||||
|
* drop pointless check for module compression method ([586d3e76](https://github.com/dracutdevs/dracut/commit/586d3e7664c00bf144becfa69dde2dbab8711d51))
|
||||||
|
* change misspelled variable name ([acfd97a9](https://github.com/dracutdevs/dracut/commit/acfd97a94385c33cd6cef4e5a37f233ea4081288))
|
||||||
|
* remove wrong $ in loop sequence ([f1245b5b](https://github.com/dracutdevs/dracut/commit/f1245b5bc13a98ef0dcc679dcef6148214e09503))
|
||||||
|
* handle symlinks appropriately while using '-i' option ([c7fbc0c8](https://github.com/dracutdevs/dracut/commit/c7fbc0c8901917baf0d1f0822568e65c6ec00d18))
|
||||||
|
* handle '-i' option to include files beginning with '.' ([f1138012](https://github.com/dracutdevs/dracut/commit/f1138012c9dc44e6614466c0a8e929fc55e4a5dd))
|
||||||
|
* **drm:** add privacy screen modules to the initrd ([14d97a6a](https://github.com/dracutdevs/dracut/commit/14d97a6a28c6172340c47c89374358aaf4e2629d))
|
||||||
|
* **fedora.conf.example:** rename misspelled variable ([9371dcab](https://github.com/dracutdevs/dracut/commit/9371dcaba3c58377428eee44bd702fae7b2ab20e))
|
||||||
|
* **fido2:** add a missing library ([4753738b](https://github.com/dracutdevs/dracut/commit/4753738b62d958955f50fb077ea21c56a8d23dc3))
|
||||||
|
* **fips:**
|
||||||
|
* missing sourcing of dracut-lib ([857b17f0](https://github.com/dracutdevs/dracut/commit/857b17f090bdf575292f0bd6f5e8e3d753f6b426))
|
||||||
|
* add and remove local variables ([e8121bfd](https://github.com/dracutdevs/dracut/commit/e8121bfddda34e20db889a74d4ac6259ed182aea))
|
||||||
|
* wrong error message ([7f10c483](https://github.com/dracutdevs/dracut/commit/7f10c483b6abcc8be42cf246bbdade264be68228))
|
||||||
|
* handle s390x OSTree systems ([78557f05](https://github.com/dracutdevs/dracut/commit/78557f05a69fe718a97df85d2ed741ce10d3f806))
|
||||||
|
* **fips.sh:** repsect rd.fips.skipkernel ([5789abcb](https://github.com/dracutdevs/dracut/commit/5789abcbe05f30d556086590b786c4857d025d9d))
|
||||||
|
* **img-lib:** install rmdir ([51ce8893](https://github.com/dracutdevs/dracut/commit/51ce8893d981e90640123a7dcc3e4f3621e7d819))
|
||||||
|
* **install:**
|
||||||
|
* segfault on popen error ([5c2f72f1](https://github.com/dracutdevs/dracut/commit/5c2f72f152ec319a8001d1ff0bfd1f81a9130b04))
|
||||||
|
* extend hwcaps library handling to libraries under glibc-hwcaps/ ([10ed204f](https://github.com/dracutdevs/dracut/commit/10ed204f873f454dcd15ffcc82dc3a1c781c1514))
|
||||||
|
* use size_t to avoid -Wsign-compare warning ([55468a2d](https://github.com/dracutdevs/dracut/commit/55468a2d40182de4cce5ba4ecd5dcd96be03bd4d))
|
||||||
|
* improve gettid definition ([ef0f848a](https://github.com/dracutdevs/dracut/commit/ef0f848a67fdd0a0dab135acbd1cd7fa0179a95c))
|
||||||
|
* validate return values log.c ([19537f89](https://github.com/dracutdevs/dracut/commit/19537f8943ac4106c6d4ab0e00a48a8c0a9a0519))
|
||||||
|
* rectify unused function args in log.c ([b5cf7ec7](https://github.com/dracutdevs/dracut/commit/b5cf7ec784335ec561e379f8e78f48019a344ac0))
|
||||||
|
* use wrapper for asprintf ([e2a61595](https://github.com/dracutdevs/dracut/commit/e2a61595d2c91202ff4ea69937064cd2c0d1f336))
|
||||||
|
* use unsigned int instead of unsigned ([74a41799](https://github.com/dracutdevs/dracut/commit/74a417994840f7a6119e2dee57f9a3bb4d84998b))
|
||||||
|
* reduce cppcheck warnings ([b0bf8187](https://github.com/dracutdevs/dracut/commit/b0bf8187d5cc51d5576d8d70a81677d7c9741b37))
|
||||||
|
* add a missing ret value assignment ([6a444261](https://github.com/dracutdevs/dracut/commit/6a44426162d5b1b7084b17f921799863d353f847))
|
||||||
|
* **integrity:** add support for loading multiple EVM x509 certs ([9da76af8](https://github.com/dracutdevs/dracut/commit/9da76af8e7f0f7a939b2ee44f0b4a5ce0bdd3b0b))
|
||||||
|
* **iscsi:** add support for the new iscsiadm "no-wait" (-W) command ([7374943a](https://github.com/dracutdevs/dracut/commit/7374943ae3d063f0142c969b132c4156030fda8b))
|
||||||
|
* **kernel-modules:**
|
||||||
|
* add mailbox drivers for arm ([0e80ff72](https://github.com/dracutdevs/dracut/commit/0e80ff72e01d28e7e92d3adbf98ec40bdbdc37fe))
|
||||||
|
* detect block device's hardware driver ([c86f4d28](https://github.com/dracutdevs/dracut/commit/c86f4d286000d1e76fd405560b4114537e2cbbff))
|
||||||
|
* add blk_mq_alloc_disk and blk_cleanup_disk to blockfuncs ([b292ce72](https://github.com/dracutdevs/dracut/commit/b292ce7295f18192124e64e5ec31161d09492160))
|
||||||
|
* add more modules on RISC-V ([3cc9f1c1](https://github.com/dracutdevs/dracut/commit/3cc9f1c10c67dcdb5254e0eb69f19e9ab22abf20))
|
||||||
|
* add isp1760 USB controller ([15398458](https://github.com/dracutdevs/dracut/commit/15398458685d376fef56b1bf6fe09ae7c68324c1))
|
||||||
|
* add Type-C USB drivers for generic initrd ([a1287c62](https://github.com/dracutdevs/dracut/commit/a1287c627f28b16b1b066b7c256549b832bd98de))
|
||||||
|
* **kernel-modules-extra:** handle zstd module extension ([b3d2dcb7](https://github.com/dracutdevs/dracut/commit/b3d2dcb71e7af8f605f5f66041ed3c801333e5f1))
|
||||||
|
* **lvm:**
|
||||||
|
* restore setting LVM_MD_PV_ACTIVATED ([164e5ebb](https://github.com/dracutdevs/dracut/commit/164e5ebb1199ea3e3d641ce402d8257f0055a529))
|
||||||
|
* replace --partial option ([97543cca](https://github.com/dracutdevs/dracut/commit/97543cca48dfde849396f11c83f9c320e1b91c46))
|
||||||
|
* **man:** default value of rd.retry was increased to 180 seconds ([4855242c](https://github.com/dracutdevs/dracut/commit/4855242ce5cb586afd2eebd91df57ce1d28ae6b5))
|
||||||
|
* **mdraid:** allow UUID comparison for more than one UUID ([d364ce83](https://github.com/dracutdevs/dracut/commit/d364ce8334fef96f48492bd0fb3b7deac37bbb66))
|
||||||
|
* **memstrack:** drop bash runtime requirement ([35822f39](https://github.com/dracutdevs/dracut/commit/35822f39970b369301e0ff54436d5714dd996896))
|
||||||
|
* **mksh:** requires printf ([f806a628](https://github.com/dracutdevs/dracut/commit/f806a628aa9aec548e425e81b6ea4ab6f5db26f6))
|
||||||
|
* **multipath:**
|
||||||
|
* check if mpathconf is available ([4318533e](https://github.com/dracutdevs/dracut/commit/4318533e1493bfab622b64efc1b799426c812c26))
|
||||||
|
* drop ExecStop= setting from service unit ([9491e599](https://github.com/dracutdevs/dracut/commit/9491e599282d0d6bb12063eddbd192c0d2ce8acf))
|
||||||
|
* get config. dir from configuration ([2e3c5444](https://github.com/dracutdevs/dracut/commit/2e3c5444d271cb8f05955858b8fdc367c4ea5c48))
|
||||||
|
* **multipathd.service:**
|
||||||
|
* drop dependencies on iscsi and iscsid ([6246da40](https://github.com/dracutdevs/dracut/commit/6246da400fa7f527a1ff1c620bf85ac9f6644508))
|
||||||
|
* adapt to upstream multipath-tools unit file ([a247d2bc](https://github.com/dracutdevs/dracut/commit/a247d2bc0d4c6d37a2ea4f3da98dd7902bb37385))
|
||||||
|
* remove dependency on systemd-udev-settle ([371b338a](https://github.com/dracutdevs/dracut/commit/371b338a5f19d40ff4c3216dc0f27f9a00cf4e22))
|
||||||
|
* **network:**
|
||||||
|
* consistent use of "$gw" for gateway ([3f2c76bb](https://github.com/dracutdevs/dracut/commit/3f2c76bb1456941a28d3333569d2bf18f8624617))
|
||||||
|
* wrong test of wicked unit ([22e68307](https://github.com/dracutdevs/dracut/commit/22e683077a686b592da55e1d247b31f65c95d481))
|
||||||
|
* add errors and warnings when network interface does not exist ([79389352](https://github.com/dracutdevs/dracut/commit/7938935267dd8824f074adf84c219340ad4c8db6))
|
||||||
|
* **network-manager:**
|
||||||
|
* skip non-directories in /sys/class/net ([d9c3c774](https://github.com/dracutdevs/dracut/commit/d9c3c77437d91d7d66369a3ef701ffc5e501346d))
|
||||||
|
* disable tty output if the console is not usable ([f6e6be24](https://github.com/dracutdevs/dracut/commit/f6e6be245d0cda14d90a0442b688c8dca1410a2e))
|
||||||
|
* show output on console only with rd.debug enabled ([e07b7ad0](https://github.com/dracutdevs/dracut/commit/e07b7ad0e7f5dbb8024336f3075610b3b74ffb2e))
|
||||||
|
* write DHCP filename option to dhcpopts file ([38320fce](https://github.com/dracutdevs/dracut/commit/38320fce56a8d83b79d6c970c491a454ba9de213))
|
||||||
|
* check for nm-initrd-generator in both /usr/{libexec,lib} ([5ee7e249](https://github.com/dracutdevs/dracut/commit/5ee7e249b8cc74461122ccd7efe954b3402c23da))
|
||||||
|
* ensure safe content of /tmp/dhclient."$ifname".dhcpopts ([e509c638](https://github.com/dracutdevs/dracut/commit/e509c638e68a8e3cae446d1a4f9f86e3aa6e7a99))
|
||||||
|
* include nm-daemon-helper binary ([0e590531](https://github.com/dracutdevs/dracut/commit/0e5905315e92dfc095f543fd73db6190db533217))
|
||||||
|
* don't pull in systemd-udev-settle ([a0f12fb6](https://github.com/dracutdevs/dracut/commit/a0f12fb6a09b09f35ab28753d7c4461c10a8b562))
|
||||||
|
* support teaming under NM+systemd ([a97d2ced](https://github.com/dracutdevs/dracut/commit/a97d2cedcf65a9a2fbff2591171f0163c7d3cb46))
|
||||||
|
* pull in network.target in nm-initrd.service ([a97d6e2b](https://github.com/dracutdevs/dracut/commit/a97d6e2b13146783831b166ec5e8b33b29c514b0))
|
||||||
|
* **network-wicked:** multiple path corrections ([d3b5bc17](https://github.com/dracutdevs/dracut/commit/d3b5bc17ebadfe8922d1144b3dfd5435d0ecc71a))
|
||||||
|
* **nvmf:** validate_ip_conn ([655c65e6](https://github.com/dracutdevs/dracut/commit/655c65e6ced00e7a80c41e96c5f6fe108da07839))
|
||||||
|
* **qeth_rules:** check the existence of /sys/devices/qeth/*/online beforehand ([6c71ba41](https://github.com/dracutdevs/dracut/commit/6c71ba4121ae64ccd13fefba68ca327ac623810f))
|
||||||
|
* **resume:**
|
||||||
|
* resume using /usr/lib64/suspend ([c4593734](https://github.com/dracutdevs/dracut/commit/c459373448d24760d15e22fde7c6f811c7891376))
|
||||||
|
* check for presence of /sys/power/resume ([0b977906](https://github.com/dracutdevs/dracut/commit/0b97790626bff3579755b38f78a9c524a075cfcc))
|
||||||
|
* **rootfs-block:** make the base module dependency explicit ([3326e4c9](https://github.com/dracutdevs/dracut/commit/3326e4c957d0499495d9e91182fc574b960ace86))
|
||||||
|
* **s390_rules:** drop collect installation ([f905c3a7](https://github.com/dracutdevs/dracut/commit/f905c3a72c975cf6006f266755cc91229132c739))
|
||||||
|
* **shutdown:** be robust against forced shutdown ([b9ba3c8b](https://github.com/dracutdevs/dracut/commit/b9ba3c8bb8f0f1328cd1ffaa8dbf64585b28c474))
|
||||||
|
* **skipcpio:**
|
||||||
|
* calculate and use CPIO_MAGIC_LEN ([3fb8723c](https://github.com/dracutdevs/dracut/commit/3fb8723ce0066b4ba92f6dbfc4373a66d1f551c4))
|
||||||
|
* improve error checking ([f6d16b6b](https://github.com/dracutdevs/dracut/commit/f6d16b6bbd5b8b7ac238c3d2148bebf4e91140a2))
|
||||||
|
* **squash:**
|
||||||
|
* apply FIPS and libpthread workaround ([5ab18dee](https://github.com/dracutdevs/dracut/commit/5ab18dee996f0eeb2b0bfe354570e1b1af46d025))
|
||||||
|
* remove tailing '/' when installing ld.so.conf.d ([cbd85597](https://github.com/dracutdevs/dracut/commit/cbd85597e3ed6abf64ac17f431da5477eb5aefa0))
|
||||||
|
* keep ld cache under initdir ([dc21638c](https://github.com/dracutdevs/dracut/commit/dc21638c3f0acbb54417f3bfb6294ad5514bf2db))
|
||||||
|
* create relative symlinks ([a2b6be44](https://github.com/dracutdevs/dracut/commit/a2b6be44792b68218e3378a7d844b0f8527a4805))
|
||||||
|
* **systemd-sysusers:**
|
||||||
|
* use split systemd sysuser configs ([fec93bb2](https://github.com/dracutdevs/dracut/commit/fec93bb22181f80056b40231fca36c422248ade0))
|
||||||
|
* override systemd-sysusers.service ([dcbe23c1](https://github.com/dracutdevs/dracut/commit/dcbe23c14d13ca335ad327b7bb985071ca442f12))
|
||||||
|
* **tpm2-tss:**
|
||||||
|
* add a missing library ([c656b612](https://github.com/dracutdevs/dracut/commit/c656b612b101e4834e01f9841162e2629a7272f7))
|
||||||
|
* typo in depends() ([8b17105b](https://github.com/dracutdevs/dracut/commit/8b17105bed69ed90582a13d97d95ee19e6581365))
|
||||||
|
* **url-lib:**
|
||||||
|
* SC2086: Double quote to prevent globbing and word splitting ([acb18869](https://github.com/dracutdevs/dracut/commit/acb18869e98687a3f8c172d7e7befaa5326cf67a))
|
||||||
|
* SC2046: Quote this to prevent word splitting ([ec50cec3](https://github.com/dracutdevs/dracut/commit/ec50cec3bd9169410df409e077d0487c63c2a627))
|
||||||
|
* improve ca-bundle detection ([e3bb1815](https://github.com/dracutdevs/dracut/commit/e3bb1815bbbff1a7e21b857d2ae32bc0410754d5))
|
||||||
|
* make pre-pivot hook separetely per nfs mount ([2f091b17](https://github.com/dracutdevs/dracut/commit/2f091b17075f81ff490b05d3d566d736fc32f0be))
|
||||||
|
* **usrmount:** do not empty _dev variable ([4afdcba2](https://github.com/dracutdevs/dracut/commit/4afdcba212793f136aea012b30dd7bdb5b641a5a))
|
||||||
|
* **zfcp_rules:**
|
||||||
|
* correct udev zfcp rules parsing ([59252668](https://github.com/dracutdevs/dracut/commit/5925266832042f9d17a3fb7a219b83118c5b16d6))
|
||||||
|
* remove collect based udev rule creators ([d40c49a8](https://github.com/dracutdevs/dracut/commit/d40c49a8dfe203be33af8ace5f0efd07a88856f4))
|
||||||
|
|
||||||
|
#### Features
|
||||||
|
|
||||||
|
* **Makefile:** cargo wrapper for dracut-cpio build ([51d21c6b](https://github.com/dracutdevs/dracut/commit/51d21c6b37b0eb8566d18d665d0197ca4d68101c))
|
||||||
|
* **cpio:**
|
||||||
|
* add newc archive creation utility ([a9c67046](https://github.com/dracutdevs/dracut/commit/a9c67046431ccf5fd4f4c16c890695df388f0d38))
|
||||||
|
* add rust argument parsing library from crosvm ([94fc5026](https://github.com/dracutdevs/dracut/commit/94fc50262f5e6c28d92782dc231fbb6c61855954))
|
||||||
|
* **crypt:**
|
||||||
|
* check if pkcs11 module is needed in hostonly mode ([56f4fb6c](https://github.com/dracutdevs/dracut/commit/56f4fb6cb755327c77c32f8c414a4a0e64fc933c))
|
||||||
|
* check if fido2 module is needed in hostonly mode ([d5fd030c](https://github.com/dracutdevs/dracut/commit/d5fd030cc285730e1a1b9e0e78a1e1dc4daabfe0))
|
||||||
|
* check if tpm2-tss module is needed in hostonly mode ([5d990a00](https://github.com/dracutdevs/dracut/commit/5d990a004b5ae6863f2c9a633b184c07dd73563d))
|
||||||
|
* **dracut.sh:**
|
||||||
|
* add --aggresive-strip option ([67fc670a](https://github.com/dracutdevs/dracut/commit/67fc670a88ab6c97d22c6718082619c0cf850fc3))
|
||||||
|
* add "--enhanced-cpio" option for calling dracut-cpio ([afe4a6db](https://github.com/dracutdevs/dracut/commit/afe4a6dbb7df62982baab8212bba5d90010dfbac))
|
||||||
|
* check if target kernel has zstd support compiled in ([591118c5](https://github.com/dracutdevs/dracut/commit/591118c56da2bfcea060e3b7671bc87b23c0e44a))
|
||||||
|
* **fido2:** introducing the fido2 module ([049973b7](https://github.com/dracutdevs/dracut/commit/049973b708298ea0ce1ac9c869b404f4c718eff3))
|
||||||
|
* **lvm:**
|
||||||
|
* only run lvchange for LV that is seen on devices ([1af46743](https://github.com/dracutdevs/dracut/commit/1af46743195422aaebcde5c508a5dd479eff51ea))
|
||||||
|
* use generated filter when none is set ([7ffc5e38](https://github.com/dracutdevs/dracut/commit/7ffc5e388bcce20785803825bdd260c3c854b34f))
|
||||||
|
* update lvm command options ([c0a54f29](https://github.com/dracutdevs/dracut/commit/c0a54f2993b1d3c2101202c274a41f925445d54b))
|
||||||
|
* **pcsc:** introducing the pcsc module ([dcaff88a](https://github.com/dracutdevs/dracut/commit/dcaff88ac942042e3db0a2bbfc1c995ec0735f38))
|
||||||
|
* **pkcs11:**
|
||||||
|
* include the module in the spec file ([c5907f82](https://github.com/dracutdevs/dracut/commit/c5907f82d835d72e4dd7c473a86e872fce37d61e))
|
||||||
|
* introducing the pkcs11 module ([83ea8cf0](https://github.com/dracutdevs/dracut/commit/83ea8cf001a49356cf7814b3c08bdd1c4b4f2763))
|
||||||
|
* **spec:** add systemd-integritysetup module ([fe8df024](https://github.com/dracutdevs/dracut/commit/fe8df0240a24b9d2d60a5b0b998f82b251ede849))
|
||||||
|
* **squash:** install umount util ([563f5434](https://github.com/dracutdevs/dracut/commit/563f543424c66bf38e6cbd3f489655d45ad9b5c5))
|
||||||
|
* **systemd:** enable support for systemd compiled with ASAN ([d502d2a8](https://github.com/dracutdevs/dracut/commit/d502d2a816ba8f8329b3d8616bd2a7e82a0ad21f))
|
||||||
|
* **systemd-integritysetup:** introducing the systemd-integritysetup module ([33cf47a6](https://github.com/dracutdevs/dracut/commit/33cf47a60870cc290bd5b59c9cf87c54ad37051f))
|
||||||
|
|
||||||
|
#### Contributors
|
||||||
|
|
||||||
|
- Antonio Alvarez Feijoo <antonio.feijoo@suse.com>
|
||||||
|
- David Disseldorp <ddiss@suse.de>
|
||||||
|
- Martin Wilck <mwilck@suse.de>
|
||||||
|
- Jóhann B. Guðmundsson <johannbg@gmail.com>
|
||||||
|
- Shreenidhi Shedi <sshedi@vmware.com>
|
||||||
|
- David Teigland <teigland@redhat.com>
|
||||||
|
- Beniamino Galvani <bgalvani@redhat.com>
|
||||||
|
- Thomas Blume <thomas.blume@suse.com>
|
||||||
|
- Kairui Song <kasong@redhat.com>
|
||||||
|
- Laszlo Gombos <laszlo.gombos@gmail.com>
|
||||||
|
- Renaud Métrich <rmetrich@redhat.com>
|
||||||
|
- Dusty Mabe <dusty@dustymabe.com>
|
||||||
|
- Masahiro Matsuya <mmatsuya@redhat.com>
|
||||||
|
- Alexander Wenzel <alexander.wenzel@qbeyond.de>
|
||||||
|
- Andre Russ <andre.russ@sap.com>
|
||||||
|
- Cornelius Hoffmann <coding@hoffmn.de>
|
||||||
|
- David Tardon <dtardon@redhat.com>
|
||||||
|
- Frantisek Sumsal <frantisek@sumsal.cz>
|
||||||
|
- Harald Hoyer <harald@profian.com>
|
||||||
|
- José María Fernández <josemariafg@gmail.com>
|
||||||
|
- Kairui Song <kasong@tencent.com>
|
||||||
|
- Peter Robinson <pbrobinson@fedoraproject.org>
|
||||||
|
- Pingfan Liu <piliu@redhat.com>
|
||||||
|
- Tony Asleson <tasleson@redhat.com>
|
||||||
|
- Zoltán Böszörményi <zboszor@gmail.com>
|
||||||
|
- Adrien Thierry <athierry@redhat.com>
|
||||||
|
- Alexander Tsoy <alexander@tsoy.me>
|
||||||
|
- Andreas Schwab <schwab@suse.de>
|
||||||
|
- Andrey Sokolov <keremet@altlinux.org>
|
||||||
|
- Brandon Sloane <btsloane@verizon.net>
|
||||||
|
- Charles Rose <charles.rose@dell.com>
|
||||||
|
- Coiby Xu <coxu@redhat.com>
|
||||||
|
- Dan Horák <dhorak@redhat.com>
|
||||||
|
- Dirk Müller <dirk@dmllr.de>
|
||||||
|
- Glenn Morris <rgm@stanford.edu>
|
||||||
|
- Hans de Goede <hdegoede@redhat.com>
|
||||||
|
- Hari Bathini <hbathini@linux.ibm.com>
|
||||||
|
- Henrik Gombos <henrik99999@gmail.com>
|
||||||
|
- Jonathan Lebon <jonathan@jlebon.com>
|
||||||
|
- LinkTed <link.ted@mailbox.org>
|
||||||
|
- Lubomir Rintel <lkundrak@v3.sk>
|
||||||
|
- Luca BRUNO <luca.bruno@coreos.com>
|
||||||
|
- Lukas Nykryn <lnykryn@redhat.com>
|
||||||
|
- Matthias Berndt <matthias_berndt@gmx.de>
|
||||||
|
- Mike Gilbert <floppym@gentoo.org>
|
||||||
|
- Pavel Valena <pvalena@redhat.com>
|
||||||
|
- Stefan Berger <stefanb@linux.ibm.com>
|
||||||
|
- Thomas Haller <thaller@redhat.com>
|
||||||
|
- Tomasz Paweł Gajc <tpgxyz@gmail.com>
|
||||||
|
- Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
|
||||||
|
- joshuacov1 <joshuacov@gmail.com>
|
||||||
|
- lapseofreason <lapseofreason0@gmail.com>
|
||||||
|
|
||||||
|
dracut-055
|
||||||
|
==========
|
||||||
|
|
||||||
|
#### Bug Fixes
|
||||||
|
|
||||||
|
* **base:**
|
||||||
|
* add missing `str_replace` to `dracut-dev-lib.sh` ([148e420b](https://github.com/dracutdevs/dracut/commit/148e420be5b5809aa8d5033f47477573bbbf3e60))
|
||||||
|
* split out `dracut-dev-lib.sh` ([c08bc810](https://github.com/dracutdevs/dracut/commit/c08bc8109d4c43beacfa4bcdc20a356102da6d02))
|
||||||
|
* **bash:** minor cleanups ([9355cb8e](https://github.com/dracutdevs/dracut/commit/9355cb8ea5024533210067373657dc337d63ecb9))
|
||||||
|
* **dash:** minor cleanups ([f4ea5f87](https://github.com/dracutdevs/dracut/commit/f4ea5f8734c4636f7d6db78da76e9525beb9a0ac))
|
||||||
|
* **dracut:** pipe hardlink output to `dinfo` ([0a6007bf](https://github.com/dracutdevs/dracut/commit/0a6007bf4f472565d2c0c205a56edea7ba3e3bc3))
|
||||||
|
* **dracut-functions:** get_maj_min without get_maj_min_cache_file set ([a277a5fc](https://github.com/dracutdevs/dracut/commit/a277a5fc7acc0a9e8d853f09671495f9d27645c1))
|
||||||
|
* **dracut-util:** print error message with trailing newline ([b9b6f0ee](https://github.com/dracutdevs/dracut/commit/b9b6f0ee5b859a562e46a8c4e0dee0261fabf74d))
|
||||||
|
* **fs-lib:** install fsck utilities ([12beeac7](https://github.com/dracutdevs/dracut/commit/12beeac741e4429146a674ef4ea9aa0bac10364b))
|
||||||
|
* **install:**
|
||||||
|
* configure logging earlier ([5eb24aa2](https://github.com/dracutdevs/dracut/commit/5eb24aa21d3ee639f869c2e363b3fb0b98be552b))
|
||||||
|
* sane default --kerneldir ([c1ab3613](https://github.com/dracutdevs/dracut/commit/c1ab36139d416e580e768c29f2addf7ccbc2c612), closes [#1505](https://github.com/dracutdevs/dracut/issues/1505))
|
||||||
|
* **integrity:** require ALLOW_METADATA_WRITES to come from EVM config file ([b12d91c4](https://github.com/dracutdevs/dracut/commit/b12d91c431220488fecf7b4be82427e3560560cb))
|
||||||
|
* **mksh:** minor cleanups ([6c673298](https://github.com/dracutdevs/dracut/commit/6c673298f36990665467564e6114c9ca2530f584))
|
||||||
|
* **squash:** don't mount the mount points if already mounted ([636d6df3](https://github.com/dracutdevs/dracut/commit/636d6df3134dde1dac72241937724bc59deb9303))
|
||||||
|
* **warpclock:** minor cleanups ([7d205598](https://github.com/dracutdevs/dracut/commit/7d205598c6a500b58b4d328e824d0446276f7ced))
|
||||||
|
|
||||||
|
#### Features
|
||||||
|
|
||||||
|
* **dracut.sh:** detect running in a container ([7275c6f6](https://github.com/dracutdevs/dracut/commit/7275c6f6a0f6808cd939ea5bdf1244c7bd13ba44))
|
||||||
|
* **install:** add default value for --firmwaredirs ([4cb086fa](https://github.com/dracutdevs/dracut/commit/4cb086fa2995799b95c0b25bc9a0cf72ba3868ea))
|
||||||
|
|
||||||
|
#### Contributors
|
||||||
|
|
||||||
|
- Harald Hoyer <harald@redhat.com>
|
||||||
|
- Jóhann B. Guðmundsson <johannbg@gmail.com>
|
||||||
|
- Marcos Mello <marcosfrm@gmail.com>
|
||||||
|
- Kairui Song <kasong@redhat.com>
|
||||||
|
- Lars Wendler <polynomial-c@gentoo.org>
|
||||||
|
- Stefan Berger <stefanb@linux.ibm.com>
|
||||||
|
- Tomasz Paweł Gajc <tpgxyz@gmail.com>
|
||||||
|
|
||||||
dracut-054
|
dracut-054
|
||||||
==========
|
==========
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ echo \#buildapi-variable-no-builddir > /dev/null
|
||||||
prefix=/usr
|
prefix=/usr
|
||||||
|
|
||||||
enable_documentation=yes
|
enable_documentation=yes
|
||||||
|
enable_dracut_cpio=no
|
||||||
|
|
||||||
CC="${CC:-cc}"
|
CC="${CC:-cc}"
|
||||||
PKG_CONFIG="${PKG_CONFIG:-pkg-config}"
|
PKG_CONFIG="${PKG_CONFIG:-pkg-config}"
|
||||||
|
@ -48,6 +49,7 @@ while (($# > 0)); do
|
||||||
--infodir) read_arg infodir "$@" || shift ;;
|
--infodir) read_arg infodir "$@" || shift ;;
|
||||||
--systemdsystemunitdir) read_arg systemdsystemunitdir "$@" || shift ;;
|
--systemdsystemunitdir) read_arg systemdsystemunitdir "$@" || shift ;;
|
||||||
--bashcompletiondir) read_arg bashcompletiondir "$@" || shift ;;
|
--bashcompletiondir) read_arg bashcompletiondir "$@" || shift ;;
|
||||||
|
--enable-dracut-cpio) enable_dracut_cpio=yes ;;
|
||||||
*) echo "Ignoring unknown option '$1'" ;;
|
*) echo "Ignoring unknown option '$1'" ;;
|
||||||
esac
|
esac
|
||||||
shift
|
shift
|
||||||
|
@ -102,6 +104,15 @@ if test $found = no; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test "$enable_dracut_cpio" = "yes"; then
|
||||||
|
cargo --version > /dev/null
|
||||||
|
ret=$?
|
||||||
|
if test $ret -ne 0; then
|
||||||
|
echo "dracut couldn't find cargo for dracut-cpio build"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
cat > Makefile.inc.$$ << EOF
|
cat > Makefile.inc.$$ << EOF
|
||||||
prefix ?= ${prefix}
|
prefix ?= ${prefix}
|
||||||
libdir ?= ${libdir:-${prefix}/lib}
|
libdir ?= ${libdir:-${prefix}/lib}
|
||||||
|
@ -110,6 +121,7 @@ sysconfdir ?= ${sysconfdir:-${prefix}/etc}
|
||||||
sbindir ?= ${sbindir:-${prefix}/sbin}
|
sbindir ?= ${sbindir:-${prefix}/sbin}
|
||||||
mandir ?= ${mandir:-${prefix}/share/man}
|
mandir ?= ${mandir:-${prefix}/share/man}
|
||||||
enable_documentation ?= ${enable_documentation:-yes}
|
enable_documentation ?= ${enable_documentation:-yes}
|
||||||
|
enable_dracut_cpio ?= ${enable_dracut_cpio}
|
||||||
bindir ?= ${bindir:-${prefix}/bin}
|
bindir ?= ${bindir:-${prefix}/bin}
|
||||||
KMOD_CFLAGS ?= $(${PKG_CONFIG} --cflags " libkmod >= 23 ")
|
KMOD_CFLAGS ?= $(${PKG_CONFIG} --cflags " libkmod >= 23 ")
|
||||||
KMOD_LIBS ?= $(${PKG_CONFIG} --libs " libkmod >= 23 ")
|
KMOD_LIBS ?= $(${PKG_CONFIG} --libs " libkmod >= 23 ")
|
||||||
|
|
|
@ -40,7 +40,7 @@ This Code of Conduct applies within all community spaces, and also applies when
|
||||||
|
|
||||||
## Enforcement
|
## Enforcement
|
||||||
|
|
||||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the project maintainer responsible for enforcement Harald Hoyer <harald@redhat.com>.
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the project maintainer responsible for enforcement Harald Hoyer <harald@profian.com>.
|
||||||
All complaints will be reviewed and investigated promptly and fairly and will result in a response that is deemed necessary and appropriate to the circumstances.
|
All complaints will be reviewed and investigated promptly and fairly and will result in a response that is deemed necessary and appropriate to the circumstances.
|
||||||
Project maintainers are obligated to respect the privacy and security of the reporter of any incident.
|
Project maintainers are obligated to respect the privacy and security of the reporter of any incident.
|
||||||
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
|
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
Security is very important to us. If you discover any issue regarding security, we'd appreciate a non-public disclosure of
|
Security is very important to us. If you discover any issue regarding security, we'd appreciate a non-public disclosure of
|
||||||
the information, so please disclose the information responsibly by sending an email to Harald Hoyer harald@redhat.com and not by creating a GitHub issue.
|
the information, so please disclose the information responsibly by sending an email to Harald Hoyer <harald@profian.com> and not by creating a GitHub issue.
|
||||||
We will respond swiftly to fix verifiable security issues with the disclosure being coordinated with distributions and relevant security teams.
|
We will respond swiftly to fix verifiable security issues with the disclosure being coordinated with distributions and relevant security teams.
|
||||||
|
|
|
@ -234,13 +234,20 @@ get_fs_env() {
|
||||||
# 8:2
|
# 8:2
|
||||||
get_maj_min() {
|
get_maj_min() {
|
||||||
local _majmin
|
local _majmin
|
||||||
out="$(grep -m1 -oP "^$1 \K\S+$" "${get_maj_min_cache_file:?}")"
|
local _out
|
||||||
if [ -z "$out" ]; then
|
|
||||||
_majmin="$(stat -L -c '%t:%T' "$1" 2> /dev/null)"
|
if [[ $get_maj_min_cache_file ]]; then
|
||||||
out="$(printf "%s" "$((0x${_majmin%:*})):$((0x${_majmin#*:}))")"
|
_out="$(grep -m1 -oP "^$1 \K\S+$" "$get_maj_min_cache_file")"
|
||||||
echo "$1 $out" >> "${get_maj_min_cache_file:?}"
|
|
||||||
fi
|
fi
|
||||||
echo -n "$out"
|
|
||||||
|
if ! [[ "$_out" ]]; then
|
||||||
|
_majmin="$(stat -L -c '%t:%T' "$1" 2> /dev/null)"
|
||||||
|
_out="$(printf "%s" "$((0x${_majmin%:*})):$((0x${_majmin#*:}))")"
|
||||||
|
if [[ $get_maj_min_cache_file ]]; then
|
||||||
|
echo "$1 $_out" >> "$get_maj_min_cache_file"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo -n "$_out"
|
||||||
}
|
}
|
||||||
|
|
||||||
# get_devpath_block <device>
|
# get_devpath_block <device>
|
||||||
|
@ -610,6 +617,27 @@ for_each_host_dev_and_slaves() {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# /sys/dev/block/major:minor is symbol link to real hardware device
|
||||||
|
# go downstream $(realpath /sys/dev/block/major:minor) to detect driver
|
||||||
|
get_blockdev_drv_through_sys() {
|
||||||
|
local _block_mods=""
|
||||||
|
local _path
|
||||||
|
|
||||||
|
_path=$(realpath "$1")
|
||||||
|
while true; do
|
||||||
|
if [[ -L "$_path"/driver/module ]]; then
|
||||||
|
_mod=$(realpath "$_path"/driver/module)
|
||||||
|
_mod=$(basename "$_mod")
|
||||||
|
_block_mods="$_block_mods $_mod"
|
||||||
|
fi
|
||||||
|
_path=$(dirname "$_path")
|
||||||
|
if [[ $_path == '/sys/devices' ]] || [[ $_path == '/' ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "$_block_mods"
|
||||||
|
}
|
||||||
|
|
||||||
# ugly workaround for the lvm design
|
# ugly workaround for the lvm design
|
||||||
# There is no volume group device,
|
# There is no volume group device,
|
||||||
# so, there are no slave devices for volume groups.
|
# so, there are no slave devices for volume groups.
|
||||||
|
@ -755,13 +783,29 @@ btrfs_devs() {
|
||||||
iface_for_remote_addr() {
|
iface_for_remote_addr() {
|
||||||
# shellcheck disable=SC2046
|
# shellcheck disable=SC2046
|
||||||
set -- $(ip -o route get to "$1")
|
set -- $(ip -o route get to "$1")
|
||||||
echo "$3"
|
while [ $# -gt 0 ]; do
|
||||||
|
case $1 in
|
||||||
|
dev)
|
||||||
|
echo "$2"
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
local_addr_for_remote_addr() {
|
local_addr_for_remote_addr() {
|
||||||
# shellcheck disable=SC2046
|
# shellcheck disable=SC2046
|
||||||
set -- $(ip -o route get to "$1")
|
set -- $(ip -o route get to "$1")
|
||||||
echo "$5"
|
while [ $# -gt 0 ]; do
|
||||||
|
case $1 in
|
||||||
|
src)
|
||||||
|
echo "$2"
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
peer_for_addr() {
|
peer_for_addr() {
|
||||||
|
@ -917,5 +961,29 @@ block_is_netdevice() {
|
||||||
|
|
||||||
# get the corresponding kernel modules of a /sys/class/*/* or/dev/* device
|
# get the corresponding kernel modules of a /sys/class/*/* or/dev/* device
|
||||||
get_dev_module() {
|
get_dev_module() {
|
||||||
udevadm info -a "$1" | sed -n 's/\s*DRIVERS=="\(\S\+\)"/\1/p'
|
local dev_attr_walk
|
||||||
|
local dev_drivers
|
||||||
|
dev_attr_walk=$(udevadm info -a "$1")
|
||||||
|
dev_drivers=$(echo "$dev_attr_walk" | sed -n 's/\s*DRIVERS=="\(\S\+\)"/\1/p')
|
||||||
|
# if no kernel modules found and device is in a virtual subsystem, follow symlinks
|
||||||
|
if [[ -z $dev_drivers && $(udevadm info -q path "$1") == "/devices/virtual"* ]]; then
|
||||||
|
local dev_vkernel
|
||||||
|
local dev_vsubsystem
|
||||||
|
local dev_vpath
|
||||||
|
dev_vkernel=$(echo "$dev_attr_walk" | sed -n 's/\s*KERNELS=="\(\S\+\)"/\1/p' | tail -1)
|
||||||
|
dev_vsubsystem=$(echo "$dev_attr_walk" | sed -n 's/\s*SUBSYSTEMS=="\(\S\+\)"/\1/p' | tail -1)
|
||||||
|
dev_vpath="/sys/devices/virtual/$dev_vsubsystem/$dev_vkernel"
|
||||||
|
if [[ -n $dev_vkernel && -n $dev_vsubsystem && -d $dev_vpath ]]; then
|
||||||
|
local dev_links
|
||||||
|
local dev_link
|
||||||
|
dev_links=$(find "$dev_vpath" -maxdepth 1 -type l ! -name "subsystem" -exec readlink {} \;)
|
||||||
|
for dev_link in $dev_links; do
|
||||||
|
[[ -n $dev_drivers && ${dev_drivers: -1} != $'\n' ]] && dev_drivers+=$'\n'
|
||||||
|
dev_drivers+=$(udevadm info -a "$dev_vpath/$dev_link" \
|
||||||
|
| sed -n 's/\s*DRIVERS=="\(\S\+\)"/\1/p' \
|
||||||
|
| grep -v -e pcieport)
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo "$dev_drivers"
|
||||||
}
|
}
|
||||||
|
|
|
@ -423,7 +423,7 @@ inst_rule_programs() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# attempt to install any programs specified in a udev rule
|
# attempt to create any groups and users specified in a udev rule
|
||||||
inst_rule_group_owner() {
|
inst_rule_group_owner() {
|
||||||
local i
|
local i
|
||||||
|
|
||||||
|
|
|
@ -6,28 +6,44 @@ set -e
|
||||||
[ -e /run/initramfs/bin/sh ] && exit 0
|
[ -e /run/initramfs/bin/sh ] && exit 0
|
||||||
[ -e /run/initramfs/.need_shutdown ] || exit 0
|
[ -e /run/initramfs/.need_shutdown ] || exit 0
|
||||||
|
|
||||||
|
# SIGTERM signal is received upon forced shutdown: ignore the signal
|
||||||
|
# We want to remain alive to be able to trap unpacking errors to avoid
|
||||||
|
# switching root to an incompletely unpacked initramfs
|
||||||
|
trap 'echo "Received SIGTERM signal, ignoring!" >&2' TERM
|
||||||
|
|
||||||
KERNEL_VERSION="$(uname -r)"
|
KERNEL_VERSION="$(uname -r)"
|
||||||
|
|
||||||
[[ $dracutbasedir ]] || dracutbasedir=/usr/lib/dracut
|
[[ $dracutbasedir ]] || dracutbasedir=/usr/lib/dracut
|
||||||
SKIP="$dracutbasedir/skipcpio"
|
SKIP="$dracutbasedir/skipcpio"
|
||||||
[[ -x $SKIP ]] || SKIP="cat"
|
[[ -x $SKIP ]] || SKIP="cat"
|
||||||
|
|
||||||
[[ -f /etc/machine-id ]] && read -r MACHINE_ID < /etc/machine-id
|
if [[ -d /efi/Default ]] || [[ -d /boot/Default ]] || [[ -d /boot/efi/Default ]]; then
|
||||||
|
MACHINE_ID="Default"
|
||||||
|
elif [[ -f /etc/machine-id ]]; then
|
||||||
|
read -r MACHINE_ID < /etc/machine-id
|
||||||
|
else
|
||||||
|
MACHINE_ID="Default"
|
||||||
|
fi
|
||||||
|
|
||||||
mount -o ro /boot &> /dev/null || true
|
mount -o ro /boot &> /dev/null || true
|
||||||
|
|
||||||
if [[ -d /efi/loader/entries || -L /efi/loader/entries ]] \
|
if [[ -d /efi/loader/entries ]] || [[ -L /efi/loader/entries ]] \
|
||||||
&& [[ $MACHINE_ID ]] \
|
|| [[ -d /efi/$MACHINE_ID ]] || [[ -L /efi/$MACHINE_ID ]]; then
|
||||||
&& [[ -d /efi/${MACHINE_ID} || -L /efi/${MACHINE_ID} ]]; then
|
|
||||||
IMG="/efi/${MACHINE_ID}/${KERNEL_VERSION}/initrd"
|
IMG="/efi/${MACHINE_ID}/${KERNEL_VERSION}/initrd"
|
||||||
elif [[ -d /boot/loader/entries || -L /boot/loader/entries ]] \
|
elif [[ -d /boot/loader/entries ]] || [[ -L /boot/loader/entries ]] \
|
||||||
&& [[ $MACHINE_ID ]] \
|
|| [[ -d /boot/$MACHINE_ID ]] || [[ -L /boot/$MACHINE_ID ]]; then
|
||||||
&& [[ -d /boot/${MACHINE_ID} || -L /boot/${MACHINE_ID} ]]; then
|
|
||||||
IMG="/boot/${MACHINE_ID}/${KERNEL_VERSION}/initrd"
|
IMG="/boot/${MACHINE_ID}/${KERNEL_VERSION}/initrd"
|
||||||
elif [[ -f /boot/initramfs-${KERNEL_VERSION}.img ]]; then
|
elif [[ -d /boot/efi/loader/entries ]] || [[ -L /boot/efi/loader/entries ]] \
|
||||||
IMG="/boot/initramfs-${KERNEL_VERSION}.img"
|
|| [[ -d /boot/efi/$MACHINE_ID ]] || [[ -L /boot/efi/$MACHINE_ID ]]; then
|
||||||
|
IMG="/boot/efi/$MACHINE_ID/$KERNEL_VERSION/initrd"
|
||||||
elif [[ -f /lib/modules/${KERNEL_VERSION}/initrd ]]; then
|
elif [[ -f /lib/modules/${KERNEL_VERSION}/initrd ]]; then
|
||||||
IMG="/lib/modules/${KERNEL_VERSION}/initrd"
|
IMG="/lib/modules/${KERNEL_VERSION}/initrd"
|
||||||
|
elif [[ -f /boot/initramfs-${KERNEL_VERSION}.img ]]; then
|
||||||
|
IMG="/boot/initramfs-${KERNEL_VERSION}.img"
|
||||||
|
elif mountpoint -q /efi; then
|
||||||
|
IMG="/efi/$MACHINE_ID/$KERNEL_VERSION/initrd"
|
||||||
|
elif mountpoint -q /boot/efi; then
|
||||||
|
IMG="/boot/efi/$MACHINE_ID/$KERNEL_VERSION/initrd"
|
||||||
else
|
else
|
||||||
echo "No initramfs image found to restore!"
|
echo "No initramfs image found to restore!"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -35,13 +51,13 @@ fi
|
||||||
|
|
||||||
cd /run/initramfs
|
cd /run/initramfs
|
||||||
|
|
||||||
if $SKIP "$IMG" | zcat | cpio -id --no-absolute-filenames --quiet > /dev/null; then
|
if $SKIP "$IMG" | cpio -id --no-absolute-filenames --quiet > /dev/null \
|
||||||
rm -f -- .need_shutdown
|
|| $SKIP "$IMG" | zcat | cpio -id --no-absolute-filenames --quiet > /dev/null \
|
||||||
elif $SKIP "$IMG" | xzcat | cpio -id --no-absolute-filenames --quiet > /dev/null; then
|
|| $SKIP "$IMG" | bzcat | cpio -id --no-absolute-filenames --quiet > /dev/null \
|
||||||
rm -f -- .need_shutdown
|
|| $SKIP "$IMG" | xzcat | cpio -id --no-absolute-filenames --quiet > /dev/null \
|
||||||
elif $SKIP "$IMG" | lz4 -d -c | cpio -id --no-absolute-filenames --quiet > /dev/null; then
|
|| $SKIP "$IMG" | lz4 -d -c | cpio -id --no-absolute-filenames --quiet > /dev/null \
|
||||||
rm -f -- .need_shutdown
|
|| $SKIP "$IMG" | lzop -d -c | cpio -id --no-absolute-filenames --quiet > /dev/null \
|
||||||
elif $SKIP "$IMG" | zstd -d -c | cpio -id --no-absolute-filenames --quiet > /dev/null; then
|
|| $SKIP "$IMG" | zstd -d -c | cpio -id --no-absolute-filenames --quiet > /dev/null; then
|
||||||
rm -f -- .need_shutdown
|
rm -f -- .need_shutdown
|
||||||
else
|
else
|
||||||
# something failed, so we clean up
|
# something failed, so we clean up
|
||||||
|
|
|
@ -22,7 +22,7 @@ dbusconfdir=/etc/dbus-1
|
||||||
dbusinterfacesconfdir=/etc/dbus-1/interfaces
|
dbusinterfacesconfdir=/etc/dbus-1/interfaces
|
||||||
dbusservicesconfdir=/etc/dbus-1/services
|
dbusservicesconfdir=/etc/dbus-1/services
|
||||||
dbussessionconfdir=/etc/dbus-1/session.d
|
dbussessionconfdir=/etc/dbus-1/session.d
|
||||||
dbussystem=confdir/etc/dbus-1/system.d
|
dbussystemconfdir=/etc/dbus-1/system.d
|
||||||
dbussystemservicesconfdir=/etc/dbus-1/system-services
|
dbussystemservicesconfdir=/etc/dbus-1/system-services
|
||||||
sysctld=/usr/lib/sysctl.d
|
sysctld=/usr/lib/sysctl.d
|
||||||
sysctlconfdir=/etc/sysctl.d
|
sysctlconfdir=/etc/sysctl.d
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
hostonly="yes"
|
hostonly="yes"
|
||||||
hostonly_cmdline="yes"
|
hostonly_cmdline="yes"
|
||||||
|
|
||||||
compress="xz -0 --check=crc32 --memlimit-compress=50%"
|
compress="zstd"
|
||||||
|
|
||||||
i18n_vars="/etc/sysconfig/language:RC_LANG-LANG,RC_LC_ALL-LC_ALL /etc/sysconfig/console:CONSOLE_UNICODEMAP-FONT_UNIMAP,CONSOLE_FONT-FONT,CONSOLE_SCREENMAP-FONT_MAP /etc/sysconfig/keyboard:KEYTABLE-KEYMAP"
|
i18n_vars="/etc/sysconfig/language:RC_LANG-LANG,RC_LC_ALL-LC_ALL /etc/sysconfig/console:CONSOLE_UNICODEMAP-FONT_UNIMAP,CONSOLE_FONT-FONT,CONSOLE_SCREENMAP-FONT_MAP /etc/sysconfig/keyboard:KEYTABLE-KEYMAP"
|
||||||
omit_drivers+=" i2o_scsi "
|
omit_drivers+=" i2o_scsi "
|
||||||
|
|
147
dracut.sh
147
dracut.sh
|
@ -111,6 +111,8 @@ Creates initial ramdisk images for preloading modules
|
||||||
--no-early-microcode Do not combine early microcode with ramdisk
|
--no-early-microcode Do not combine early microcode with ramdisk
|
||||||
--kernel-cmdline [PARAMETERS] Specify default kernel command line parameters
|
--kernel-cmdline [PARAMETERS] Specify default kernel command line parameters
|
||||||
--strip Strip binaries in the initramfs
|
--strip Strip binaries in the initramfs
|
||||||
|
--aggresive-strip Strip more than just debug symbol and sections,
|
||||||
|
for a smaller initramfs build.
|
||||||
--nostrip Do not strip binaries in the initramfs
|
--nostrip Do not strip binaries in the initramfs
|
||||||
--hardlink Hardlink files in the initramfs
|
--hardlink Hardlink files in the initramfs
|
||||||
--nohardlink Do not hardlink files in the initramfs
|
--nohardlink Do not hardlink files in the initramfs
|
||||||
|
@ -226,6 +228,7 @@ Creates initial ramdisk images for preloading modules
|
||||||
otherwise you will not be able to boot.
|
otherwise you will not be able to boot.
|
||||||
--no-compress Do not compress the generated initramfs. This will
|
--no-compress Do not compress the generated initramfs. This will
|
||||||
override any other compression options.
|
override any other compression options.
|
||||||
|
--enhanced-cpio Attempt to reflink cpio file data using dracut-cpio.
|
||||||
--list-modules List all available dracut modules.
|
--list-modules List all available dracut modules.
|
||||||
-M, --show-modules Print included module's name to standard output during
|
-M, --show-modules Print included module's name to standard output during
|
||||||
build.
|
build.
|
||||||
|
@ -378,6 +381,7 @@ rearrange_params() {
|
||||||
--long print-cmdline \
|
--long print-cmdline \
|
||||||
--long kernel-cmdline: \
|
--long kernel-cmdline: \
|
||||||
--long strip \
|
--long strip \
|
||||||
|
--long aggresive-strip \
|
||||||
--long nostrip \
|
--long nostrip \
|
||||||
--long hardlink \
|
--long hardlink \
|
||||||
--long nohardlink \
|
--long nohardlink \
|
||||||
|
@ -412,6 +416,7 @@ rearrange_params() {
|
||||||
--long zstd \
|
--long zstd \
|
||||||
--long no-compress \
|
--long no-compress \
|
||||||
--long gzip \
|
--long gzip \
|
||||||
|
--long enhanced-cpio \
|
||||||
--long list-modules \
|
--long list-modules \
|
||||||
--long show-modules \
|
--long show-modules \
|
||||||
--long keep \
|
--long keep \
|
||||||
|
@ -695,6 +700,7 @@ while :; do
|
||||||
early_microcode_l="no"
|
early_microcode_l="no"
|
||||||
;;
|
;;
|
||||||
--strip) do_strip_l="yes" ;;
|
--strip) do_strip_l="yes" ;;
|
||||||
|
--aggresive-strip) aggresive_strip_l="yes" ;;
|
||||||
--nostrip) do_strip_l="no" ;;
|
--nostrip) do_strip_l="no" ;;
|
||||||
--hardlink) do_hardlink_l="yes" ;;
|
--hardlink) do_hardlink_l="yes" ;;
|
||||||
--nohardlink) do_hardlink_l="no" ;;
|
--nohardlink) do_hardlink_l="no" ;;
|
||||||
|
@ -770,6 +776,7 @@ while :; do
|
||||||
--zstd) compress_l="zstd" ;;
|
--zstd) compress_l="zstd" ;;
|
||||||
--no-compress) _no_compress_l="cat" ;;
|
--no-compress) _no_compress_l="cat" ;;
|
||||||
--gzip) compress_l="gzip" ;;
|
--gzip) compress_l="gzip" ;;
|
||||||
|
--enhanced-cpio) enhanced_cpio_l="yes" ;;
|
||||||
--list-modules) do_list="yes" ;;
|
--list-modules) do_list="yes" ;;
|
||||||
-M | --show-modules)
|
-M | --show-modules)
|
||||||
show_modules_l="yes"
|
show_modules_l="yes"
|
||||||
|
@ -875,7 +882,7 @@ unset GREP_OPTIONS
|
||||||
export DRACUT_LOG_LEVEL=warning
|
export DRACUT_LOG_LEVEL=warning
|
||||||
[[ $debug ]] && {
|
[[ $debug ]] && {
|
||||||
export DRACUT_LOG_LEVEL=debug
|
export DRACUT_LOG_LEVEL=debug
|
||||||
export PS4='${BASH_SOURCE}@${LINENO}(${FUNCNAME[0]}): '
|
export PS4='${BASH_SOURCE}@${LINENO}(${FUNCNAME[0]-}): '
|
||||||
set -x
|
set -x
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -888,20 +895,26 @@ export DRACUT_LOG_LEVEL=warning
|
||||||
[[ $dracutbasedir ]] || dracutbasedir="$dracutsysrootdir"/usr/lib/dracut
|
[[ $dracutbasedir ]] || dracutbasedir="$dracutsysrootdir"/usr/lib/dracut
|
||||||
|
|
||||||
# if we were not passed a config file, try the default one
|
# if we were not passed a config file, try the default one
|
||||||
if [[ ! -f $conffile ]]; then
|
if [[ -z $conffile ]]; then
|
||||||
if [[ $allowlocal ]]; then
|
if [[ $allowlocal ]]; then
|
||||||
conffile="$dracutbasedir/dracut.conf"
|
conffile="$dracutbasedir/dracut.conf"
|
||||||
else
|
else
|
||||||
conffile="$dracutsysrootdir/etc/dracut.conf"
|
conffile="$dracutsysrootdir/etc/dracut.conf"
|
||||||
fi
|
fi
|
||||||
|
elif [[ ! -f $conffile ]]; then
|
||||||
|
printf "%s\n" "dracut: Configuration file '$conffile' not found." >&2
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ ! -d $confdir ]]; then
|
if [[ -z $confdir ]]; then
|
||||||
if [[ $allowlocal ]]; then
|
if [[ $allowlocal ]]; then
|
||||||
confdir="$dracutbasedir/dracut.conf.d"
|
confdir="$dracutbasedir/dracut.conf.d"
|
||||||
else
|
else
|
||||||
confdir="$dracutsysrootdir/etc/dracut.conf.d"
|
confdir="$dracutsysrootdir/etc/dracut.conf.d"
|
||||||
fi
|
fi
|
||||||
|
elif [[ ! -d $confdir ]]; then
|
||||||
|
printf "%s\n" "dracut: Configuration directory '$confdir' not found." >&2
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# source our config file
|
# source our config file
|
||||||
|
@ -960,6 +973,7 @@ stdloglvl=$((stdloglvl + verbosity_mod_l))
|
||||||
[[ $drivers_dir_l ]] && drivers_dir=$drivers_dir_l
|
[[ $drivers_dir_l ]] && drivers_dir=$drivers_dir_l
|
||||||
[[ $do_strip_l ]] && do_strip=$do_strip_l
|
[[ $do_strip_l ]] && do_strip=$do_strip_l
|
||||||
[[ $do_strip ]] || do_strip=yes
|
[[ $do_strip ]] || do_strip=yes
|
||||||
|
[[ $aggresive_strip_l ]] && aggresive_strip=$aggresive_strip_l
|
||||||
[[ $do_hardlink_l ]] && do_hardlink=$do_hardlink_l
|
[[ $do_hardlink_l ]] && do_hardlink=$do_hardlink_l
|
||||||
[[ $do_hardlink ]] || do_hardlink=yes
|
[[ $do_hardlink ]] || do_hardlink=yes
|
||||||
[[ $prefix_l ]] && prefix=$prefix_l
|
[[ $prefix_l ]] && prefix=$prefix_l
|
||||||
|
@ -982,6 +996,7 @@ stdloglvl=$((stdloglvl + verbosity_mod_l))
|
||||||
[[ $tmpdir ]] || tmpdir="$dracutsysrootdir"/var/tmp
|
[[ $tmpdir ]] || tmpdir="$dracutsysrootdir"/var/tmp
|
||||||
[[ $INITRD_COMPRESS ]] && compress=$INITRD_COMPRESS
|
[[ $INITRD_COMPRESS ]] && compress=$INITRD_COMPRESS
|
||||||
[[ $compress_l ]] && compress=$compress_l
|
[[ $compress_l ]] && compress=$compress_l
|
||||||
|
[[ $enhanced_cpio_l ]] && enhanced_cpio=$enhanced_cpio_l
|
||||||
[[ $show_modules_l ]] && show_modules=$show_modules_l
|
[[ $show_modules_l ]] && show_modules=$show_modules_l
|
||||||
[[ $nofscks_l ]] && nofscks="yes"
|
[[ $nofscks_l ]] && nofscks="yes"
|
||||||
[[ $ro_mnt_l ]] && ro_mnt="yes"
|
[[ $ro_mnt_l ]] && ro_mnt="yes"
|
||||||
|
@ -1171,6 +1186,13 @@ if [[ -f $dracutbasedir/dracut-version.sh ]]; then
|
||||||
. "$dracutbasedir"/dracut-version.sh
|
. "$dracutbasedir"/dracut-version.sh
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if systemd-detect-virt -c &> /dev/null; then
|
||||||
|
export DRACUT_NO_MKNOD=1 DRACUT_NO_XATTR=1
|
||||||
|
if [[ $hostonly ]]; then
|
||||||
|
printf "%s\n" "dracut: WARNING: running in hostonly mode in a container!!"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ -f $dracutbasedir/dracut-init.sh ]]; then
|
if [[ -f $dracutbasedir/dracut-init.sh ]]; then
|
||||||
# shellcheck source=./dracut-init.sh
|
# shellcheck source=./dracut-init.sh
|
||||||
. "$dracutbasedir"/dracut-init.sh
|
. "$dracutbasedir"/dracut-init.sh
|
||||||
|
@ -1181,6 +1203,19 @@ else
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ $enhanced_cpio == "yes" ]]; then
|
||||||
|
enhanced_cpio="$dracutbasedir/dracut-cpio"
|
||||||
|
if [[ -x $enhanced_cpio ]]; then
|
||||||
|
# align based on statfs optimal transfer size
|
||||||
|
cpio_align=$(stat --file-system -c "%s" -- "$initdir")
|
||||||
|
else
|
||||||
|
dinfo "--enhanced-cpio ignored due to lack of dracut-cpio"
|
||||||
|
unset enhanced_cpio
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
unset enhanced_cpio
|
||||||
|
fi
|
||||||
|
|
||||||
# shellcheck disable=SC2154
|
# shellcheck disable=SC2154
|
||||||
if [[ $no_kernel != yes ]] && ! [[ -d $srcmods ]]; then
|
if [[ $no_kernel != yes ]] && ! [[ -d $srcmods ]]; then
|
||||||
printf "%s\n" "dracut: Cannot find module directory $srcmods" >&2
|
printf "%s\n" "dracut: Cannot find module directory $srcmods" >&2
|
||||||
|
@ -1270,23 +1305,6 @@ if [[ $no_kernel != yes ]] && [[ -d $srcmods ]]; then
|
||||||
else
|
else
|
||||||
dwarn "$srcmods/modules.dep is missing. Did you run depmod?"
|
dwarn "$srcmods/modules.dep is missing. Did you run depmod?"
|
||||||
fi
|
fi
|
||||||
elif ! (command -v gzip &> /dev/null && command -v xz &> /dev/null); then
|
|
||||||
read -r _mod < "$srcmods"/modules.dep
|
|
||||||
_mod=${_mod%%:*}
|
|
||||||
if [[ -f $srcmods/"$_mod" ]]; then
|
|
||||||
# Check, if kernel modules are compressed, and if we can uncompress them
|
|
||||||
case "$_mod" in
|
|
||||||
*.ko.gz) kcompress=gzip ;;
|
|
||||||
*.ko.xz) kcompress=xz ;;
|
|
||||||
*.ko.zst) kcompress=zstd ;;
|
|
||||||
esac
|
|
||||||
if [[ $kcompress ]]; then
|
|
||||||
if ! command -v "$kcompress" &> /dev/null; then
|
|
||||||
dfatal "Kernel modules are compressed with $kcompress, but $kcompress is not available."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -1888,7 +1906,7 @@ if [[ $kernel_only != yes ]]; then
|
||||||
# shellcheck disable=SC2174
|
# shellcheck disable=SC2174
|
||||||
mkdir -m 0755 -p "${initdir}/lib/dracut/hooks/$_d"
|
mkdir -m 0755 -p "${initdir}/lib/dracut/hooks/$_d"
|
||||||
done
|
done
|
||||||
if [[ $EUID == "0" ]]; then
|
if [[ $EUID == "0" ]] && ! [[ $DRACUT_NO_MKNOD ]]; then
|
||||||
[[ -c ${initdir}/dev/null ]] || mknod "${initdir}"/dev/null c 1 3
|
[[ -c ${initdir}/dev/null ]] || mknod "${initdir}"/dev/null c 1 3
|
||||||
[[ -c ${initdir}/dev/kmsg ]] || mknod "${initdir}"/dev/kmsg c 1 11
|
[[ -c ${initdir}/dev/kmsg ]] || mknod "${initdir}"/dev/kmsg c 1 11
|
||||||
[[ -c ${initdir}/dev/console ]] || mknod "${initdir}"/dev/console c 5 1
|
[[ -c ${initdir}/dev/console ]] || mknod "${initdir}"/dev/console c 5 1
|
||||||
|
@ -2060,9 +2078,11 @@ for ((i = 0; i < ${#include_src[@]}; i++)); do
|
||||||
# check for preexisting symlinks, so we can cope with the
|
# check for preexisting symlinks, so we can cope with the
|
||||||
# symlinks to $prefix
|
# symlinks to $prefix
|
||||||
# Objectname is a file or a directory
|
# Objectname is a file or a directory
|
||||||
|
reset_dotglob="$(shopt -p dotglob)"
|
||||||
|
shopt -q -s dotglob
|
||||||
for objectname in "$src"/*; do
|
for objectname in "$src"/*; do
|
||||||
[[ -e $objectname || -L $objectname ]] || continue
|
[[ -e $objectname || -L $objectname ]] || continue
|
||||||
if [[ -d $objectname ]]; then
|
if [[ -d $objectname ]] && [[ ! -L $objectname ]]; then
|
||||||
# objectname is a directory, let's compute the final directory name
|
# objectname is a directory, let's compute the final directory name
|
||||||
object_destdir=${destdir}/${objectname#$src/}
|
object_destdir=${destdir}/${objectname#$src/}
|
||||||
if ! [[ -e $object_destdir ]]; then
|
if ! [[ -e $object_destdir ]]; then
|
||||||
|
@ -2070,11 +2090,12 @@ for ((i = 0; i < ${#include_src[@]}; i++)); do
|
||||||
mkdir -m 0755 -p "$object_destdir"
|
mkdir -m 0755 -p "$object_destdir"
|
||||||
chmod --reference="$objectname" "$object_destdir"
|
chmod --reference="$objectname" "$object_destdir"
|
||||||
fi
|
fi
|
||||||
$DRACUT_CP -t "$object_destdir" "$dracutsysrootdir$objectname"/*
|
$DRACUT_CP -t "$object_destdir" "$dracutsysrootdir$objectname"/.
|
||||||
else
|
else
|
||||||
$DRACUT_CP -t "$destdir" "$dracutsysrootdir$objectname"
|
$DRACUT_CP -t "$destdir" "$dracutsysrootdir$objectname"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
eval "$reset_dotglob"
|
||||||
elif [[ -e $src ]]; then
|
elif [[ -e $src ]]; then
|
||||||
derror "$src is neither a directory nor a regular file"
|
derror "$src is neither a directory nor a regular file"
|
||||||
else
|
else
|
||||||
|
@ -2085,7 +2106,7 @@ done
|
||||||
|
|
||||||
if [[ $do_hardlink == yes ]] && command -v hardlink > /dev/null; then
|
if [[ $do_hardlink == yes ]] && command -v hardlink > /dev/null; then
|
||||||
dinfo "*** Hardlinking files ***"
|
dinfo "*** Hardlinking files ***"
|
||||||
hardlink "$initdir" 2>&1
|
hardlink "$initdir" 2>&1 | dinfo
|
||||||
dinfo "*** Hardlinking files done ***"
|
dinfo "*** Hardlinking files done ***"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -2102,6 +2123,13 @@ if [[ $do_strip == yes ]]; then
|
||||||
do_strip=no
|
do_strip=no
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if [[ $aggresive_strip ]]; then
|
||||||
|
# `eu-strip` and `strip` both strips all unneeded parts by default
|
||||||
|
strip_args=(-p)
|
||||||
|
else
|
||||||
|
strip_args=(-g -p)
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# cleanup empty ldconfig_paths directories
|
# cleanup empty ldconfig_paths directories
|
||||||
|
@ -2242,17 +2270,19 @@ if dracut_module_included "squash"; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $do_strip == yes ]] && ! [[ $DRACUT_FIPS_MODE ]]; then
|
if [[ $do_strip == yes ]] && ! [[ $DRACUT_FIPS_MODE ]]; then
|
||||||
|
# stripping files negates (dedup) benefits of using reflink
|
||||||
|
[[ -n $enhanced_cpio ]] && ddebug "strip is enabled alongside cpio reflink"
|
||||||
dinfo "*** Stripping files ***"
|
dinfo "*** Stripping files ***"
|
||||||
find "$initdir" -type f \
|
find "$initdir" -type f \
|
||||||
-executable -not -path '*/lib/modules/*.ko' -print0 \
|
-executable -not -path '*/lib/modules/*.ko' -print0 \
|
||||||
| xargs -r -0 $strip_cmd -g -p 2> /dev/null
|
| xargs -r -0 $strip_cmd "${strip_args[@]}" 2> /dev/null
|
||||||
|
|
||||||
# strip kernel modules, but do not touch signed modules
|
# strip kernel modules, but do not touch signed modules
|
||||||
find "$initdir" -type f -path '*/lib/modules/*.ko' -print0 \
|
find "$initdir" -type f -path '*/lib/modules/*.ko' -print0 \
|
||||||
| while read -r -d $'\0' f || [ -n "$f" ]; do
|
| while read -r -d $'\0' f || [ -n "$f" ]; do
|
||||||
SIG=$(tail -c 28 "$f" | tr -d '\000')
|
SIG=$(tail -c 28 "$f" | tr -d '\000')
|
||||||
[[ $SIG == '~Module signature appended~' ]] || { printf "%s\000" "$f"; }
|
[[ $SIG == '~Module signature appended~' ]] || { printf "%s\000" "$f"; }
|
||||||
done | xargs -r -0 $strip_cmd -g -p
|
done | xargs -r -0 $strip_cmd "${strip_args[@]}"
|
||||||
dinfo "*** Stripping files done ***"
|
dinfo "*** Stripping files done ***"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -2312,6 +2342,19 @@ if [[ $create_early_cpio == yes ]]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# The microcode blob is _before_ the initramfs blob, not after
|
# The microcode blob is _before_ the initramfs blob, not after
|
||||||
|
if [[ -n $enhanced_cpio ]]; then
|
||||||
|
if ! (
|
||||||
|
umask 077
|
||||||
|
cd "$early_cpio_dir/d"
|
||||||
|
find . -print0 | sort -z \
|
||||||
|
| $enhanced_cpio --null ${cpio_owner:+--owner "$cpio_owner"} \
|
||||||
|
--mtime 0 --data-align "$cpio_align" --truncate-existing \
|
||||||
|
"${DRACUT_TMPDIR}/initramfs.img"
|
||||||
|
); then
|
||||||
|
dfatal "dracut-cpio: creation of $outfile failed"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
if ! (
|
if ! (
|
||||||
umask 077
|
umask 077
|
||||||
cd "$early_cpio_dir/d"
|
cd "$early_cpio_dir/d"
|
||||||
|
@ -2323,16 +2366,38 @@ if [[ $create_early_cpio == yes ]]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_kernel_config CONFIG_RD_ZSTD; then
|
||||||
|
DRACUT_KERNEL_RD_ZSTD=yes
|
||||||
|
else
|
||||||
|
DRACUT_KERNEL_RD_ZSTD=
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $compress == $DRACUT_COMPRESS_ZSTD* && ! $DRACUT_KERNEL_RD_ZSTD ]]; then
|
||||||
|
dwarn "dracut: kernel has no zstd support compiled in."
|
||||||
|
compress=
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $compress && $compress != cat ]]; then
|
||||||
|
if ! command -v "${compress%% *}" &> /dev/null; then
|
||||||
|
derror "dracut: cannot execute compression command '$compress', falling back to default"
|
||||||
|
compress=
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if ! [[ $compress ]]; then
|
if ! [[ $compress ]]; then
|
||||||
# check all known compressors, if none specified
|
# check all known compressors, if none specified
|
||||||
for i in $DRACUT_COMPRESS_PIGZ $DRACUT_COMPRESS_GZIP $DRACUT_COMPRESS_LZ4 $DRACUT_COMPRESS_LZOP $ $DRACUT_COMPRESS_ZSTD $DRACUT_COMPRESS_LZMA $DRACUT_COMPRESS_XZ $DRACUT_COMPRESS_LBZIP2 $OMPRESS_BZIP2 $DRACUT_COMPRESS_CAT; do
|
for i in $DRACUT_COMPRESS_PIGZ $DRACUT_COMPRESS_GZIP $DRACUT_COMPRESS_LZ4 $DRACUT_COMPRESS_LZOP $DRACUT_COMPRESS_ZSTD $DRACUT_COMPRESS_LZMA $DRACUT_COMPRESS_XZ $DRACUT_COMPRESS_LBZIP2 $DRACUT_COMPRESS_BZIP2 $DRACUT_COMPRESS_CAT; do
|
||||||
|
[[ $i != "$DRACUT_COMPRESS_ZSTD" || $DRACUT_KERNEL_RD_ZSTD ]] || continue
|
||||||
command -v "$i" &> /dev/null || continue
|
command -v "$i" &> /dev/null || continue
|
||||||
compress="$i"
|
compress="$i"
|
||||||
break
|
break
|
||||||
done
|
done
|
||||||
if [[ $compress == cat ]]; then
|
if [[ $compress == cat ]]; then
|
||||||
printf "%s\n" "dracut: no compression tool available. Initramfs image is going to be big." >&2
|
dwarn "dracut: no compression tool available. Initramfs image is going to be big."
|
||||||
|
else
|
||||||
|
dinfo "dracut: using auto-determined compression method '$compress'"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -2371,6 +2436,31 @@ case $compress in
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
if [[ -n $enhanced_cpio ]]; then
|
||||||
|
if [[ $compress == "cat" ]]; then
|
||||||
|
# dracut-cpio appends by default, so any ucode remains
|
||||||
|
cpio_outfile="${DRACUT_TMPDIR}/initramfs.img"
|
||||||
|
else
|
||||||
|
ddebug "$compress compression enabled alongside cpio reflink"
|
||||||
|
# dracut-cpio doesn't output to stdout, so stage for compression
|
||||||
|
cpio_outfile="${DRACUT_TMPDIR}/initramfs.img.uncompressed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! (
|
||||||
|
umask 077
|
||||||
|
cd "$initdir"
|
||||||
|
find . -print0 | sort -z \
|
||||||
|
| $enhanced_cpio --null ${cpio_owner:+--owner "$cpio_owner"} \
|
||||||
|
--mtime 0 --data-align "$cpio_align" "$cpio_outfile" || exit 1
|
||||||
|
[[ $compress == "cat" ]] && exit 0
|
||||||
|
$compress < "$cpio_outfile" >> "${DRACUT_TMPDIR}/initramfs.img" \
|
||||||
|
&& rm "$cpio_outfile"
|
||||||
|
); then
|
||||||
|
dfatal "dracut-cpio: creation of $outfile failed"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
unset cpio_outfile
|
||||||
|
else
|
||||||
if ! (
|
if ! (
|
||||||
umask 077
|
umask 077
|
||||||
cd "$initdir"
|
cd "$initdir"
|
||||||
|
@ -2381,6 +2471,7 @@ if ! (
|
||||||
dfatal "dracut: creation of $outfile failed"
|
dfatal "dracut: creation of $outfile failed"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# shellcheck disable=SC2154
|
# shellcheck disable=SC2154
|
||||||
if ((maxloglvl >= 5)) && ((verbosity_mod_l >= 0)); then
|
if ((maxloglvl >= 5)) && ((verbosity_mod_l >= 0)); then
|
||||||
|
|
|
@ -530,6 +530,15 @@ will not be able to boot.
|
||||||
Specifies the kernel image, which to include in the UEFI executable. The default is
|
Specifies the kernel image, which to include in the UEFI executable. The default is
|
||||||
_/lib/modules/<KERNEL-VERSION>/vmlinuz_ or _/boot/vmlinuz-<KERNEL-VERSION>_
|
_/lib/modules/<KERNEL-VERSION>/vmlinuz_ or _/boot/vmlinuz-<KERNEL-VERSION>_
|
||||||
|
|
||||||
|
**--enhanced-cpio**::
|
||||||
|
Attempt to use the dracut-cpio binary, which optimizes archive creation for
|
||||||
|
copy-on-write filesystems by using the copy_file_range(2) syscall via Rust's
|
||||||
|
io::copy(). When specified, initramfs archives are also padded to ensure
|
||||||
|
optimal data alignment for extent sharing. To retain reflink data
|
||||||
|
deduplication benefits, this should be used alongside the **--no-compress**
|
||||||
|
and **--no-strip** parameters, with initramfs source files, **--tmpdir**
|
||||||
|
staging area and destination all on the same copy-on-write capable filesystem.
|
||||||
|
|
||||||
ENVIRONMENT
|
ENVIRONMENT
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
dracut {mainversion}
|
dracut {mainversion}
|
||||||
====================
|
====================
|
||||||
:author: Harald Hoyer
|
:author: Harald Hoyer
|
||||||
:email: harald@redhat.com
|
:email: harald@profian.com
|
||||||
:revnumber: {version}
|
:revnumber: {version}
|
||||||
:language: bash
|
:language: bash
|
||||||
|
|
||||||
|
|
|
@ -151,7 +151,7 @@ Misc
|
||||||
|
|
||||||
**rd.retry=**__<seconds>__::
|
**rd.retry=**__<seconds>__::
|
||||||
specify how long dracut should retry the initqueue to configure devices.
|
specify how long dracut should retry the initqueue to configure devices.
|
||||||
The default is 30 seconds. After 2/3 of the time, degraded raids are force
|
The default is 180 seconds. After 2/3 of the time, degraded raids are force
|
||||||
started. If you have hardware, which takes a very long time to announce its
|
started. If you have hardware, which takes a very long time to announce its
|
||||||
drives, you might want to extend this value.
|
drives, you might want to extend this value.
|
||||||
|
|
||||||
|
@ -575,6 +575,11 @@ USB Android phone::
|
||||||
* enp0s29u1u2
|
* enp0s29u1u2
|
||||||
=====================
|
=====================
|
||||||
|
|
||||||
|
The following options are supported by the 'network-legacy' dracut
|
||||||
|
module. Other network modules might support a slightly different set of
|
||||||
|
options; refer to the documentation of the specific network module in use. For
|
||||||
|
NetworkManager, see *nm-initrd-generator*(8).
|
||||||
|
|
||||||
**ip=**__{dhcp|on|any|dhcp6|auto6|either6|link6|single-dhcp}__::
|
**ip=**__{dhcp|on|any|dhcp6|auto6|either6|link6|single-dhcp}__::
|
||||||
dhcp|on|any::: get ip from dhcp server from all interfaces. If netroot=dhcp,
|
dhcp|on|any::: get ip from dhcp server from all interfaces. If netroot=dhcp,
|
||||||
loop sequentially through all interfaces (eth0, eth1, ...) and use the first
|
loop sequentially through all interfaces (eth0, eth1, ...) and use the first
|
||||||
|
|
|
@ -1,20 +1,32 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
# This file is part of dracut.
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
# called by dracut
|
# Prerequisite check(s) for module.
|
||||||
check() {
|
check() {
|
||||||
require_binaries /bin/bash
|
|
||||||
|
# If the binary(s) requirements are not fulfilled the module can't be installed.
|
||||||
|
require_binaries bash || return 1
|
||||||
|
|
||||||
|
# Return 255 to only include the module, if another module requires it.
|
||||||
|
return 255
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# called by dracut
|
# Module dependency requirements.
|
||||||
depends() {
|
depends() {
|
||||||
|
|
||||||
|
# Return 0 to include the dependent module(s) in the initramfs.
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# called by dracut
|
# Install the required file(s) and directories for the module in the initramfs.
|
||||||
install() {
|
install() {
|
||||||
# If another shell is already installed, do not use bash
|
|
||||||
[[ -x $initdir/bin/sh ]] && return
|
|
||||||
|
|
||||||
# Prefer bash as /bin/sh if it is available.
|
inst /bin/bash
|
||||||
inst /bin/bash && ln -sf bash "${initdir}/bin/sh"
|
|
||||||
|
# Prefer bash as default shell if no other shell is preferred.
|
||||||
|
[[ -L $initdir/bin/sh ]] || ln -sf bash "${initdir}/bin/sh"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,20 +1,32 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
# This file is part of dracut.
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
# called by dracut
|
# Prerequisite check(s) for module.
|
||||||
check() {
|
check() {
|
||||||
require_binaries /bin/dash
|
|
||||||
|
# If the binary(s) requirements are not fulfilled the module can't be installed.
|
||||||
|
require_binaries dash || return 1
|
||||||
|
|
||||||
|
# Return 255 to only include the module, if another module requires it.
|
||||||
|
return 255
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# called by dracut
|
# Module dependency requirements.
|
||||||
depends() {
|
depends() {
|
||||||
|
|
||||||
|
# Return 0 to include the dependent module(s) in the initramfs.
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# called by dracut
|
# Install the required file(s) and directories for the module in the initramfs.
|
||||||
install() {
|
install() {
|
||||||
# If another shell is already installed, do not use dash
|
|
||||||
[[ -x $initdir/bin/sh ]] && return
|
|
||||||
|
|
||||||
# Prefer dash as /bin/sh if it is available.
|
inst /bin/dash
|
||||||
inst /bin/dash && ln -sf dash "${initdir}/bin/sh"
|
|
||||||
|
# Prefer dash as default shell if no other shell is preferred.
|
||||||
|
[[ -L $initdir/bin/sh ]] || ln -sf dash "${initdir}/bin/sh"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,20 +1,34 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
# This file is part of dracut.
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
# called by dracut
|
# Prerequisite check(s) for module.
|
||||||
check() {
|
check() {
|
||||||
require_binaries /bin/mksh
|
|
||||||
|
# If the binary(s) requirements are not fulfilled the module can't be installed.
|
||||||
|
require_binaries mksh || return 1
|
||||||
|
require_binaries printf || return 1
|
||||||
|
|
||||||
|
# Return 255 to only include the module, if another module requires it.
|
||||||
|
return 255
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# called by dracut
|
# Module dependency requirements.
|
||||||
depends() {
|
depends() {
|
||||||
|
|
||||||
|
# Return 0 to include the dependent module(s) in the initramfs.
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# called by dracut
|
# Install the required file(s) and directories for the module in the initramfs.
|
||||||
install() {
|
install() {
|
||||||
# If another shell is already installed, do not use mksh
|
|
||||||
[[ -x $initdir/bin/sh ]] && return
|
|
||||||
|
|
||||||
# Prefer mksh as /bin/sh if it is available.
|
inst /bin/mksh
|
||||||
inst /bin/mksh && ln -sf mksh "${initdir}/bin/sh"
|
inst printf
|
||||||
|
|
||||||
|
# Prefer mksh as default shell if no other shell is preferred.
|
||||||
|
[[ -L $initdir/bin/sh ]] || ln -sf mksh "${initdir}/bin/sh"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -213,8 +213,23 @@ install() {
|
||||||
grep '^systemd-network:' "$dracutsysrootdir"/etc/group 2> /dev/null
|
grep '^systemd-network:' "$dracutsysrootdir"/etc/group 2> /dev/null
|
||||||
} >> "$initdir/etc/group"
|
} >> "$initdir/etc/group"
|
||||||
|
|
||||||
ln_r "$systemdutildir"/systemd "/init"
|
local _systemdbinary="$systemdutildir"/systemd
|
||||||
ln_r "$systemdutildir"/systemd "/sbin/init"
|
|
||||||
|
if ldd "$_systemdbinary" | grep -qw libasan; then
|
||||||
|
local _wrapper="$systemdutildir"/systemd-asan-wrapper
|
||||||
|
cat > "$initdir"/"$_wrapper" << EOF
|
||||||
|
#!/bin/sh
|
||||||
|
mount -t proc -o nosuid,nodev,noexec proc /proc
|
||||||
|
exec $_systemdbinary
|
||||||
|
EOF
|
||||||
|
chmod 755 "$initdir"/"$_wrapper"
|
||||||
|
_systemdbinary="$_wrapper"
|
||||||
|
unset _wrapper
|
||||||
|
fi
|
||||||
|
ln_r "$_systemdbinary" "/init"
|
||||||
|
ln_r "$_systemdbinary" "/sbin/init"
|
||||||
|
|
||||||
|
unset _systemdbinary
|
||||||
|
|
||||||
inst_binary true
|
inst_binary true
|
||||||
ln_r "$(find_binary true)" "/usr/bin/loginctl"
|
ln_r "$(find_binary true)" "/usr/bin/loginctl"
|
||||||
|
|
|
@ -1,29 +1,39 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
|
# This file is part of dracut.
|
||||||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
# called by dracut
|
# Prerequisite check(s) for module.
|
||||||
check() {
|
check() {
|
||||||
|
|
||||||
# hwclock does not exist on S390(x), bail out silently then
|
# hwclock does not exist on S390(x), bail out silently then
|
||||||
local _arch=${DRACUT_ARCH:-$(uname -m)}
|
local _arch=${DRACUT_ARCH:-$(uname -m)}
|
||||||
[ "$_arch" = "s390" -o "$_arch" = "s390x" ] && return 1
|
[ "$_arch" = "s390" -o "$_arch" = "s390x" ] && return 1
|
||||||
|
|
||||||
[ -e /etc/localtime -a -e /etc/adjtime ] || return 1
|
# If the binary(s) requirements are not fulfilled the module can't be installed.
|
||||||
require_binaries /sbin/hwclock || return 1
|
require_binaries hwclock || return 1
|
||||||
|
|
||||||
|
# Return 255 to only include the module, if another module requires it.
|
||||||
return 255
|
return 255
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# called by dracut
|
# Module dependency requirements.
|
||||||
depends() {
|
depends() {
|
||||||
|
|
||||||
|
# Return 0 to include the dependent module(s) in the initramfs.
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# called by dracut
|
# Install the required file(s) and directories for the module in the initramfs.
|
||||||
install() {
|
install() {
|
||||||
inst /usr/share/zoneinfo/UTC
|
|
||||||
inst /etc/localtime
|
|
||||||
inst /etc/adjtime
|
|
||||||
inst_hook pre-trigger 00 "$moddir/warpclock.sh"
|
inst_hook pre-trigger 00 "$moddir/warpclock.sh"
|
||||||
inst /sbin/hwclock
|
|
||||||
|
inst_multiple -o \
|
||||||
|
/usr/share/zoneinfo/UTC \
|
||||||
|
/etc/localtime \
|
||||||
|
/etc/adjtime \
|
||||||
|
hwclock
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
# This file is part of dracut warpclock module.
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
# Set the kernel's timezone and reset the system time
|
||||||
|
# if adjtime is set to LOCAL.
|
||||||
|
|
||||||
if test -e /etc/adjtime; then
|
if test -e /etc/adjtime; then
|
||||||
while read -r line; do
|
while read -r line; do
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
type getarg > /dev/null 2>&1 || . /lib/dracut-lib.sh
|
||||||
|
|
||||||
if ! fipsmode=$(getarg fips) || [ "$fipsmode" = "0" ]; then
|
if ! fipsmode=$(getarg fips) || [ "$fipsmode" = "0" ]; then
|
||||||
rm -f -- /etc/modprobe.d/fips.conf > /dev/null 2>&1
|
rm -f -- /etc/modprobe.d/fips.conf > /dev/null 2>&1
|
||||||
elif [ -z "$fipsmode" ]; then
|
elif [ -z "$fipsmode" ]; then
|
||||||
|
|
|
@ -79,6 +79,7 @@ nonfatal_modprobe() {
|
||||||
fips_load_crypto() {
|
fips_load_crypto() {
|
||||||
local _k
|
local _k
|
||||||
local _v
|
local _v
|
||||||
|
local _module
|
||||||
local _found
|
local _found
|
||||||
|
|
||||||
FIPSMODULES=$(cat /etc/fipsmodules)
|
FIPSMODULES=$(cat /etc/fipsmodules)
|
||||||
|
@ -108,11 +109,10 @@ fips_load_crypto() {
|
||||||
}
|
}
|
||||||
|
|
||||||
do_fips() {
|
do_fips() {
|
||||||
local _v
|
|
||||||
local _module
|
|
||||||
|
|
||||||
KERNEL=$(uname -r)
|
KERNEL=$(uname -r)
|
||||||
|
|
||||||
|
if ! getarg rd.fips.skipkernel > /dev/null; then
|
||||||
|
|
||||||
fips_info "Checking integrity of kernel"
|
fips_info "Checking integrity of kernel"
|
||||||
if [ -e "/run/initramfs/live/vmlinuz0" ]; then
|
if [ -e "/run/initramfs/live/vmlinuz0" ]; then
|
||||||
do_rhevh_check /run/initramfs/live/vmlinuz0 || return 1
|
do_rhevh_check /run/initramfs/live/vmlinuz0 || return 1
|
||||||
|
@ -124,6 +124,21 @@ do_fips() {
|
||||||
else
|
else
|
||||||
BOOT_IMAGE="$(getarg BOOT_IMAGE)"
|
BOOT_IMAGE="$(getarg BOOT_IMAGE)"
|
||||||
|
|
||||||
|
# On s390x, BOOT_IMAGE isn't a path but an integer representing the
|
||||||
|
# entry number selected. Let's try the root of /boot first, and
|
||||||
|
# otherwise fallback to trying to parse the BLS entries if it's a
|
||||||
|
# BLS-based system.
|
||||||
|
if [ "$(uname -m)" = s390x ]; then
|
||||||
|
if [ -e "/boot/vmlinuz-${KERNEL}" ]; then
|
||||||
|
BOOT_IMAGE="vmlinuz-${KERNEL}"
|
||||||
|
elif [ -d /boot/loader/entries ]; then
|
||||||
|
bls=$(find /boot/loader/entries -name '*.conf' | sort -rV | sed -n "$((BOOT_IMAGE + 1))p")
|
||||||
|
if [ -e "${bls}" ]; then
|
||||||
|
BOOT_IMAGE=$(grep ^linux "${bls}" | cut -d' ' -f2)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Trim off any leading GRUB boot device (e.g. ($root) )
|
# Trim off any leading GRUB boot device (e.g. ($root) )
|
||||||
BOOT_IMAGE="$(echo "${BOOT_IMAGE}" | sed 's/^(.*)//')"
|
BOOT_IMAGE="$(echo "${BOOT_IMAGE}" | sed 's/^(.*)//')"
|
||||||
|
|
||||||
|
@ -151,6 +166,7 @@ do_fips() {
|
||||||
|
|
||||||
(cd "${BOOT_IMAGE_HMAC%/*}" && sha512hmac -c "${BOOT_IMAGE_HMAC}") || return 1
|
(cd "${BOOT_IMAGE_HMAC%/*}" && sha512hmac -c "${BOOT_IMAGE_HMAC}") || return 1
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
fips_info "All initrd crypto checks done"
|
fips_info "All initrd crypto checks done"
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ install() {
|
||||||
inst_hook pre-udev 01 "$moddir/fips-load-crypto.sh"
|
inst_hook pre-udev 01 "$moddir/fips-load-crypto.sh"
|
||||||
inst_script "$moddir/fips.sh" /sbin/fips.sh
|
inst_script "$moddir/fips.sh" /sbin/fips.sh
|
||||||
|
|
||||||
inst_multiple sha512hmac rmmod insmod mount uname umount
|
inst_multiple sha512hmac rmmod insmod mount uname umount grep sed cut find sort
|
||||||
|
|
||||||
inst_simple /etc/system-fips
|
inst_simple /etc/system-fips
|
||||||
[ -c "${initdir}"/dev/random ] || mknod "${initdir}"/dev/random c 1 8 \
|
[ -c "${initdir}"/dev/random ] || mknod "${initdir}"/dev/random c 1 8 \
|
||||||
|
@ -78,7 +78,7 @@ install() {
|
||||||
}
|
}
|
||||||
[ -c "${initdir}"/dev/urandom ] || mknod "${initdir}"/dev/urandom c 1 9 \
|
[ -c "${initdir}"/dev/urandom ] || mknod "${initdir}"/dev/urandom c 1 9 \
|
||||||
|| {
|
|| {
|
||||||
dfatal "Cannot create /dev/random"
|
dfatal "Cannot create /dev/urandom"
|
||||||
dfatal "To create an initramfs with fips support, dracut has to run as root"
|
dfatal "To create an initramfs with fips support, dracut has to run as root"
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,7 @@ install() {
|
||||||
"$systemdsystemunitdir"/systemd-coredump.socket \
|
"$systemdsystemunitdir"/systemd-coredump.socket \
|
||||||
"$systemdsystemunitdir"/systemd-coredump@.service \
|
"$systemdsystemunitdir"/systemd-coredump@.service \
|
||||||
"$systemdsystemunitdir"/sockets.target.wants/systemd-coredump.socket \
|
"$systemdsystemunitdir"/sockets.target.wants/systemd-coredump.socket \
|
||||||
|
"$sysusers"/systemd-coredump.conf \
|
||||||
coredumpctl
|
coredumpctl
|
||||||
|
|
||||||
# Install the hosts local user configurations if enabled.
|
# Install the hosts local user configurations if enabled.
|
||||||
|
@ -48,6 +49,7 @@ install() {
|
||||||
"$systemdsystemconfdir/systemd-coredump.socket.d/*.conf" \
|
"$systemdsystemconfdir/systemd-coredump.socket.d/*.conf" \
|
||||||
"$systemdsystemconfdir"/systemd-coredump@.service \
|
"$systemdsystemconfdir"/systemd-coredump@.service \
|
||||||
"$systemdsystemconfdir/systemd-coredump@.service.d/*.conf" \
|
"$systemdsystemconfdir/systemd-coredump@.service.d/*.conf" \
|
||||||
"$systemdsystemconfdir"/sockets.target.wants/systemd-coredump.socket
|
"$systemdsystemconfdir"/sockets.target.wants/systemd-coredump.socket \
|
||||||
|
"$sysusersconfdir"/systemd-coredump.conf
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# This file is part of dracut.
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
# Prerequisite check(s) for module.
|
||||||
|
check() {
|
||||||
|
|
||||||
|
# If the binary(s) requirements are not fulfilled the module can't be installed.
|
||||||
|
require_binaries \
|
||||||
|
"$systemdutildir"/systemd-integritysetup \
|
||||||
|
"$systemdutildir"/system-generators/systemd-integritysetup-generator \
|
||||||
|
|| return 1
|
||||||
|
|
||||||
|
# Return 255 to only include the module, if another module requires it.
|
||||||
|
return 255
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# Module dependency requirements.
|
||||||
|
depends() {
|
||||||
|
|
||||||
|
# This module has external dependency on other module(s).
|
||||||
|
echo systemd dm
|
||||||
|
# Return 0 to include the dependent module(s) in the initramfs.
|
||||||
|
return 0
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
installkernel() {
|
||||||
|
instmods dm-integrity
|
||||||
|
}
|
||||||
|
|
||||||
|
# Install the required file(s) and directories for the module in the initramfs.
|
||||||
|
install() {
|
||||||
|
|
||||||
|
inst_multiple -o \
|
||||||
|
"$systemdutildir"/systemd-integritysetup \
|
||||||
|
"$systemdutildir"/system-generators/systemd-integritysetup-generator \
|
||||||
|
"$systemdsystemunitdir"/integritysetup-pre.target \
|
||||||
|
"$systemdsystemunitdir"/integritysetup.target \
|
||||||
|
"$systemdsystemunitdir"/sysinit.target.wants/integritysetup.target
|
||||||
|
|
||||||
|
# Install the hosts local user configurations if enabled.
|
||||||
|
if [[ $hostonly ]]; then
|
||||||
|
inst_multiple -H -o \
|
||||||
|
/etc/integritytab \
|
||||||
|
"$systemdsystemconfdir"/integritysetup.target \
|
||||||
|
"$systemdsystemconfdir/integritysetup.target.wants/*.target" \
|
||||||
|
"$systemdsystemconfdir"/integritysetup-pre.target \
|
||||||
|
"$systemdsystemconfdir/integritysetup-pre.target.wants/*.target" \
|
||||||
|
"$systemdsystemconfdir"/sysinit.target.wants/integritysetup.target \
|
||||||
|
"$systemdsystemconfdir/sysinit.target.wants/integritysetup.target.wants/*.target"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install required libraries.
|
||||||
|
_arch=${DRACUT_ARCH:-$(uname -m)}
|
||||||
|
inst_libdir_file {"tls/$_arch/",tls/,"$_arch/",}"libcryptsetup.so.*"
|
||||||
|
|
||||||
|
}
|
|
@ -47,6 +47,7 @@ install() {
|
||||||
"$systemdsystemunitdir"/sockets.target.wants/systemd-journald.socket \
|
"$systemdsystemunitdir"/sockets.target.wants/systemd-journald.socket \
|
||||||
"$systemdsystemunitdir"/sockets.target.wants/systemd-journald-audit.socket \
|
"$systemdsystemunitdir"/sockets.target.wants/systemd-journald-audit.socket \
|
||||||
"$systemdsystemunitdir"/sysinit.target.wants/systemd-journald.service \
|
"$systemdsystemunitdir"/sysinit.target.wants/systemd-journald.service \
|
||||||
|
"$sysusers"/systemd-journal.conf \
|
||||||
journalctl
|
journalctl
|
||||||
|
|
||||||
# Install library file(s)
|
# Install library file(s)
|
||||||
|
@ -66,7 +67,8 @@ install() {
|
||||||
"$systemdsystemconfdir"/systemd-journal-flush.service \
|
"$systemdsystemconfdir"/systemd-journal-flush.service \
|
||||||
"$systemdsystemconfdir/systemd-journal-flush.service.d/*.conf" \
|
"$systemdsystemconfdir/systemd-journal-flush.service.d/*.conf" \
|
||||||
"$systemdsystemconfdir"/systemd-journal-catalog-update.service \
|
"$systemdsystemconfdir"/systemd-journal-catalog-update.service \
|
||||||
"$systemdsystemconfdir/systemd-journal-catalog-update.service.d/*.conf"
|
"$systemdsystemconfdir/systemd-journal-catalog-update.service.d/*.conf" \
|
||||||
|
"$sysusersconfdir"/systemd-journal.conf
|
||||||
fi
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,6 +50,7 @@ install() {
|
||||||
"$systemdsystemunitdir"/systemd-network-generator.service \
|
"$systemdsystemunitdir"/systemd-network-generator.service \
|
||||||
"$systemdsystemunitdir"/systemd-networkd-wait-online.service \
|
"$systemdsystemunitdir"/systemd-networkd-wait-online.service \
|
||||||
"$systemdsystemunitdir"/systemd-network-generator.service \
|
"$systemdsystemunitdir"/systemd-network-generator.service \
|
||||||
|
"$sysusers"/systemd-network.conf \
|
||||||
networkctl ip
|
networkctl ip
|
||||||
|
|
||||||
# Enable systemd type units
|
# Enable systemd type units
|
||||||
|
@ -74,6 +75,7 @@ install() {
|
||||||
"$systemdsystemconfdir"/systemd-network-generator.service \
|
"$systemdsystemconfdir"/systemd-network-generator.service \
|
||||||
"$systemdsystemconfdir/systemd-network-generator.service/*.conf" \
|
"$systemdsystemconfdir/systemd-network-generator.service/*.conf" \
|
||||||
"$systemdsystemconfdir"/systemd-networkd-wait-online.service \
|
"$systemdsystemconfdir"/systemd-networkd-wait-online.service \
|
||||||
"$systemdsystemconfdir/systemd-networkd-wait-online.service/*.conf"
|
"$systemdsystemconfdir/systemd-networkd-wait-online.service/*.conf" \
|
||||||
|
"$sysusersconfdir"/systemd-network.conf
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,6 +40,7 @@ install() {
|
||||||
"$systemdutildir"/systemd-resolved \
|
"$systemdutildir"/systemd-resolved \
|
||||||
"$systemdsystemunitdir"/systemd-resolved.service \
|
"$systemdsystemunitdir"/systemd-resolved.service \
|
||||||
"$systemdsystemunitdir/systemd-resolved.service.d/*.conf" \
|
"$systemdsystemunitdir/systemd-resolved.service.d/*.conf" \
|
||||||
|
"$sysusers"/systemd-resolve.conf \
|
||||||
resolvectl
|
resolvectl
|
||||||
|
|
||||||
# Enable systemd type unit(s)
|
# Enable systemd type unit(s)
|
||||||
|
@ -51,6 +52,7 @@ install() {
|
||||||
"$systemdutilconfdir"/resolved.conf \
|
"$systemdutilconfdir"/resolved.conf \
|
||||||
"$systemdutilconfdir/resolved.conf.d/*.conf" \
|
"$systemdutilconfdir/resolved.conf.d/*.conf" \
|
||||||
"$systemdsystemconfdir"/systemd-resolved.service \
|
"$systemdsystemconfdir"/systemd-resolved.service \
|
||||||
"$systemdsystemconfdir/systemd-resolved.service/*.conf"
|
"$systemdsystemconfdir/systemd-resolved.service/*.conf" \
|
||||||
|
"$sysusersconfdir"/systemd-resolve.conf
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,8 @@ depends() {
|
||||||
# Install the required file(s) and directories for the module in the initramfs.
|
# Install the required file(s) and directories for the module in the initramfs.
|
||||||
install() {
|
install() {
|
||||||
|
|
||||||
|
inst_simple "$moddir/sysusers-dracut.conf" "$systemdsystemunitdir/systemd-sysusers.service.d/sysusers-dracut.conf"
|
||||||
|
|
||||||
inst_multiple -o \
|
inst_multiple -o \
|
||||||
"$sysusers"/basic.conf \
|
"$sysusers"/basic.conf \
|
||||||
"$sysusers"/systemd.conf \
|
"$sysusers"/systemd.conf \
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[Unit]
|
||||||
|
ConditionNeedsUpdate=
|
|
@ -42,7 +42,8 @@ install() {
|
||||||
"$systemdsystemunitdir"/systemd-timesyncd.service \
|
"$systemdsystemunitdir"/systemd-timesyncd.service \
|
||||||
"$systemdsystemunitdir/systemd-timesyncd.service.d/*.conf" \
|
"$systemdsystemunitdir/systemd-timesyncd.service.d/*.conf" \
|
||||||
"$systemdsystemunitdir"/systemd-time-wait-sync.service \
|
"$systemdsystemunitdir"/systemd-time-wait-sync.service \
|
||||||
"$systemdsystemunitdir/systemd-time-wait-sync.service.d/*.conf"
|
"$systemdsystemunitdir/systemd-time-wait-sync.service.d/*.conf" \
|
||||||
|
"$sysusers"/systemd-timesync.conf
|
||||||
|
|
||||||
# Enable systemd type unit(s)
|
# Enable systemd type unit(s)
|
||||||
for i in \
|
for i in \
|
||||||
|
@ -60,6 +61,7 @@ install() {
|
||||||
"$systemdsystemconfdir"/systemd-timesyncd.service \
|
"$systemdsystemconfdir"/systemd-timesyncd.service \
|
||||||
"$systemdsystemconfdir/systemd-timesyncd.service.d/*.conf" \
|
"$systemdsystemconfdir/systemd-timesyncd.service.d/*.conf" \
|
||||||
"$systemdsystemunitdir"/systemd-time-wait-sync.service \
|
"$systemdsystemunitdir"/systemd-time-wait-sync.service \
|
||||||
"$systemdsystemunitdir/systemd-time-wait-sync.service.d/*.conf"
|
"$systemdsystemunitdir/systemd-time-wait-sync.service.d/*.conf" \
|
||||||
|
"$sysusersconfdir"/systemd-timesync.conf
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
|
@ -446,7 +446,11 @@ for p in $(getargs ip=); do
|
||||||
|
|
||||||
# If this option isn't directed at our interface, skip it
|
# If this option isn't directed at our interface, skip it
|
||||||
if [ -n "$dev" ]; then
|
if [ -n "$dev" ]; then
|
||||||
[ "$dev" != "$netif" ] && continue
|
if [ "$dev" != "$netif" ]; then
|
||||||
|
[ ! -e "/sys/class/net/$dev" ] \
|
||||||
|
&& warn "Network interface '$dev' does not exist!"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
iface_is_enslaved "$netif" && continue
|
iface_is_enslaved "$netif" && continue
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -97,6 +97,11 @@ for p in $(getargs ip=); do
|
||||||
fi
|
fi
|
||||||
# IFACES list for later use
|
# IFACES list for later use
|
||||||
IFACES="$IFACES $dev"
|
IFACES="$IFACES $dev"
|
||||||
|
|
||||||
|
# Interface should exist
|
||||||
|
if [ ! -e "/sys/class/net/$dev" ]; then
|
||||||
|
warn "Network interface '$dev' does not exist"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Do we need to check for specific options?
|
# Do we need to check for specific options?
|
||||||
|
|
|
@ -10,7 +10,7 @@ check() {
|
||||||
|
|
||||||
# called by dracut
|
# called by dracut
|
||||||
depends() {
|
depends() {
|
||||||
echo dbus
|
echo dbus bash
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@ install() {
|
||||||
|
|
||||||
inst NetworkManager
|
inst NetworkManager
|
||||||
inst_multiple -o /usr/{lib,libexec}/nm-initrd-generator
|
inst_multiple -o /usr/{lib,libexec}/nm-initrd-generator
|
||||||
|
inst_multiple -o /usr/{lib,libexec}/nm-daemon-helper
|
||||||
inst_multiple -o teamd dhclient
|
inst_multiple -o teamd dhclient
|
||||||
inst_hook cmdline 99 "$moddir/nm-config.sh"
|
inst_hook cmdline 99 "$moddir/nm-config.sh"
|
||||||
if dracut_module_included "systemd"; then
|
if dracut_module_included "systemd"; then
|
||||||
|
@ -38,6 +39,11 @@ install() {
|
||||||
inst "$dbussystem"/org.freedesktop.NetworkManager.conf
|
inst "$dbussystem"/org.freedesktop.NetworkManager.conf
|
||||||
inst_multiple nmcli nm-online
|
inst_multiple nmcli nm-online
|
||||||
|
|
||||||
|
# teaming support under systemd+dbus
|
||||||
|
inst_multiple -o \
|
||||||
|
"$dbussystem"/teamd.conf \
|
||||||
|
"$dbussystemconfdir"/teamd.conf
|
||||||
|
|
||||||
# Install a configuration snippet to prevent the automatic creation of
|
# Install a configuration snippet to prevent the automatic creation of
|
||||||
# "Wired connection #" DHCP connections for Ethernet interfaces
|
# "Wired connection #" DHCP connections for Ethernet interfaces
|
||||||
inst_simple "$moddir"/initrd-no-auto-default.conf /usr/lib/NetworkManager/conf.d/
|
inst_simple "$moddir"/initrd-no-auto-default.conf /usr/lib/NetworkManager/conf.d/
|
||||||
|
|
|
@ -16,6 +16,20 @@ if getargbool 0 rd.debug -d -y rdinitdebug -d -y rdnetdebug; then
|
||||||
echo '[logging]'
|
echo '[logging]'
|
||||||
echo 'level=TRACE'
|
echo 'level=TRACE'
|
||||||
) > /run/NetworkManager/conf.d/initrd-logging.conf
|
) > /run/NetworkManager/conf.d/initrd-logging.conf
|
||||||
|
|
||||||
|
if [ -n "$DRACUT_SYSTEMD" ]; then
|
||||||
|
# Enable tty output if a usable console is found
|
||||||
|
# See https://github.com/coreos/fedora-coreos-tracker/issues/943
|
||||||
|
# shellcheck disable=SC2217
|
||||||
|
if [ -w /dev/console ] && (echo < /dev/console) > /dev/null 2> /dev/null; then
|
||||||
|
mkdir -p /run/systemd/system/nm-initrd.service.d
|
||||||
|
cat << EOF > /run/systemd/system/nm-initrd.service.d/tty-output.conf
|
||||||
|
[Service]
|
||||||
|
StandardOutput=tty
|
||||||
|
EOF
|
||||||
|
systemctl --no-block daemon-reload
|
||||||
|
fi
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
nm_generate_connections
|
nm_generate_connections
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
[Unit]
|
[Unit]
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
Wants=systemd-udev-settle.service
|
Wants=systemd-udev-trigger.service
|
||||||
After=systemd-udev-settle.service
|
After=systemd-udev-trigger.service
|
||||||
After=dracut-cmdline.service
|
After=dracut-cmdline.service
|
||||||
|
Wants=network.target
|
||||||
Before=network.target
|
Before=network.target
|
||||||
ConditionPathExists=/run/NetworkManager/initrd/neednet
|
ConditionPathExists=/run/NetworkManager/initrd/neednet
|
||||||
ConditionPathExistsGlob=|/usr/lib/NetworkManager/system-connections/*
|
ConditionPathExistsGlob=|/usr/lib/NetworkManager/system-connections/*
|
||||||
|
@ -16,7 +17,9 @@ BusName=org.freedesktop.NetworkManager
|
||||||
ExecReload=/usr/bin/busctl call org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager Reload u 0
|
ExecReload=/usr/bin/busctl call org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager Reload u 0
|
||||||
ExecStart=/usr/sbin/NetworkManager --debug
|
ExecStart=/usr/sbin/NetworkManager --debug
|
||||||
KillMode=process
|
KillMode=process
|
||||||
StandardOutput=tty
|
# The following gets changed to StandardOutput=tty by nm-config.sh
|
||||||
|
# when debug is enabled and a usable console is found.
|
||||||
|
StandardOutput=null
|
||||||
Environment=NM_CONFIG_ENABLE_TAG=initrd
|
Environment=NM_CONFIG_ENABLE_TAG=initrd
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
ProtectSystem=true
|
ProtectSystem=true
|
||||||
|
|
|
@ -28,3 +28,7 @@ nm_generate_connections() {
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nm_reload_connections() {
|
||||||
|
[ -n "$DRACUT_SYSTEMD" ] && systemctl is-active nm-initrd.service && nmcli connection reload
|
||||||
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
|
|
||||||
type source_hook > /dev/null 2>&1 || . /lib/dracut-lib.sh
|
type source_hook > /dev/null 2>&1 || . /lib/dracut-lib.sh
|
||||||
|
|
||||||
|
@ -24,11 +24,47 @@ if [ -s /run/NetworkManager/initrd/hostname ]; then
|
||||||
cat /run/NetworkManager/initrd/hostname > /proc/sys/kernel/hostname
|
cat /run/NetworkManager/initrd/hostname > /proc/sys/kernel/hostname
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
kf_get_string() {
|
||||||
|
# NetworkManager writes keyfiles (glib's GKeyFile API). Have a naive
|
||||||
|
# parser for it.
|
||||||
|
#
|
||||||
|
# But GKeyFile will backslash escape certain keys (\s, \t, \n) but also
|
||||||
|
# escape backslash. As an approximation, interpret the string with printf's
|
||||||
|
# '%b'.
|
||||||
|
#
|
||||||
|
# This is supposed to mimic g_key_file_get_string() (poorly).
|
||||||
|
|
||||||
|
v1="$(sed -n "s/^$1=/=/p" | sed '1!d')"
|
||||||
|
test "$v1" = "${v1#=}" && return 1
|
||||||
|
printf "%b" "${v1#=}"
|
||||||
|
}
|
||||||
|
|
||||||
|
kf_unescape() {
|
||||||
|
# Another layer of unescaping. While values in GKeyFile format
|
||||||
|
# are backslash escaped, the original strings (which are in no
|
||||||
|
# defined encoding) are backslash escaped too to be valid UTF-8.
|
||||||
|
# This will undo the second layer of escaping to give binary "strings".
|
||||||
|
printf "%b" "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
kf_parse() {
|
||||||
|
v3="$(kf_get_string "$1")" || return 1
|
||||||
|
v3="$(kf_unescape "$v3")"
|
||||||
|
printf '%s=%s\n' "$2" "$(printf '%q' "$v3")"
|
||||||
|
}
|
||||||
|
|
||||||
|
dhcpopts_create() {
|
||||||
|
kf_parse root-path new_root_path < "$1"
|
||||||
|
kf_parse next-server new_next_server < "$1"
|
||||||
|
kf_parse dhcp-bootfile filename < "$1"
|
||||||
|
}
|
||||||
|
|
||||||
for _i in /sys/class/net/*; do
|
for _i in /sys/class/net/*; do
|
||||||
state=/run/NetworkManager/devices/$(cat "$_i"/ifindex)
|
[ -d "$_i" ] || continue
|
||||||
grep -q connection-uuid= "$state" 2> /dev/null || continue
|
state="/run/NetworkManager/devices/$(cat "$_i"/ifindex)"
|
||||||
ifname=${_i##*/}
|
grep -q '^connection-uuid=' "$state" 2> /dev/null || continue
|
||||||
sed -n 's/root-path/new_root_path/p;s/next-server/new_next_server/p' < "$state" > /tmp/dhclient."$ifname".dhcpopts
|
ifname="${_i##*/}"
|
||||||
|
dhcpopts_create "$state" > /tmp/dhclient."$ifname".dhcpopts
|
||||||
source_hook initqueue/online "$ifname"
|
source_hook initqueue/online "$ifname"
|
||||||
/sbin/netroot "$ifname"
|
/sbin/netroot "$ifname"
|
||||||
done
|
done
|
||||||
|
|
|
@ -33,15 +33,23 @@ install() {
|
||||||
|
|
||||||
inst_dir /etc/wicked/extensions
|
inst_dir /etc/wicked/extensions
|
||||||
inst_dir /usr/share/wicked/schema
|
inst_dir /usr/share/wicked/schema
|
||||||
|
if [ -d /usr/lib/wicked/bin ]; then
|
||||||
inst_dir /usr/lib/wicked/bin
|
inst_dir /usr/lib/wicked/bin
|
||||||
|
inst_multiple "/usr/lib/wicked/bin/*"
|
||||||
|
elif [ -d /usr/libexec/wicked/bin ]; then
|
||||||
|
inst_dir /usr/libexec/wicked/bin
|
||||||
|
inst_multiple "/usr/libexec/wicked/bin/*"
|
||||||
|
fi
|
||||||
inst_dir /var/lib/wicked
|
inst_dir /var/lib/wicked
|
||||||
|
|
||||||
inst_multiple "/etc/wicked/*.xml"
|
inst_multiple "/etc/wicked/*.xml"
|
||||||
inst_multiple "/etc/wicked/extensions/*"
|
inst_multiple "/etc/wicked/extensions/*"
|
||||||
|
if [ -f /etc/dbus-1/system.d/org.opensuse.Network.conf ]; then
|
||||||
inst_multiple "/etc/dbus-1/system.d/org.opensuse.Network*"
|
inst_multiple "/etc/dbus-1/system.d/org.opensuse.Network*"
|
||||||
|
elif [ -f /usr/share/dbus-1/system.d/org.opensuse.Network.conf ]; then
|
||||||
|
inst_multiple "/usr/share/dbus-1/system.d/org.opensuse.Network*"
|
||||||
|
fi
|
||||||
inst_multiple "/usr/share/wicked/schema/*"
|
inst_multiple "/usr/share/wicked/schema/*"
|
||||||
inst_multiple "/usr/lib/wicked/bin/*"
|
|
||||||
inst_multiple "/usr/libexec/wicked/bin/*"
|
|
||||||
inst_multiple "/usr/sbin/wicked*"
|
inst_multiple "/usr/sbin/wicked*"
|
||||||
|
|
||||||
wicked_units=(
|
wicked_units=(
|
||||||
|
|
|
@ -17,9 +17,9 @@ depends() {
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ -z "$network_handler" ]; then
|
if [ -z "$network_handler" ]; then
|
||||||
if [[ -x $dracutsysrootdir$systemdsystemunitdir/wicked.service ]]; then
|
if [[ -e $dracutsysrootdir$systemdsystemunitdir/wicked.service ]]; then
|
||||||
network_handler="network-wicked"
|
network_handler="network-wicked"
|
||||||
elif [[ -x $dracutsysrootdir/usr/libexec/nm-initrd-generator ]]; then
|
elif [[ -x $dracutsysrootdir/usr/libexec/nm-initrd-generator ]] || [[ -x $dracutsysrootdir/usr/lib/nm-initrd-generator ]]; then
|
||||||
network_handler="network-manager"
|
network_handler="network-manager"
|
||||||
elif [[ -x $dracutsysrootdir$systemdutildir/systemd-networkd ]]; then
|
elif [[ -x $dracutsysrootdir$systemdutildir/systemd-networkd ]]; then
|
||||||
network_handler="systemd-networkd"
|
network_handler="systemd-networkd"
|
||||||
|
|
|
@ -295,7 +295,7 @@ ibft_to_cmdline() {
|
||||||
# skip not assigned ip adresses
|
# skip not assigned ip adresses
|
||||||
[ "$ip" = "0.0.0.0" ] && continue
|
[ "$ip" = "0.0.0.0" ] && continue
|
||||||
[ -e "${iface}"/gateway ] && read -r gw < "${iface}"/gateway
|
[ -e "${iface}"/gateway ] && read -r gw < "${iface}"/gateway
|
||||||
[ "$gateway" = "0.0.0.0" ] && unset gateway
|
[ "$gw" = "0.0.0.0" ] && unset gw
|
||||||
[ -e "${iface}"/subnet-mask ] && read -r mask < "${iface}"/subnet-mask
|
[ -e "${iface}"/subnet-mask ] && read -r mask < "${iface}"/subnet-mask
|
||||||
[ -e "${iface}"/prefix-len ] && read -r prefix < "${iface}"/prefix-len
|
[ -e "${iface}"/prefix-len ] && read -r prefix < "${iface}"/prefix-len
|
||||||
[ -e "${iface}"/primary-dns ] && read -r dns1 < "${iface}"/primary-dns
|
[ -e "${iface}"/primary-dns ] && read -r dns1 < "${iface}"/primary-dns
|
||||||
|
|
|
@ -103,6 +103,11 @@ interface_bind() {
|
||||||
local _netif="$1"
|
local _netif="$1"
|
||||||
local _macaddr="$2"
|
local _macaddr="$2"
|
||||||
|
|
||||||
|
if [ ! -e "/sys/class/net/$_netif" ]; then
|
||||||
|
derror "Cannot find network interface '$_netif'!"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
# see, if we can bind it to some hw parms
|
# see, if we can bind it to some hw parms
|
||||||
if hw_bind "$_netif" "$_macaddr"; then
|
if hw_bind "$_netif" "$_macaddr"; then
|
||||||
# only print out DEVICE, if it's user assigned
|
# only print out DEVICE, if it's user assigned
|
||||||
|
|
|
@ -15,10 +15,10 @@ depends() {
|
||||||
|
|
||||||
# called by dracut
|
# called by dracut
|
||||||
install() {
|
install() {
|
||||||
local _dir _crt _found _lib _nssckbi _p11roots _p11root
|
local _dir _crt _crts _found _lib _nssckbi _p11roots _p11root
|
||||||
inst_simple "$moddir/url-lib.sh" "/lib/url-lib.sh"
|
inst_simple "$moddir/url-lib.sh" "/lib/url-lib.sh"
|
||||||
inst_multiple -o ctorrent
|
inst_multiple -o ctorrent
|
||||||
inst_multiple curl
|
inst_multiple curl sed
|
||||||
if curl --version | grep -qi '\bNSS\b'; then
|
if curl --version | grep -qi '\bNSS\b'; then
|
||||||
# also install libs for curl https
|
# also install libs for curl https
|
||||||
inst_libdir_file "libnsspem.so*"
|
inst_libdir_file "libnsspem.so*"
|
||||||
|
@ -29,21 +29,28 @@ install() {
|
||||||
|
|
||||||
for _dir in $libdirs; do
|
for _dir in $libdirs; do
|
||||||
[[ -d $dracutsysrootdir$_dir ]] || continue
|
[[ -d $dracutsysrootdir$_dir ]] || continue
|
||||||
for _lib in "$dracutsysrootdir$_dir"/libcurl.so.*; do
|
for _lib in "$dracutsysrootdir$_dir"/libcurl.so.* "$dracutsysrootdir$_dir"/libcrypto.so.*; do
|
||||||
[[ -e $_lib ]] || continue
|
[[ -e $_lib ]] || continue
|
||||||
if ! [[ $_nssckbi ]]; then
|
if ! [[ $_nssckbi ]]; then
|
||||||
read -r -d '' _nssckbi < <(grep -F --binary-files=text -z libnssckbi "$_lib")
|
read -r -d '' _nssckbi < <(grep -F --binary-files=text -z libnssckbi "$_lib")
|
||||||
fi
|
fi
|
||||||
read -r -d '' _crt < <(grep -F --binary-files=text -z .crt "$_lib")
|
read -r -d '' _crt < <(grep -E --binary-files=text -z "\.(pem|crt)" "$_lib" | sed 's/\x0//g')
|
||||||
[[ $_crt ]] || continue
|
[[ $_crt ]] || continue
|
||||||
[[ $_crt == /*/* ]] || continue
|
[[ $_crt == /*/* ]] || continue
|
||||||
|
if [[ -e $_crt ]]; then
|
||||||
|
_crts="$_crts $_crt"
|
||||||
|
_found=1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
if [[ $_found ]] && [[ -n $_crts ]]; then
|
||||||
|
for _crt in $_crts; do
|
||||||
if ! inst "${_crt#$dracutsysrootdir}"; then
|
if ! inst "${_crt#$dracutsysrootdir}"; then
|
||||||
dwarn "Couldn't install '$_crt' SSL CA cert bundle; HTTPS might not work."
|
dwarn "Couldn't install '$_crt' SSL CA cert bundle; HTTPS might not work."
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
_found=1
|
|
||||||
done
|
|
||||||
done
|
done
|
||||||
|
fi
|
||||||
# If we found no cert bundle files referenced in libcurl but we
|
# If we found no cert bundle files referenced in libcurl but we
|
||||||
# *did* find a mention of libnssckbi (checked above), install it.
|
# *did* find a mention of libnssckbi (checked above), install it.
|
||||||
# If its truly NSS libnssckbi, it includes its own trust bundle,
|
# If its truly NSS libnssckbi, it includes its own trust bundle,
|
||||||
|
|
|
@ -159,7 +159,7 @@ nfs_fetch_url() {
|
||||||
mntdir="$(mkuniqdir /run nfs_mnt)"
|
mntdir="$(mkuniqdir /run nfs_mnt)"
|
||||||
mount_nfs "$nfs:$server:$filepath${options:+:$options}" "$mntdir"
|
mount_nfs "$nfs:$server:$filepath${options:+:$options}" "$mntdir"
|
||||||
# lazy unmount during pre-pivot hook
|
# lazy unmount during pre-pivot hook
|
||||||
inst_hook --hook pre-pivot --name 99url-lib-umount-nfs umount -l -- "$mntdir"
|
inst_hook --hook pre-pivot --name 99url-lib-umount-nfs-"$(basename "$mntdir")" umount -l -- "$mntdir"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$outloc" ]; then
|
if [ -z "$outloc" ]; then
|
||||||
|
|
|
@ -29,6 +29,8 @@ installkernel() {
|
||||||
# as we could e.g. be in the installer; nokmsboot boot parameter will disable
|
# as we could e.g. be in the installer; nokmsboot boot parameter will disable
|
||||||
# loading of the driver if needed
|
# loading of the driver if needed
|
||||||
if [[ $hostonly ]]; then
|
if [[ $hostonly ]]; then
|
||||||
|
local i modlink modname
|
||||||
|
|
||||||
for i in /sys/bus/{pci/devices,platform/devices,virtio/devices,soc/devices/soc?}/*/modalias; do
|
for i in /sys/bus/{pci/devices,platform/devices,virtio/devices,soc/devices/soc?}/*/modalias; do
|
||||||
[[ -e $i ]] || continue
|
[[ -e $i ]] || continue
|
||||||
[[ -n $(< "$i") ]] || continue
|
[[ -n $(< "$i") ]] || continue
|
||||||
|
@ -39,7 +41,19 @@ installkernel() {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
# if there is a privacy screen then its driver must be loaded before the
|
||||||
|
# kms driver will bind, otherwise its probe() will return -EPROBE_DEFER
|
||||||
|
# note privacy screens always register, even with e.g. nokmsboot
|
||||||
|
for i in /sys/class/drm/privacy_screen-*/device/driver/module; do
|
||||||
|
[[ -L $i ]] || continue
|
||||||
|
modlink=$(readlink "$i")
|
||||||
|
modname=$(basename "$modlink")
|
||||||
|
instmods "$modname"
|
||||||
|
done
|
||||||
else
|
else
|
||||||
dracut_instmods -o -s "drm_crtc_init|drm_dev_register|drm_encoder_init" "=drivers/gpu/drm" "=drivers/staging"
|
dracut_instmods -o -s "drm_crtc_init|drm_dev_register|drm_encoder_init" "=drivers/gpu/drm" "=drivers/staging"
|
||||||
|
# also include privacy screen providers (see above comment)
|
||||||
|
# atm all providers live under drivers/platform/x86
|
||||||
|
dracut_instmods -o -s "drm_privacy_screen_register" "=drivers/platform/x86"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,6 +56,7 @@ install() {
|
||||||
local -a var_lib_files
|
local -a var_lib_files
|
||||||
|
|
||||||
inst_multiple \
|
inst_multiple \
|
||||||
|
"$dbussystem"/bluetooth.conf \
|
||||||
"${systemdsystemunitdir}/bluetooth.target" \
|
"${systemdsystemunitdir}/bluetooth.target" \
|
||||||
"${systemdsystemunitdir}/bluetooth.service" \
|
"${systemdsystemunitdir}/bluetooth.service" \
|
||||||
bluetoothctl
|
bluetoothctl
|
||||||
|
@ -67,9 +68,9 @@ install() {
|
||||||
if [[ $hostonly ]]; then
|
if [[ $hostonly ]]; then
|
||||||
var_lib_files=("$dracutsysrootdir"/var/lib/bluetooth/**)
|
var_lib_files=("$dracutsysrootdir"/var/lib/bluetooth/**)
|
||||||
|
|
||||||
inst_multiple \
|
inst_multiple -o \
|
||||||
/etc/bluetooth/main.conf \
|
/etc/bluetooth/main.conf \
|
||||||
/etc/dbus-1/system.d/bluetooth.conf \
|
"$dbussystemconfdir"/bluetooth.conf \
|
||||||
"${var_lib_files[@]#"$dracutsysrootdir"}"
|
"${var_lib_files[@]#"$dracutsysrootdir"}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -34,9 +34,10 @@ fi
|
||||||
IFACES="$IFACES $DEVICE"
|
IFACES="$IFACES $DEVICE"
|
||||||
echo "$IFACES" >> /tmp/net.ifaces
|
echo "$IFACES" >> /tmp/net.ifaces
|
||||||
|
|
||||||
if [ -x /usr/libexec/nm-initrd-generator ]; then
|
if [ -x /usr/libexec/nm-initrd-generator ] || [ -x /usr/lib/nm-initrd-generator ]; then
|
||||||
type nm_generate_connections > /dev/null 2>&1 || . /lib/nm-lib.sh
|
type nm_generate_connections > /dev/null 2>&1 || . /lib/nm-lib.sh
|
||||||
nm_generate_connections
|
nm_generate_connections
|
||||||
|
nm_reload_connections
|
||||||
else
|
else
|
||||||
exec ifup "$DEVICE"
|
exec ifup "$DEVICE"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -27,7 +27,7 @@ install() {
|
||||||
inst_script "$moddir/cmsifup.sh" /sbin/cmsifup
|
inst_script "$moddir/cmsifup.sh" /sbin/cmsifup
|
||||||
# shellcheck disable=SC2046
|
# shellcheck disable=SC2046
|
||||||
inst_multiple /etc/cmsfs-fuse/filetypes.conf /etc/udev/rules.d/99-fuse.rules /etc/fuse.conf \
|
inst_multiple /etc/cmsfs-fuse/filetypes.conf /etc/udev/rules.d/99-fuse.rules /etc/fuse.conf \
|
||||||
cmsfs-fuse fusermount ulockmgr_server bash insmod rmmod cat normalize_dasd_arg sed \
|
cmsfs-fuse fusermount bash insmod rmmod cat normalize_dasd_arg sed \
|
||||||
$(rpm -ql s390utils-base) awk getopt
|
$(rpm -ql s390utils-base) awk getopt
|
||||||
|
|
||||||
inst_libdir_file "gconv/*"
|
inst_libdir_file "gconv/*"
|
||||||
|
|
|
@ -138,8 +138,9 @@ unset allowdiscards
|
||||||
ask_passphrase=1
|
ask_passphrase=1
|
||||||
|
|
||||||
if [ -n "$luksfile" -a "$luksfile" != "none" -a -e "$luksfile" ]; then
|
if [ -n "$luksfile" -a "$luksfile" != "none" -a -e "$luksfile" ]; then
|
||||||
|
# shellcheck disable=SC2086
|
||||||
if readkey "$luksfile" / "$device" \
|
if readkey "$luksfile" / "$device" \
|
||||||
| cryptsetup -d - "$cryptsetupopts" luksOpen "$device" "$luksname"; then
|
| cryptsetup -d - $cryptsetupopts luksOpen "$device" "$luksname"; then
|
||||||
ask_passphrase=0
|
ask_passphrase=0
|
||||||
fi
|
fi
|
||||||
elif [ "$is_keysource" -ne 0 ]; then
|
elif [ "$is_keysource" -ne 0 ]; then
|
||||||
|
@ -164,8 +165,9 @@ else
|
||||||
unset tmp
|
unset tmp
|
||||||
|
|
||||||
info "Using '$keypath' on '$keydev'"
|
info "Using '$keypath' on '$keydev'"
|
||||||
|
# shellcheck disable=SC2086
|
||||||
readkey "$keypath" "$keydev" "$device" \
|
readkey "$keypath" "$keydev" "$device" \
|
||||||
| cryptsetup -d - "$cryptsetupopts" luksOpen "$device" "$luksname" \
|
| cryptsetup -d - $cryptsetupopts luksOpen "$device" "$luksname" \
|
||||||
&& ask_passphrase=0
|
&& ask_passphrase=0
|
||||||
unset keypath keydev
|
unset keypath keydev
|
||||||
break
|
break
|
||||||
|
|
|
@ -18,7 +18,20 @@ check() {
|
||||||
|
|
||||||
# called by dracut
|
# called by dracut
|
||||||
depends() {
|
depends() {
|
||||||
echo dm rootfs-block
|
local deps
|
||||||
|
deps="dm rootfs-block"
|
||||||
|
if [[ $hostonly && -f "$dracutsysrootdir"/etc/crypttab ]]; then
|
||||||
|
if grep -q -e "fido2-device=" -e "fido2-cid=" "$dracutsysrootdir"/etc/crypttab; then
|
||||||
|
deps+=" fido2"
|
||||||
|
fi
|
||||||
|
if grep -q "pkcs11-uri" "$dracutsysrootdir"/etc/crypttab; then
|
||||||
|
deps+=" pkcs11"
|
||||||
|
fi
|
||||||
|
if grep -q "tpm2-device=" "$dracutsysrootdir"/etc/crypttab; then
|
||||||
|
deps+=" tpm2-tss"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo "$deps"
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ depends() {
|
||||||
}
|
}
|
||||||
|
|
||||||
install() {
|
install() {
|
||||||
inst_multiple fusermount ulockmgr_server mount.fuse ntfs-3g
|
inst_multiple fusermount mount.fuse ntfs-3g
|
||||||
dracut_need_initqueue
|
dracut_need_initqueue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -129,11 +129,9 @@ do_live_overlay() {
|
||||||
# need to know where to look for the overlay
|
# need to know where to look for the overlay
|
||||||
if [ -z "$setup" -a -n "$devspec" -a -n "$pathspec" -a -n "$overlay" ]; then
|
if [ -z "$setup" -a -n "$devspec" -a -n "$pathspec" -a -n "$overlay" ]; then
|
||||||
mkdir -m 0755 -p /run/initramfs/overlayfs
|
mkdir -m 0755 -p /run/initramfs/overlayfs
|
||||||
opt=''
|
|
||||||
[ -n "$readonly_overlay" ] && opt=-r
|
|
||||||
mount -n -t auto "$devspec" /run/initramfs/overlayfs || :
|
mount -n -t auto "$devspec" /run/initramfs/overlayfs || :
|
||||||
if [ -f /run/initramfs/overlayfs$pathspec -a -w /run/initramfs/overlayfs$pathspec ]; then
|
if [ -f /run/initramfs/overlayfs$pathspec -a -w /run/initramfs/overlayfs$pathspec ]; then
|
||||||
OVERLAY_LOOPDEV=$(losetup -f --show $opt /run/initramfs/overlayfs$pathspec)
|
OVERLAY_LOOPDEV=$(losetup -f --show ${readonly_overlay:+-r} /run/initramfs/overlayfs$pathspec)
|
||||||
over=$OVERLAY_LOOPDEV
|
over=$OVERLAY_LOOPDEV
|
||||||
umount -l /run/initramfs/overlayfs || :
|
umount -l /run/initramfs/overlayfs || :
|
||||||
oltype=$(det_img_fs "$OVERLAY_LOOPDEV")
|
oltype=$(det_img_fs "$OVERLAY_LOOPDEV")
|
||||||
|
@ -148,11 +146,11 @@ do_live_overlay() {
|
||||||
fi
|
fi
|
||||||
setup="yes"
|
setup="yes"
|
||||||
else
|
else
|
||||||
mount -n -t "$oltype" $opt "$OVERLAY_LOOPDEV" /run/initramfs/overlayfs
|
mount -n -t "$oltype" ${readonly_overlay:+-r} "$OVERLAY_LOOPDEV" /run/initramfs/overlayfs
|
||||||
if [ -d /run/initramfs/overlayfs/overlayfs ] \
|
if [ -d /run/initramfs/overlayfs/overlayfs ] \
|
||||||
&& [ -d /run/initramfs/overlayfs/ovlwork ]; then
|
&& [ -d /run/initramfs/overlayfs/ovlwork ]; then
|
||||||
ln -s /run/initramfs/overlayfs/overlayfs /run/overlayfs$opt
|
ln -s /run/initramfs/overlayfs/overlayfs /run/overlayfs${readonly_overlay:+-r}
|
||||||
ln -s /run/initramfs/overlayfs/ovlwork /run/ovlwork$opt
|
ln -s /run/initramfs/overlayfs/ovlwork /run/ovlwork${readonly_overlay:+-r}
|
||||||
if [ -z "$overlayfs" ] && [ -n "$DRACUT_SYSTEMD" ]; then
|
if [ -z "$overlayfs" ] && [ -n "$DRACUT_SYSTEMD" ]; then
|
||||||
reloadsysrootmountunit=":>/xor_overlayfs;"
|
reloadsysrootmountunit=":>/xor_overlayfs;"
|
||||||
fi
|
fi
|
||||||
|
@ -162,8 +160,8 @@ do_live_overlay() {
|
||||||
fi
|
fi
|
||||||
elif [ -d /run/initramfs/overlayfs$pathspec ] \
|
elif [ -d /run/initramfs/overlayfs$pathspec ] \
|
||||||
&& [ -d /run/initramfs/overlayfs$pathspec/../ovlwork ]; then
|
&& [ -d /run/initramfs/overlayfs$pathspec/../ovlwork ]; then
|
||||||
ln -s /run/initramfs/overlayfs$pathspec /run/overlayfs$opt
|
ln -s /run/initramfs/overlayfs$pathspec /run/overlayfs${readonly_overlay:+-r}
|
||||||
ln -s /run/initramfs/overlayfs$pathspec/../ovlwork /run/ovlwork$opt
|
ln -s /run/initramfs/overlayfs$pathspec/../ovlwork /run/ovlwork${readonly_overlay:+-r}
|
||||||
if [ -z "$overlayfs" ] && [ -n "$DRACUT_SYSTEMD" ]; then
|
if [ -z "$overlayfs" ] && [ -n "$DRACUT_SYSTEMD" ]; then
|
||||||
reloadsysrootmountunit=":>/xor_overlayfs;"
|
reloadsysrootmountunit=":>/xor_overlayfs;"
|
||||||
fi
|
fi
|
||||||
|
@ -212,8 +210,6 @@ do_live_overlay() {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [ -n "$overlayfs" ]; then
|
if [ -n "$overlayfs" ]; then
|
||||||
mkdir -m 0755 -p /run/overlayfs
|
|
||||||
mkdir -m 0755 -p /run/ovlwork
|
|
||||||
if [ -n "$readonly_overlay" ] && ! [ -h /run/overlayfs-r ]; then
|
if [ -n "$readonly_overlay" ] && ! [ -h /run/overlayfs-r ]; then
|
||||||
info "No persistent overlay found."
|
info "No persistent overlay found."
|
||||||
unset -v readonly_overlay
|
unset -v readonly_overlay
|
||||||
|
@ -336,13 +332,13 @@ if [ -n "$FSIMG" ]; then
|
||||||
fi
|
fi
|
||||||
FSIMG=/run/initramfs/fsimg/rootfs.img
|
FSIMG=/run/initramfs/fsimg/rootfs.img
|
||||||
fi
|
fi
|
||||||
opt=-r
|
|
||||||
# For writable DM images...
|
# For writable DM images...
|
||||||
|
readonly_base=1
|
||||||
if [ -z "$SQUASHED" -a -n "$live_ram" -a -z "$overlayfs" ] \
|
if [ -z "$SQUASHED" -a -n "$live_ram" -a -z "$overlayfs" ] \
|
||||||
|| [ -n "$writable_fsimg" ] \
|
|| [ -n "$writable_fsimg" ] \
|
||||||
|| [ "$overlay" = none -o "$overlay" = None -o "$overlay" = NONE ]; then
|
|| [ "$overlay" = none -o "$overlay" = None -o "$overlay" = NONE ]; then
|
||||||
if [ -z "$readonly_overlay" ]; then
|
if [ -z "$readonly_overlay" ]; then
|
||||||
opt=''
|
unset readonly_base
|
||||||
setup=rw
|
setup=rw
|
||||||
else
|
else
|
||||||
setup=yes
|
setup=yes
|
||||||
|
@ -351,7 +347,7 @@ if [ -n "$FSIMG" ]; then
|
||||||
if [ "$FSIMG" = "$SQUASHED" ]; then
|
if [ "$FSIMG" = "$SQUASHED" ]; then
|
||||||
BASE_LOOPDEV=$SQUASHED_LOOPDEV
|
BASE_LOOPDEV=$SQUASHED_LOOPDEV
|
||||||
else
|
else
|
||||||
BASE_LOOPDEV=$(losetup -f --show "$opt" $FSIMG)
|
BASE_LOOPDEV=$(losetup -f --show ${readonly_base:+-r} $FSIMG)
|
||||||
sz=$(blockdev --getsz "$BASE_LOOPDEV")
|
sz=$(blockdev --getsz "$BASE_LOOPDEV")
|
||||||
fi
|
fi
|
||||||
if [ "$setup" = rw ]; then
|
if [ "$setup" = rw ]; then
|
||||||
|
@ -370,7 +366,14 @@ fi
|
||||||
ROOTFLAGS="$(getarg rootflags)"
|
ROOTFLAGS="$(getarg rootflags)"
|
||||||
|
|
||||||
if [ -n "$overlayfs" ]; then
|
if [ -n "$overlayfs" ]; then
|
||||||
|
if [ -n "$FSIMG" ]; then
|
||||||
mkdir -m 0755 -p /run/rootfsbase
|
mkdir -m 0755 -p /run/rootfsbase
|
||||||
|
mount -r $FSIMG /run/rootfsbase
|
||||||
|
else
|
||||||
|
ln -sf /run/initramfs/live /run/rootfsbase
|
||||||
|
fi
|
||||||
|
mkdir -m 0755 -p /run/overlayfs
|
||||||
|
mkdir -m 0755 -p /run/ovlwork
|
||||||
if [ -n "$reset_overlay" ] && [ -h /run/overlayfs ]; then
|
if [ -n "$reset_overlay" ] && [ -h /run/overlayfs ]; then
|
||||||
ovlfs=$(readlink /run/overlayfs)
|
ovlfs=$(readlink /run/overlayfs)
|
||||||
info "Resetting the OverlayFS overlay directory."
|
info "Resetting the OverlayFS overlay directory."
|
||||||
|
@ -381,7 +384,6 @@ if [ -n "$overlayfs" ]; then
|
||||||
else
|
else
|
||||||
ovlfs=lowerdir=/run/rootfsbase
|
ovlfs=lowerdir=/run/rootfsbase
|
||||||
fi
|
fi
|
||||||
mount -r $FSIMG /run/rootfsbase
|
|
||||||
if [ -z "$DRACUT_SYSTEMD" ]; then
|
if [ -z "$DRACUT_SYSTEMD" ]; then
|
||||||
printf 'mount -t overlay LiveOS_rootfs -o%s,%s %s\n' "$ROOTFLAGS" \
|
printf 'mount -t overlay LiveOS_rootfs -o%s,%s %s\n' "$ROOTFLAGS" \
|
||||||
"$ovlfs",upperdir=/run/overlayfs,workdir=/run/ovlwork \
|
"$ovlfs",upperdir=/run/overlayfs,workdir=/run/ovlwork \
|
||||||
|
|
|
@ -22,7 +22,7 @@ installkernel() {
|
||||||
|
|
||||||
# called by dracut
|
# called by dracut
|
||||||
install() {
|
install() {
|
||||||
inst_multiple umount dmsetup blkid dd losetup blockdev find
|
inst_multiple umount dmsetup blkid dd losetup blockdev find rmdir
|
||||||
inst_multiple -o checkisomd5
|
inst_multiple -o checkisomd5
|
||||||
inst_hook cmdline 30 "$moddir/parse-dmsquash-live.sh"
|
inst_hook cmdline 30 "$moddir/parse-dmsquash-live.sh"
|
||||||
inst_hook cmdline 31 "$moddir/parse-iso-scan.sh"
|
inst_hook cmdline 31 "$moddir/parse-iso-scan.sh"
|
||||||
|
@ -31,9 +31,11 @@ install() {
|
||||||
inst_hook pre-pivot 20 "$moddir/apply-live-updates.sh"
|
inst_hook pre-pivot 20 "$moddir/apply-live-updates.sh"
|
||||||
inst_script "$moddir/dmsquash-live-root.sh" "/sbin/dmsquash-live-root"
|
inst_script "$moddir/dmsquash-live-root.sh" "/sbin/dmsquash-live-root"
|
||||||
inst_script "$moddir/iso-scan.sh" "/sbin/iso-scan"
|
inst_script "$moddir/iso-scan.sh" "/sbin/iso-scan"
|
||||||
|
if dracut_module_included "systemd-initrd"; then
|
||||||
inst_script "$moddir/dmsquash-generator.sh" "$systemdutildir"/system-generators/dracut-dmsquash-generator
|
inst_script "$moddir/dmsquash-generator.sh" "$systemdutildir"/system-generators/dracut-dmsquash-generator
|
||||||
|
inst_simple "$moddir/checkisomd5@.service" "/etc/systemd/system/checkisomd5@.service"
|
||||||
|
fi
|
||||||
# should probably just be generally included
|
# should probably just be generally included
|
||||||
inst_rules 60-cdrom_id.rules
|
inst_rules 60-cdrom_id.rules
|
||||||
inst_simple "$moddir/checkisomd5@.service" "/etc/systemd/system/checkisomd5@.service"
|
|
||||||
dracut_need_initqueue
|
dracut_need_initqueue
|
||||||
}
|
}
|
||||||
|
|
|
@ -173,7 +173,7 @@ installkernel() {
|
||||||
|
|
||||||
((${#pathlist[@]} > 0)) || return 0
|
((${#pathlist[@]} > 0)) || return 0
|
||||||
|
|
||||||
printf "^%s\.ko(\.gz|\.bz2|\.xz)?:\n" "${pathlist[@]}" \
|
printf "^%s\.ko(\.gz|\.bz2|\.xz|\.zst)?:\n" "${pathlist[@]}" \
|
||||||
| (LANG=C grep -E -o -f - -- "$depmod_modules_dep" || exit 0) \
|
| (LANG=C grep -E -o -f - -- "$depmod_modules_dep" || exit 0) \
|
||||||
| tr -d ':' \
|
| tr -d ':' \
|
||||||
| (
|
| (
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
# called by dracut
|
# called by dracut
|
||||||
installkernel() {
|
installkernel() {
|
||||||
local _blockfuncs='ahci_platform_get_resources|ata_scsi_ioctl|scsi_add_host|blk_cleanup_queue|register_mtd_blktrans|scsi_esp_register|register_virtio_device|usb_stor_disconnect|mmc_add_host|sdhci_add_host|scsi_add_host_with_dma'
|
local _blockfuncs='ahci_platform_get_resources|ata_scsi_ioctl|scsi_add_host|blk_cleanup_queue|register_mtd_blktrans|scsi_esp_register|register_virtio_device|usb_stor_disconnect|mmc_add_host|sdhci_add_host|scsi_add_host_with_dma|blk_mq_alloc_disk|blk_cleanup_disk'
|
||||||
local -A _hostonly_drvs
|
local -A _hostonly_drvs
|
||||||
|
|
||||||
find_kernel_modules_external() {
|
find_kernel_modules_external() {
|
||||||
|
@ -16,9 +16,15 @@ installkernel() {
|
||||||
}
|
}
|
||||||
|
|
||||||
record_block_dev_drv() {
|
record_block_dev_drv() {
|
||||||
|
|
||||||
for _mod in $(get_dev_module /dev/block/"$1"); do
|
for _mod in $(get_dev_module /dev/block/"$1"); do
|
||||||
_hostonly_drvs["$_mod"]="$_mod"
|
_hostonly_drvs["$_mod"]="$_mod"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
for _mod in $(get_blockdev_drv_through_sys "/sys/dev/block/$1"); do
|
||||||
|
_hostonly_drvs["$_mod"]="$_mod"
|
||||||
|
done
|
||||||
|
|
||||||
((${#_hostonly_drvs[@]} > 0)) && return 0
|
((${#_hostonly_drvs[@]} > 0)) && return 0
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
@ -53,6 +59,7 @@ installkernel() {
|
||||||
"=drivers/pci/host" \
|
"=drivers/pci/host" \
|
||||||
"=drivers/pci/controller" \
|
"=drivers/pci/controller" \
|
||||||
"=drivers/pinctrl" \
|
"=drivers/pinctrl" \
|
||||||
|
"=drivers/usb/typec" \
|
||||||
"=drivers/watchdog"
|
"=drivers/watchdog"
|
||||||
|
|
||||||
instmods \
|
instmods \
|
||||||
|
@ -61,7 +68,7 @@ installkernel() {
|
||||||
virtio virtio_ring virtio_pci pci_hyperv \
|
virtio virtio_ring virtio_pci pci_hyperv \
|
||||||
"=drivers/pcmcia"
|
"=drivers/pcmcia"
|
||||||
|
|
||||||
if [[ ${DRACUT_ARCH:-$(uname -m)} == arm* || ${DRACUT_ARCH:-$(uname -m)} == aarch64 ]]; then
|
if [[ ${DRACUT_ARCH:-$(uname -m)} == arm* || ${DRACUT_ARCH:-$(uname -m)} == aarch64 || ${DRACUT_ARCH:-$(uname -m)} == riscv* ]]; then
|
||||||
# arm/aarch64 specific modules
|
# arm/aarch64 specific modules
|
||||||
_blockfuncs+='|dw_mc_probe|dw_mci_pltfm_register'
|
_blockfuncs+='|dw_mc_probe|dw_mci_pltfm_register'
|
||||||
instmods \
|
instmods \
|
||||||
|
@ -73,9 +80,11 @@ installkernel() {
|
||||||
"=drivers/hwmon" \
|
"=drivers/hwmon" \
|
||||||
"=drivers/hwspinlock" \
|
"=drivers/hwspinlock" \
|
||||||
"=drivers/i2c/busses" \
|
"=drivers/i2c/busses" \
|
||||||
|
"=drivers/mailbox" \
|
||||||
"=drivers/memory" \
|
"=drivers/memory" \
|
||||||
"=drivers/mfd" \
|
"=drivers/mfd" \
|
||||||
"=drivers/mmc/core" \
|
"=drivers/mmc/core" \
|
||||||
|
"=drivers/mmc/host" \
|
||||||
"=drivers/phy" \
|
"=drivers/phy" \
|
||||||
"=drivers/power" \
|
"=drivers/power" \
|
||||||
"=drivers/regulator" \
|
"=drivers/regulator" \
|
||||||
|
@ -83,10 +92,12 @@ installkernel() {
|
||||||
"=drivers/rpmsg" \
|
"=drivers/rpmsg" \
|
||||||
"=drivers/rtc" \
|
"=drivers/rtc" \
|
||||||
"=drivers/soc" \
|
"=drivers/soc" \
|
||||||
|
"=drivers/spi" \
|
||||||
"=drivers/usb/chipidea" \
|
"=drivers/usb/chipidea" \
|
||||||
"=drivers/usb/dwc2" \
|
"=drivers/usb/dwc2" \
|
||||||
"=drivers/usb/dwc3" \
|
"=drivers/usb/dwc3" \
|
||||||
"=drivers/usb/host" \
|
"=drivers/usb/host" \
|
||||||
|
"=drivers/usb/isp1760" \
|
||||||
"=drivers/usb/misc" \
|
"=drivers/usb/misc" \
|
||||||
"=drivers/usb/musb" \
|
"=drivers/usb/musb" \
|
||||||
"=drivers/usb/phy" \
|
"=drivers/usb/phy" \
|
||||||
|
|
|
@ -6,6 +6,14 @@
|
||||||
|
|
||||||
SUBSYSTEM!="block", GOTO="lvm_end"
|
SUBSYSTEM!="block", GOTO="lvm_end"
|
||||||
ACTION!="add|change", GOTO="lvm_end"
|
ACTION!="add|change", GOTO="lvm_end"
|
||||||
|
|
||||||
|
# If the md device is active (indicated by array_state), then set the flag
|
||||||
|
# LVM_MD_PV_ACTIVATED=1 indicating that the md device for the PV is ready
|
||||||
|
# to be used. The lvm udev rule running in root will check that this flag
|
||||||
|
# is set before it will process the md device (it wants to avoid
|
||||||
|
# processing an md device that exists but is not yet ready to be used.)
|
||||||
|
KERNEL=="md[0-9]*", ACTION=="change", ENV{ID_FS_TYPE}=="LVM2_member", ENV{LVM_MD_PV_ACTIVATED}!="1", TEST=="md/array_state", ENV{LVM_MD_PV_ACTIVATED}="1"
|
||||||
|
|
||||||
# Also don't process disks that are slated to be a multipath device
|
# Also don't process disks that are slated to be a multipath device
|
||||||
ENV{DM_MULTIPATH_DEVICE_PATH}=="1", GOTO="lvm_end"
|
ENV{DM_MULTIPATH_DEVICE_PATH}=="1", GOTO="lvm_end"
|
||||||
KERNEL=="dm-[0-9]*", ACTION=="add", GOTO="lvm_end"
|
KERNEL=="dm-[0-9]*", ACTION=="add", GOTO="lvm_end"
|
||||||
|
@ -15,7 +23,7 @@ PROGRAM=="/bin/sh -c 'for i in $sys/$devpath/holders/dm-[0-9]*; do [ -e $$i ] &&
|
||||||
GOTO="lvm_end"
|
GOTO="lvm_end"
|
||||||
|
|
||||||
RUN+="/sbin/initqueue --settled --onetime --unique /sbin/lvm_scan"
|
RUN+="/sbin/initqueue --settled --onetime --unique /sbin/lvm_scan"
|
||||||
RUN+="/sbin/initqueue --timeout --name 51-lvm_scan --onetime --unique /sbin/lvm_scan --partial"
|
RUN+="/sbin/initqueue --timeout --name 51-lvm_scan --onetime --unique /sbin/lvm_scan --activationmode degraded"
|
||||||
RUN+="/bin/sh -c '>/tmp/.lvm_scan-%k;'"
|
RUN+="/bin/sh -c '>/tmp/.lvm_scan-%k;'"
|
||||||
|
|
||||||
LABEL="lvm_end"
|
LABEL="lvm_end"
|
||||||
|
|
|
@ -7,11 +7,10 @@ type getarg > /dev/null 2>&1 || . /lib/dracut-lib.sh
|
||||||
|
|
||||||
VGS=$(getargs rd.lvm.vg -d rd_LVM_VG=)
|
VGS=$(getargs rd.lvm.vg -d rd_LVM_VG=)
|
||||||
LVS=$(getargs rd.lvm.lv -d rd_LVM_LV=)
|
LVS=$(getargs rd.lvm.lv -d rd_LVM_LV=)
|
||||||
SNAPSHOT=$(getargs rd.lvm.snapshot -d rd_LVM_SNAPSHOT=)
|
|
||||||
SNAPSIZE=$(getargs rd.lvm.snapsize -d rd_LVM_SNAPSIZE=)
|
|
||||||
|
|
||||||
# shellcheck disable=SC2174
|
# shellcheck disable=SC2174
|
||||||
[ -d /etc/lvm ] || mkdir -m 0755 -p /etc/lvm
|
[ -d /etc/lvm ] || mkdir -m 0755 -p /etc/lvm
|
||||||
|
[ -d /run/lvm ] || mkdir -m 0755 -p /run/lvm
|
||||||
# build a list of devices to scan
|
# build a list of devices to scan
|
||||||
lvmdevs=$(
|
lvmdevs=$(
|
||||||
for f in /tmp/.lvm_scan-*; do
|
for f in /tmp/.lvm_scan-*; do
|
||||||
|
@ -20,32 +19,6 @@ lvmdevs=$(
|
||||||
done
|
done
|
||||||
)
|
)
|
||||||
|
|
||||||
if [ ! -e /etc/lvm/lvm.conf ]; then
|
|
||||||
{
|
|
||||||
echo 'devices {'
|
|
||||||
printf ' filter = [ '
|
|
||||||
for dev in $lvmdevs; do
|
|
||||||
printf '"a|^/dev/%s$|", ' "$dev"
|
|
||||||
done
|
|
||||||
echo '"r/.*/" ]'
|
|
||||||
echo '}'
|
|
||||||
|
|
||||||
# establish LVM locking
|
|
||||||
if [ -n "$SNAPSHOT" ]; then
|
|
||||||
echo 'global {'
|
|
||||||
echo ' locking_type = 1'
|
|
||||||
echo ' use_lvmetad = 0'
|
|
||||||
echo '}'
|
|
||||||
else
|
|
||||||
echo 'global {'
|
|
||||||
echo ' locking_type = 4'
|
|
||||||
echo ' use_lvmetad = 0'
|
|
||||||
echo '}'
|
|
||||||
fi
|
|
||||||
} > /etc/lvm/lvm.conf
|
|
||||||
lvmwritten=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
check_lvm_ver() {
|
check_lvm_ver() {
|
||||||
maj=$1
|
maj=$1
|
||||||
min=$2
|
min=$2
|
||||||
|
@ -59,6 +32,75 @@ check_lvm_ver() {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
no_lvm_conf_filter() {
|
||||||
|
if [ ! -e /etc/lvm/lvm.conf ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -e /run/lvm/initrd_no_filter ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -e /run/lvm/initrd_filter ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -e /run/lvm/initrd_global_filter ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Save lvm config results in /run to avoid running
|
||||||
|
# lvm config commands for every PV that's scanned.
|
||||||
|
|
||||||
|
filter=$(lvm config devices/filter | grep "$filter=")
|
||||||
|
if [ -n "$filter" ]; then
|
||||||
|
printf '%s\n' "$filter" > /run/lvm/initrd_filter
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
global_filter=$(lvm config devices/global_filter | grep "$global_filter=")
|
||||||
|
if [ -n "$global_filter" ]; then
|
||||||
|
printf '%s\n' "$global_filter" > /run/lvm/initrd_global_filter
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# /etc/lvm/lvm.conf exists with no filter setting
|
||||||
|
true > /run/lvm/initrd_no_filter
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# If no lvm.conf exists, create a basic one with a global section.
|
||||||
|
if [ ! -e /etc/lvm/lvm.conf ]; then
|
||||||
|
{
|
||||||
|
echo 'global {'
|
||||||
|
echo '}'
|
||||||
|
} > /etc/lvm/lvm.conf
|
||||||
|
lvmwritten=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Save the original lvm.conf before appending a filter setting.
|
||||||
|
if [ ! -e /etc/lvm/lvm.conf.orig ]; then
|
||||||
|
cp /etc/lvm/lvm.conf /etc/lvm/lvm.conf.orig
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If the original lvm.conf does not contain a filter setting,
|
||||||
|
# then generate a filter and append it to the original lvm.conf.
|
||||||
|
# The filter is generated from the list PVs that have been seen
|
||||||
|
# so far (each has been processed by the lvm udev rule.)
|
||||||
|
if no_lvm_conf_filter; then
|
||||||
|
{
|
||||||
|
echo 'devices {'
|
||||||
|
printf ' filter = [ '
|
||||||
|
for dev in $lvmdevs; do
|
||||||
|
printf '"a|^/dev/%s$|", ' "$dev"
|
||||||
|
done
|
||||||
|
echo '"r/.*/" ]'
|
||||||
|
echo '}'
|
||||||
|
} > /etc/lvm/lvm.conf.filter
|
||||||
|
lvmfilter=1
|
||||||
|
cat /etc/lvm/lvm.conf.orig /etc/lvm/lvm.conf.filter > /etc/lvm/lvm.conf
|
||||||
|
fi
|
||||||
|
|
||||||
# hopefully this output format will never change, e.g.:
|
# hopefully this output format will never change, e.g.:
|
||||||
# LVM version: 2.02.53(1) (2009-09-25)
|
# LVM version: 2.02.53(1) (2009-09-25)
|
||||||
OLDIFS=$IFS
|
OLDIFS=$IFS
|
||||||
|
@ -71,67 +113,63 @@ min=$2
|
||||||
sub=${3%% *}
|
sub=${3%% *}
|
||||||
sub=${sub%%\(*}
|
sub=${sub%%\(*}
|
||||||
|
|
||||||
lvm_ignorelockingfailure="--ignorelockingfailure"
|
# For lvchange and vgchange use --sysinit which:
|
||||||
lvm_quirk_args="--ignorelockingfailure --ignoremonitoring"
|
# disables polling (--poll n)
|
||||||
|
# ignores monitoring (--ignoremonitoring)
|
||||||
check_lvm_ver 2 2 57 "$maj" "$min" "$sub" \
|
# ignores locking failures (--ignorelockingfailure)
|
||||||
&& lvm_quirk_args="$lvm_quirk_args --poll n"
|
# disables hints (--nohints)
|
||||||
|
#
|
||||||
if check_lvm_ver 2 2 65 "$maj" "$min" "$sub"; then
|
# For lvs and vgscan:
|
||||||
lvm_quirk_args=" --sysinit $extraargs"
|
# disable locking (--nolocking)
|
||||||
fi
|
# disable hints (--nohints)
|
||||||
|
|
||||||
if check_lvm_ver 2 2 221 "$maj" "$min" "$sub"; then
|
|
||||||
lvm_quirk_args=" $extraargs"
|
|
||||||
unset lvm_ignorelockingfailure
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
activate_args="--sysinit $extraargs"
|
||||||
unset extraargs
|
unset extraargs
|
||||||
|
|
||||||
export LVM_SUPPRESS_LOCKING_FAILURE_MESSAGES=1
|
export LVM_SUPPRESS_LOCKING_FAILURE_MESSAGES=1
|
||||||
|
|
||||||
if [ -n "$SNAPSHOT" ]; then
|
scan_args="--nolocking"
|
||||||
# HACK - this should probably be done elsewhere or turned into a function
|
|
||||||
# Enable read-write LVM locking
|
|
||||||
sed -i -e 's/\(^[[:space:]]*\)locking_type[[:space:]]*=[[:space:]]*[[:digit:]]/\1locking_type = 1/' /etc/lvm/lvm.conf
|
|
||||||
|
|
||||||
# Expected SNAPSHOT format "<orig lv name>:<snap lv name>"
|
check_lvm_ver 2 3 14 "$maj" "$min" "$sub" \
|
||||||
ORIG_LV=${SNAPSHOT%%:*}
|
&& scan_args="$scan_args --nohints"
|
||||||
SNAP_LV=${SNAPSHOT##*:}
|
|
||||||
|
|
||||||
info "Removing existing LVM snapshot $SNAP_LV"
|
|
||||||
lvm lvremove --force "$SNAP_LV" 2>&1 | vinfo
|
|
||||||
|
|
||||||
# Determine snapshot size
|
|
||||||
if [ -z "$SNAPSIZE" ]; then
|
|
||||||
SNAPSIZE=$(lvm lvs --noheadings --units m --options lv_size "$ORIG_LV")
|
|
||||||
info "No LVM snapshot size provided, using size of $ORIG_LV ($SNAPSIZE)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
info "Creating LVM snapshot $SNAP_LV ($SNAPSIZE)"
|
|
||||||
lvm lvcreate -s -n "$SNAP_LV" -L "$SNAPSIZE" "$ORIG_LV" 2>&1 | vinfo
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$LVS" ]; then
|
if [ -n "$LVS" ]; then
|
||||||
info "Scanning devices $lvmdevs for LVM logical volumes $LVS"
|
info "Scanning devices $lvmdevs for LVM logical volumes $LVS"
|
||||||
lvm lvscan $lvm_ignorelockingfailure 2>&1 | vinfo
|
|
||||||
for LV in $LVS; do
|
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
lvm lvchange --yes -K -ay $lvm_quirk_args "$LV" 2>&1 | vinfo
|
LVSLIST=$(lvm lvs $scan_args --noheading -o lv_full_name,segtype $LVS)
|
||||||
|
info "$LVSLIST"
|
||||||
|
|
||||||
|
# Only attempt to activate an LV if it appears in the lvs output.
|
||||||
|
for LV in $LVS; do
|
||||||
|
if strstr "$LVSLIST" "$LV"; then
|
||||||
|
# This lvchange is expected to fail if all PVs used by
|
||||||
|
# the LV are not yet present. Premature/failed lvchange
|
||||||
|
# could be avoided by reporting if an LV is complete
|
||||||
|
# from the lvs command above and skipping this lvchange
|
||||||
|
# if the LV is not lised as complete.
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
lvm lvchange --yes -K -ay $activate_args "$LV" 2>&1 | vinfo
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$LVS" ] || [ -n "$VGS" ]; then
|
if [ -z "$LVS" ] || [ -n "$VGS" ]; then
|
||||||
info "Scanning devices $lvmdevs for LVM volume groups $VGS"
|
info "Scanning devices $lvmdevs for LVM volume groups $VGS"
|
||||||
lvm vgscan $lvm_ignorelockingfailure 2>&1 | vinfo
|
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
lvm vgchange -ay $lvm_quirk_args $VGS 2>&1 | vinfo
|
lvm vgscan $scan_args 2>&1 | vinfo
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
lvm vgchange -ay $activate_args $VGS 2>&1 | vinfo
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$lvmwritten" ]; then
|
if [ "$lvmwritten" ]; then
|
||||||
rm -f -- /etc/lvm/lvm.conf
|
rm -f -- /etc/lvm/lvm.conf
|
||||||
|
elif [ "$lvmfilter" ]; then
|
||||||
|
# revert filter that was appended to existing lvm.conf
|
||||||
|
cp /etc/lvm/lvm.conf.orig /etc/lvm/lvm.conf
|
||||||
|
rm -f -- /etc/lvm/lvm.conf.filter
|
||||||
fi
|
fi
|
||||||
unset lvmwritten
|
unset lvmwritten
|
||||||
|
unset lvmfilter
|
||||||
|
|
||||||
udevadm settle
|
udevadm settle
|
||||||
|
|
||||||
|
|
|
@ -61,10 +61,6 @@ install() {
|
||||||
if [[ $hostonly ]] || [[ $lvmconf == "yes" ]]; then
|
if [[ $hostonly ]] || [[ $lvmconf == "yes" ]]; then
|
||||||
if [[ -f $dracutsysrootdir/etc/lvm/lvm.conf ]]; then
|
if [[ -f $dracutsysrootdir/etc/lvm/lvm.conf ]]; then
|
||||||
inst_simple -H /etc/lvm/lvm.conf
|
inst_simple -H /etc/lvm/lvm.conf
|
||||||
# FIXME: near-term hack to establish read-only locking;
|
|
||||||
# use command-line lvm.conf editor once it is available
|
|
||||||
sed -i -e 's/\(^[[:space:]]*\)locking_type[[:space:]]*=[[:space:]]*[[:digit:]]/\1locking_type = 4/' "${initdir}/etc/lvm/lvm.conf"
|
|
||||||
sed -i -e 's/\(^[[:space:]]*\)use_lvmetad[[:space:]]*=[[:space:]]*[[:digit:]]/\1use_lvmetad = 0/' "${initdir}/etc/lvm/lvm.conf"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export LVM_SUPPRESS_FD_WARNINGS=1
|
export LVM_SUPPRESS_FD_WARNINGS=1
|
||||||
|
@ -82,30 +78,7 @@ install() {
|
||||||
unset LVM_SUPPRESS_FD_WARNINGS
|
unset LVM_SUPPRESS_FD_WARNINGS
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! [[ -e ${initdir}/etc/lvm/lvm.conf ]]; then
|
inst_rules 11-dm-lvm.rules
|
||||||
mkdir -p "${initdir}/etc/lvm"
|
|
||||||
{
|
|
||||||
echo 'global {'
|
|
||||||
echo 'locking_type = 4'
|
|
||||||
echo 'use_lvmetad = 0'
|
|
||||||
echo '}'
|
|
||||||
} > "${initdir}/etc/lvm/lvm.conf"
|
|
||||||
fi
|
|
||||||
|
|
||||||
inst_rules 11-dm-lvm.rules 69-dm-lvm-metad.rules
|
|
||||||
|
|
||||||
# Do not run lvmetad update via pvscan in udev rule - lvmetad is not running yet in dracut!
|
|
||||||
if [[ -f ${initdir}/lib/udev/rules.d/69-dm-lvm-metad.rules ]]; then
|
|
||||||
if grep -q SYSTEMD_WANTS "${initdir}"/lib/udev/rules.d/69-dm-lvm-metad.rules; then
|
|
||||||
sed -i -e 's/^ENV{SYSTEMD_ALIAS}=.*/# No LVM pvscan in dracut - lvmetad is not running yet/' \
|
|
||||||
"${initdir}"/lib/udev/rules.d/69-dm-lvm-metad.rules
|
|
||||||
sed -i -e 's/^ENV{ID_MODEL}=.*//' "${initdir}"/lib/udev/rules.d/69-dm-lvm-metad.rules
|
|
||||||
sed -i -e 's/^ENV{SYSTEMD_WANTS}+\?=.*//' "${initdir}"/lib/udev/rules.d/69-dm-lvm-metad.rules
|
|
||||||
else
|
|
||||||
sed -i -e 's/.*lvm pvscan.*/# No LVM pvscan for in dracut - lvmetad is not running yet/' \
|
|
||||||
"${initdir}"/lib/udev/rules.d/69-dm-lvm-metad.rules
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Gentoo ebuild for LVM2 prior to 2.02.63-r1 doesn't install above rules
|
# Gentoo ebuild for LVM2 prior to 2.02.63-r1 doesn't install above rules
|
||||||
# files, but provides the one below:
|
# files, but provides the one below:
|
||||||
|
|
|
@ -60,9 +60,14 @@ installkernel() {
|
||||||
hostonly='' dracut_instmods -o -s "$_funcs" "=drivers/scsi" "=drivers/md" ${_s390drivers:+"$_s390drivers"}
|
hostonly='' dracut_instmods -o -s "$_funcs" "=drivers/scsi" "=drivers/md" ${_s390drivers:+"$_s390drivers"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mpathconf_installed() {
|
||||||
|
command -v mpathconf &> /dev/null
|
||||||
|
}
|
||||||
|
|
||||||
# called by dracut
|
# called by dracut
|
||||||
install() {
|
install() {
|
||||||
local -A _allow
|
local -A _allow
|
||||||
|
local config_dir
|
||||||
|
|
||||||
add_hostonly_mpath_conf() {
|
add_hostonly_mpath_conf() {
|
||||||
if is_mpath "$1"; then
|
if is_mpath "$1"; then
|
||||||
|
@ -74,6 +79,16 @@ install() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local k v
|
||||||
|
while read -r k v; do
|
||||||
|
if [[ $k == "config_dir" ]]; then
|
||||||
|
v="${v#\"}"
|
||||||
|
config_dir="${v%\"}"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done < <(multipath -t 2> /dev/null)
|
||||||
|
[[ -d $config_dir ]] || config_dir=/etc/multipath/conf.d
|
||||||
|
|
||||||
inst_multiple \
|
inst_multiple \
|
||||||
pkill \
|
pkill \
|
||||||
pidof \
|
pidof \
|
||||||
|
@ -91,9 +106,10 @@ install() {
|
||||||
/etc/xdrdevices.conf \
|
/etc/xdrdevices.conf \
|
||||||
/etc/multipath.conf \
|
/etc/multipath.conf \
|
||||||
/etc/multipath/* \
|
/etc/multipath/* \
|
||||||
/etc/multipath/conf.d/*
|
"$config_dir"/*
|
||||||
|
|
||||||
[[ $hostonly ]] && [[ $hostonly_mode == "strict" ]] && {
|
mpathconf_installed \
|
||||||
|
&& [[ $hostonly ]] && [[ $hostonly_mode == "strict" ]] && {
|
||||||
for_each_host_dev_and_slaves_all add_hostonly_mpath_conf
|
for_each_host_dev_and_slaves_all add_hostonly_mpath_conf
|
||||||
if ((${#_allow[@]} > 0)); then
|
if ((${#_allow[@]} > 0)); then
|
||||||
local -a _args
|
local -a _args
|
||||||
|
@ -117,9 +133,11 @@ install() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if dracut_module_included "systemd"; then
|
if dracut_module_included "systemd"; then
|
||||||
|
if mpathconf_installed; then
|
||||||
inst_simple "${moddir}/multipathd-configure.service" "${systemdsystemunitdir}/multipathd-configure.service"
|
inst_simple "${moddir}/multipathd-configure.service" "${systemdsystemunitdir}/multipathd-configure.service"
|
||||||
inst_simple "${moddir}/multipathd.service" "${systemdsystemunitdir}/multipathd.service"
|
|
||||||
$SYSTEMCTL -q --root "$initdir" enable multipathd-configure.service
|
$SYSTEMCTL -q --root "$initdir" enable multipathd-configure.service
|
||||||
|
fi
|
||||||
|
inst_simple "${moddir}/multipathd.service" "${systemdsystemunitdir}/multipathd.service"
|
||||||
$SYSTEMCTL -q --root "$initdir" enable multipathd.service
|
$SYSTEMCTL -q --root "$initdir" enable multipathd.service
|
||||||
else
|
else
|
||||||
inst_hook pre-trigger 02 "$moddir/multipathd.sh"
|
inst_hook pre-trigger 02 "$moddir/multipathd.sh"
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Device-Mapper Multipath Device Controller
|
Description=Device-Mapper Multipath Device Controller
|
||||||
Before=iscsi.service iscsid.service lvm2-activation-early.service
|
Before=lvm2-activation-early.service
|
||||||
Wants=systemd-udev-trigger.service systemd-udev-settle.service local-fs-pre.target
|
Before=local-fs-pre.target blk-availability.service shutdown.target
|
||||||
After=systemd-udev-trigger.service systemd-udev-settle.service
|
Wants=systemd-udevd-kernel.socket
|
||||||
Before=local-fs-pre.target
|
After=systemd-udevd-kernel.socket
|
||||||
|
After=multipathd.socket systemd-remount-fs.service
|
||||||
Before=initrd-cleanup.service
|
Before=initrd-cleanup.service
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
Conflicts=shutdown.target
|
Conflicts=shutdown.target
|
||||||
|
@ -12,13 +13,16 @@ ConditionKernelCommandLine=!nompath
|
||||||
ConditionKernelCommandLine=!rd.multipath=0
|
ConditionKernelCommandLine=!rd.multipath=0
|
||||||
ConditionKernelCommandLine=!rd_NO_MULTIPATH
|
ConditionKernelCommandLine=!rd_NO_MULTIPATH
|
||||||
ConditionKernelCommandLine=!multipath=off
|
ConditionKernelCommandLine=!multipath=off
|
||||||
|
ConditionVirtualization=!container
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=notify
|
||||||
|
NotifyAccess=main
|
||||||
ExecStartPre=-/sbin/modprobe dm-multipath
|
ExecStartPre=-/sbin/modprobe dm-multipath
|
||||||
ExecStart=/sbin/multipathd -s -d
|
ExecStart=/sbin/multipathd -d -s
|
||||||
ExecReload=/sbin/multipathd reconfigure
|
ExecReload=/sbin/multipathd reconfigure
|
||||||
ExecStop=/sbin/multipathd shutdown
|
TasksMax=infinity
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=sysinit.target
|
WantedBy=sysinit.target
|
||||||
|
Also=multipathd.socket
|
||||||
|
|
|
@ -51,7 +51,7 @@ gpg_decrypt() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ask_for_password \
|
ask_for_password \
|
||||||
--cmd "gpg $opts --decrypt $mntp/$keypath" \
|
--cmd "GNUPGHOME=$gpghome gpg --card-status --no-tty > /dev/null 2>&1; gpg $opts --decrypt $mntp/$keypath" \
|
||||||
--prompt "${inputPrompt:-Password ($keypath on $keydev for $device)}" \
|
--prompt "${inputPrompt:-Password ($keypath on $keydev for $device)}" \
|
||||||
--tries 3 --tty-echo-off
|
--tries 3 --tty-echo-off
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
# GPG support is optional
|
# GPG support is optional
|
||||||
# called by dracut
|
# called by dracut
|
||||||
check() {
|
check() {
|
||||||
require_binaries gpg || return 1
|
require_binaries gpg tr || return 1
|
||||||
|
|
||||||
if sc_requested; then
|
if sc_requested; then
|
||||||
if ! sc_supported; then
|
if ! sc_supported; then
|
||||||
|
@ -23,7 +23,7 @@ depends() {
|
||||||
|
|
||||||
# called by dracut
|
# called by dracut
|
||||||
install() {
|
install() {
|
||||||
inst_multiple gpg
|
inst_multiple gpg tr
|
||||||
inst "$moddir/crypt-gpg-lib.sh" "/lib/dracut-crypt-gpg-lib.sh"
|
inst "$moddir/crypt-gpg-lib.sh" "/lib/dracut-crypt-gpg-lib.sh"
|
||||||
|
|
||||||
if sc_requested; then
|
if sc_requested; then
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# This file is part of dracut.
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
# Prerequisite check(s) for module.
|
||||||
|
check() {
|
||||||
|
# Return 255 to only include the module, if another module requires it.
|
||||||
|
return 255
|
||||||
|
}
|
||||||
|
|
||||||
|
# Module dependency requirements.
|
||||||
|
depends() {
|
||||||
|
# This module has external dependency on other module(s).
|
||||||
|
echo systemd-udevd
|
||||||
|
# Return 0 to include the dependent module(s) in the initramfs.
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Install the required file(s) and directories for the module in the initramfs.
|
||||||
|
install() {
|
||||||
|
# Install required libraries.
|
||||||
|
_arch=${DRACUT_ARCH:-$(uname -m)}
|
||||||
|
inst_libdir_file \
|
||||||
|
{"tls/$_arch/",tls/,"$_arch/",}"libfido2.so.*" \
|
||||||
|
{"tls/$_arch/",tls/,"$_arch/",}"libcryptsetup.so.*" \
|
||||||
|
{"tls/$_arch/",tls/,"$_arch/",}"/cryptsetup/libcryptsetup-token-systemd-fido2.so" \
|
||||||
|
{"tls/$_arch/",tls/,"$_arch/",}"libcbor.so.*" \
|
||||||
|
{"tls/$_arch/",tls/,"$_arch/",}"libhidapi-hidraw.so.*"
|
||||||
|
}
|
|
@ -0,0 +1,62 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# This file is part of dracut.
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
# Prerequisite check(s) for module.
|
||||||
|
check() {
|
||||||
|
|
||||||
|
# If the binary(s) requirements are not fulfilled the module can't be installed.
|
||||||
|
require_binaries pcscd || return 1
|
||||||
|
|
||||||
|
# Return 255 to only include the module, if another module requires it.
|
||||||
|
return 255
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# Module dependency requirements.
|
||||||
|
depends() {
|
||||||
|
|
||||||
|
# This module has external dependency on other module(s).
|
||||||
|
echo systemd-udevd
|
||||||
|
# Return 0 to include the dependent module(s) in the initramfs.
|
||||||
|
return 0
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# Install the required file(s) and directories for the module in the initramfs.
|
||||||
|
install() {
|
||||||
|
inst_simple "$moddir/pcscd.service" "${systemdsystemunitdir}"/pcscd.service
|
||||||
|
inst_simple "$moddir/pcscd.socket" "${systemdsystemunitdir}"/pcscd.socket
|
||||||
|
|
||||||
|
inst_multiple -o \
|
||||||
|
pcscd
|
||||||
|
|
||||||
|
# Enable systemd type unit(s)
|
||||||
|
for i in \
|
||||||
|
pcscd.service \
|
||||||
|
pcscd.socket; do
|
||||||
|
$SYSTEMCTL -q --root "$initdir" enable "$i"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Install library file(s)
|
||||||
|
_arch=${DRACUT_ARCH:-$(uname -m)}
|
||||||
|
inst_libdir_file \
|
||||||
|
{"tls/$_arch/",tls/,"$_arch/",}"libopensc.so.*" \
|
||||||
|
{"tls/$_arch/",tls/,"$_arch/",}"libsmm-local.so.*" \
|
||||||
|
{"tls/$_arch/",tls/,"$_arch/",}"opensc-pkcs11.so" \
|
||||||
|
{"tls/$_arch/",tls/,"$_arch/",}"onepin-opensc-pkcs11.so" \
|
||||||
|
{"tls/$_arch/",tls/,"$_arch/",}"pkcs11/opensc-pkcs11.so" \
|
||||||
|
{"tls/$_arch/",tls/,"$_arch/",}"pkcs11/onepin-opensc-pkcs11.so" \
|
||||||
|
{"tls/$_arch/",tls/,"$_arch/",}"pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist" \
|
||||||
|
{"tls/$_arch/",tls/,"$_arch/",}"pcsc/drivers/ifd-ccid.bundle/Contents/Linux/libccid.so" \
|
||||||
|
{"tls/$_arch/",tls/,"$_arch/",}"pcsc/drivers/serial/libccidtwin.so" \
|
||||||
|
{"tls/$_arch/",tls/,"$_arch/",}"libpcsclite.so.*"
|
||||||
|
|
||||||
|
# Install the hosts local user configurations if enabled.
|
||||||
|
if [[ $hostonly ]]; then
|
||||||
|
inst_multiple -H -o \
|
||||||
|
/etc/opensc.conf \
|
||||||
|
"/etc/reader.conf.d/*"
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
[Unit]
|
||||||
|
DefaultDependencies=no
|
||||||
|
Description=PC/SC Smart Card Daemon (Dracut)
|
||||||
|
Documentation=man:pcscd(8)
|
||||||
|
Requires=pcscd.socket
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/usr/sbin/pcscd --foreground --auto-exit
|
||||||
|
ExecReload=/usr/sbin/pcscd --hotplug
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
Also=pcscd.socket
|
||||||
|
WantedBy=cryptsetup-pre.target
|
|
@ -0,0 +1,11 @@
|
||||||
|
[Unit]
|
||||||
|
DefaultDependencies=no
|
||||||
|
Description=PC/SC Smart Card Daemon Activation Socket (Dracut)
|
||||||
|
Documentation=man:pcscd(8)
|
||||||
|
|
||||||
|
[Socket]
|
||||||
|
ListenStream=/run/pcscd/pcscd.comm
|
||||||
|
SocketMode=0666
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=cryptsetup-pre.target sockets.target
|
|
@ -0,0 +1,35 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# This file is part of dracut.
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
# Prerequisite check(s) for module.
|
||||||
|
check() {
|
||||||
|
|
||||||
|
# Return 255 to only include the module, if another module requires it.
|
||||||
|
return 255
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# Module dependency requirements.
|
||||||
|
depends() {
|
||||||
|
|
||||||
|
# This module has external dependency on other module(s).
|
||||||
|
echo systemd-udevd
|
||||||
|
# Return 0 to include the dependent module(s) in the initramfs.
|
||||||
|
return 0
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# Install the required file(s) and directories for the module in the initramfs.
|
||||||
|
install() {
|
||||||
|
|
||||||
|
# Install library file(s)
|
||||||
|
_arch=${DRACUT_ARCH:-$(uname -m)}
|
||||||
|
inst_libdir_file \
|
||||||
|
{"tls/$_arch/",tls/,"$_arch/",}"libtasn1.so.*" \
|
||||||
|
{"tls/$_arch/",tls/,"$_arch/",}"libffi.so.*" \
|
||||||
|
{"tls/$_arch/",tls/,"$_arch/",}"libp11-kit.so.*" \
|
||||||
|
{"tls/$_arch/",tls/,"$_arch/",}"libcryptsetup.so.*" \
|
||||||
|
{"tls/$_arch/",tls/,"$_arch/",}"/cryptsetup/libcryptsetup-token-systemd-pkcs11.so.*"
|
||||||
|
|
||||||
|
}
|
|
@ -17,7 +17,7 @@ check() {
|
||||||
depends() {
|
depends() {
|
||||||
|
|
||||||
# This module has external dependency on other module(s).
|
# This module has external dependency on other module(s).
|
||||||
echo systemd-sysusers systemd-udev
|
echo systemd-sysusers systemd-udevd
|
||||||
# Return 0 to include the dependent module(s) in the initramfs.
|
# Return 0 to include the dependent module(s) in the initramfs.
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
@ -52,6 +52,7 @@ install() {
|
||||||
{"tls/$_arch/",tls/,"$_arch/",}"libtss2-tcti-swtpm.so.*" \
|
{"tls/$_arch/",tls/,"$_arch/",}"libtss2-tcti-swtpm.so.*" \
|
||||||
{"tls/$_arch/",tls/,"$_arch/",}"libtss2-tctildr.so.*" \
|
{"tls/$_arch/",tls/,"$_arch/",}"libtss2-tctildr.so.*" \
|
||||||
{"tls/$_arch/",tls/,"$_arch/",}"libcryptsetup.so.*" \
|
{"tls/$_arch/",tls/,"$_arch/",}"libcryptsetup.so.*" \
|
||||||
|
{"tls/$_arch/",tls/,"$_arch/",}"/cryptsetup/libcryptsetup-token-systemd-tpm2.so" \
|
||||||
{"tls/$_arch/",tls/,"$_arch/",}"libcurl.so.*" \
|
{"tls/$_arch/",tls/,"$_arch/",}"libcurl.so.*" \
|
||||||
{"tls/$_arch/",tls/,"$_arch/",}"libjson-c.so.*"
|
{"tls/$_arch/",tls/,"$_arch/",}"libjson-c.so.*"
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,6 @@ check() {
|
||||||
local found=0
|
local found=0
|
||||||
local bdev
|
local bdev
|
||||||
[ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1
|
[ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1
|
||||||
require_binaries /usr/lib/udev/collect || return 1
|
|
||||||
|
|
||||||
[[ $hostonly ]] || [[ $mount_needs ]] && {
|
[[ $hostonly ]] || [[ $mount_needs ]] && {
|
||||||
for bdev in /sys/block/*; do
|
for bdev in /sys/block/*; do
|
||||||
|
@ -50,7 +49,6 @@ depends() {
|
||||||
|
|
||||||
# called by dracut
|
# called by dracut
|
||||||
install() {
|
install() {
|
||||||
inst_multiple /usr/lib/udev/collect
|
|
||||||
inst_hook cmdline 30 "$moddir/parse-dasd.sh"
|
inst_hook cmdline 30 "$moddir/parse-dasd.sh"
|
||||||
if [[ $hostonly_cmdline == "yes" ]]; then
|
if [[ $hostonly_cmdline == "yes" ]]; then
|
||||||
local _dasd
|
local _dasd
|
||||||
|
@ -58,10 +56,10 @@ install() {
|
||||||
[[ $_dasd ]] && printf "%s\n" "$_dasd" >> "${initdir}/etc/cmdline.d/95dasd.conf"
|
[[ $_dasd ]] && printf "%s\n" "$_dasd" >> "${initdir}/etc/cmdline.d/95dasd.conf"
|
||||||
fi
|
fi
|
||||||
if [[ $hostonly ]]; then
|
if [[ $hostonly ]]; then
|
||||||
inst_rules_wildcard 51-dasd-*.rules
|
inst_rules_wildcard "51-dasd-*.rules"
|
||||||
inst_rules_wildcard 41-s390x-dasd-*.rules
|
inst_rules_wildcard "41-dasd-*.rules"
|
||||||
mark_hostonly /etc/udev/rules.d/51-dasd-*.rules
|
mark_hostonly /etc/udev/rules.d/51-dasd-*.rules
|
||||||
mark_hostonly /etc/udev/rules.d/41-s390x-dasd-*.rules
|
mark_hostonly /etc/udev/rules.d/41-dasd-*.rules
|
||||||
fi
|
fi
|
||||||
inst_rules 59-dasd.rules
|
inst_rules 59-dasd.rules
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,57 +1,22 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
create_udev_rule() {
|
allow_device() {
|
||||||
local ccw=$1
|
local ccw=$1
|
||||||
local _drv _cu_type _dev_type
|
|
||||||
local _rule="/etc/udev/rules.d/51-dasd-${ccw}.rules"
|
|
||||||
|
|
||||||
if [ -x /sbin/cio_ignore ] && cio_ignore -i "$ccw" > /dev/null; then
|
if [ -x /sbin/cio_ignore ] && cio_ignore -i "$ccw" > /dev/null; then
|
||||||
cio_ignore -r "$ccw"
|
cio_ignore -r "$ccw"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -e /sys/bus/ccw/devices/"${ccw}" ]; then
|
|
||||||
read -r _cu_type < /sys/bus/ccw/devices/"${ccw}"/cutype
|
|
||||||
read -r _dev_type < /sys/bus/ccw/devices/"${ccw}"/devtype
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$_cu_type" in
|
|
||||||
3990/* | 2105/* | 2107/* | 1750/* | 9343/*)
|
|
||||||
_drv=dasd-eckd
|
|
||||||
;;
|
|
||||||
6310/*)
|
|
||||||
_drv=dasd-fba
|
|
||||||
;;
|
|
||||||
3880/*)
|
|
||||||
case "$_dev_type" in
|
|
||||||
3380/*)
|
|
||||||
_drv=dasd_eckd
|
|
||||||
;;
|
|
||||||
3370/*)
|
|
||||||
_drv=dasd-fba
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
[ -z "${_drv}" ] && return 0
|
|
||||||
|
|
||||||
[ -e "${_rule}" ] && return 0
|
|
||||||
|
|
||||||
cat > "$_rule" << EOF
|
|
||||||
ACTION=="add", SUBSYSTEM=="ccw", KERNEL=="$ccw", IMPORT{program}="collect $ccw %k ${ccw} $_drv"
|
|
||||||
ACTION=="add", SUBSYSTEM=="drivers", KERNEL=="$_drv", IMPORT{program}="collect $ccw %k ${ccw} $_drv"
|
|
||||||
ACTION=="add", ENV{COLLECT_$ccw}=="0", ATTR{[ccw/$ccw]online}="1"
|
|
||||||
EOF
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if [[ -f /sys/firmware/ipl/ipl_type ]] && [[ $(< /sys/firmware/ipl/ipl_type) == "ccw" ]]; then
|
if [[ -f /sys/firmware/ipl/ipl_type ]] && [[ $(< /sys/firmware/ipl/ipl_type) == "ccw" ]]; then
|
||||||
create_udev_rule "$(< /sys/firmware/ipl/device)"
|
allow_device "$(< /sys/firmware/ipl/device)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for dasd_arg in $(getargs root=) $(getargs resume=); do
|
for dasd_arg in $(getargs root=) $(getargs resume=); do
|
||||||
[[ $dasd_arg =~ /dev/disk/by-path/ccw-* ]] || continue
|
[[ $dasd_arg =~ /dev/disk/by-path/ccw-* ]] || continue
|
||||||
|
|
||||||
ccw_dev="${dasd_arg##*/ccw-}"
|
ccw_dev="${dasd_arg##*/ccw-}"
|
||||||
create_udev_rule "${ccw_dev%%-*}"
|
allow_device "${ccw_dev%%-*}"
|
||||||
done
|
done
|
||||||
|
|
||||||
for dasd_arg in $(getargs rd.dasd=); do
|
for dasd_arg in $(getargs rd.dasd=); do
|
||||||
|
@ -66,12 +31,12 @@ for dasd_arg in $(getargs rd.dasd=); do
|
||||||
prefix=${start%.*}
|
prefix=${start%.*}
|
||||||
start=${start##*.}
|
start=${start##*.}
|
||||||
for rdev in $(seq $((16#$start)) $((16#$end))); do
|
for rdev in $(seq $((16#$start)) $((16#$end))); do
|
||||||
create_udev_rule "$(printf "%s.%04x" "$prefix" "$rdev")"
|
allow_device "$(printf "%s.%04x" "$prefix" "$rdev")"
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
IFS="." read -r sid ssid chan _ <<< "${dev%(ro)}"
|
IFS="." read -r sid ssid chan _ <<< "${dev%(ro)}"
|
||||||
create_udev_rule "$(printf "%01x.%01x.%04x" $((16#$sid)) $((16#$ssid)) $((16#$chan)))"
|
allow_device "$(printf "%01x.%01x.%04x" $((16#$sid)) $((16#$ssid)) $((16#$chan)))"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
|
@ -45,7 +45,7 @@ if [ -z "${DRACUT_SYSTEMD}" ] \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
handle_firmware() {
|
handle_firmware() {
|
||||||
local ifaces retry
|
local ifaces retry _res
|
||||||
|
|
||||||
# Depending on the 'ql4xdisablesysfsboot' qla4xxx
|
# Depending on the 'ql4xdisablesysfsboot' qla4xxx
|
||||||
# will be autostarting sessions without presenting
|
# will be autostarting sessions without presenting
|
||||||
|
@ -69,9 +69,28 @@ handle_firmware() {
|
||||||
rm /tmp/session-retry
|
rm /tmp/session-retry
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! iscsiadm -m fw -l; then
|
# check to see if we have the new iscsiadm command,
|
||||||
|
# that supports the "no-wait" (-W) flag. If so, use it.
|
||||||
|
iscsiadm -m fw -l -W 2> /dev/null
|
||||||
|
_res=$?
|
||||||
|
if [ $_res -eq 7 ]; then
|
||||||
|
# ISCSI_ERR_INVALID (7) => "-W" not supported
|
||||||
|
info "iscsiadm does not support no-wait firmware logins"
|
||||||
|
iscsiadm -m fw -l
|
||||||
|
_res=$?
|
||||||
|
fi
|
||||||
|
if [ $_res -ne 0 ]; then
|
||||||
warn "iscsiadm: Log-in to iscsi target failed"
|
warn "iscsiadm: Log-in to iscsi target failed"
|
||||||
else
|
else
|
||||||
|
# get a list of connected targets
|
||||||
|
tgts=$(cat /sys/firmware/ibft/target*/target-name | sort -u)
|
||||||
|
# disable NOPs for each FW target
|
||||||
|
for tgt in ${tgts}; do
|
||||||
|
iscsiadm -m node -T "${tgt}" \
|
||||||
|
--op update \
|
||||||
|
--name 'node.conn[0].timeo.noop_out_interval' --value 0 \
|
||||||
|
--name 'node.conn[0].timeo.noop_out_timeout' --value 0
|
||||||
|
done
|
||||||
need_shutdown
|
need_shutdown
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -188,6 +188,7 @@ install() {
|
||||||
inst_multiple -o iscsiuio
|
inst_multiple -o iscsiuio
|
||||||
inst_libdir_file 'libgcc_s.so*'
|
inst_libdir_file 'libgcc_s.so*'
|
||||||
inst_multiple umount iscsi-iname iscsiadm iscsid
|
inst_multiple umount iscsi-iname iscsiadm iscsid
|
||||||
|
inst_binary sort
|
||||||
|
|
||||||
inst_multiple -o \
|
inst_multiple -o \
|
||||||
"$systemdsystemunitdir"/iscsid.socket \
|
"$systemdsystemunitdir"/iscsid.socket \
|
||||||
|
|
|
@ -40,15 +40,15 @@ validate_ip_conn() {
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ifname=$(ip -o route get to "$local_address" | sed -n 's/.*dev \([^ ]*\).*/\1/p')
|
ifname=$(ip -o route get from "$local_address" to "$traddr" | sed -n 's/.*dev \([^ ]*\).*/\1/p')
|
||||||
|
|
||||||
if ip l show "$ifname" > /dev/null 2>&1; then
|
if ! ip l show "$ifname" > /dev/null 2>&1; then
|
||||||
warn "invalid network interface $ifname"
|
warn "invalid network interface $ifname"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# confirm there's a route to destination
|
# confirm there's a route to destination
|
||||||
if ip route get "$traddr" > /dev/null 2>&1; then
|
if ! ip route get "$traddr" > /dev/null 2>&1; then
|
||||||
warn "no route to $traddr"
|
warn "no route to $traddr"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -5,11 +5,11 @@ check() {
|
||||||
local _arch=${DRACUT_ARCH:-$(uname -m)}
|
local _arch=${DRACUT_ARCH:-$(uname -m)}
|
||||||
local _online=0
|
local _online=0
|
||||||
[ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1
|
[ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1
|
||||||
require_binaries /usr/lib/udev/collect || return 1
|
|
||||||
dracut_module_included network || return 1
|
dracut_module_included network || return 1
|
||||||
|
|
||||||
[[ $hostonly ]] && {
|
[[ $hostonly ]] && {
|
||||||
for i in /sys/devices/qeth/*/online; do
|
for i in /sys/devices/qeth/*/online; do
|
||||||
|
[ ! -f "$i" ] && continue
|
||||||
read -r _online < "$i"
|
read -r _online < "$i"
|
||||||
[ "$_online" -eq 1 ] && return 0
|
[ "$_online" -eq 1 ] && return 0
|
||||||
done
|
done
|
||||||
|
@ -55,5 +55,4 @@ install() {
|
||||||
[ -n "$id" ] && inst_rules_qeth "$id"
|
[ -n "$id" ] && inst_rules_qeth "$id"
|
||||||
done
|
done
|
||||||
|
|
||||||
inst_simple /usr/lib/udev/collect
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ check() {
|
||||||
# Only support resume if hibernation is currently on
|
# Only support resume if hibernation is currently on
|
||||||
# and no swap is mounted on a net device
|
# and no swap is mounted on a net device
|
||||||
[[ $hostonly ]] || [[ $mount_needs ]] && {
|
[[ $hostonly ]] || [[ $mount_needs ]] && {
|
||||||
swap_on_netdevice || [[ "$(cat /sys/power/resume)" == "0:0" ]] && return 255
|
swap_on_netdevice || [[ -f /sys/power/resume && "$(cat /sys/power/resume)" == "0:0" ]] && return 255
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
@ -50,7 +50,7 @@ install() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Optional uswsusp support
|
# Optional uswsusp support
|
||||||
for _bin in /usr/sbin/resume /usr/lib/suspend/resume /usr/lib/uswsusp/resume; do
|
for _bin in /usr/sbin/resume /usr/lib/suspend/resume /usr/lib64/suspend/resume /usr/lib/uswsusp/resume /usr/lib64/uswsusp/resume; do
|
||||||
[[ -x $dracutsysrootdir${_bin} ]] && {
|
[[ -x $dracutsysrootdir${_bin} ]] && {
|
||||||
inst "${_bin}" /usr/sbin/resume
|
inst "${_bin}" /usr/sbin/resume
|
||||||
[[ $hostonly ]] && [[ -f $dracutsysrootdir/etc/suspend.conf ]] && inst -H /etc/suspend.conf
|
[[ $hostonly ]] && [[ -f $dracutsysrootdir/etc/suspend.conf ]] && inst -H /etc/suspend.conf
|
||||||
|
|
|
@ -7,7 +7,7 @@ check() {
|
||||||
|
|
||||||
# called by dracut
|
# called by dracut
|
||||||
depends() {
|
depends() {
|
||||||
echo fs-lib
|
echo base fs-lib
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdline_journal() {
|
cmdline_journal() {
|
||||||
|
|
|
@ -45,7 +45,6 @@ check() {
|
||||||
local _arch=${DRACUT_ARCH:-$(uname -m)}
|
local _arch=${DRACUT_ARCH:-$(uname -m)}
|
||||||
local _ccw
|
local _ccw
|
||||||
[ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1
|
[ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1
|
||||||
require_binaries /usr/lib/udev/collect || return 1
|
|
||||||
|
|
||||||
[[ $hostonly ]] || [[ $mount_needs ]] && {
|
[[ $hostonly ]] || [[ $mount_needs ]] && {
|
||||||
found=0
|
found=0
|
||||||
|
@ -66,7 +65,6 @@ depends() {
|
||||||
|
|
||||||
# called by dracut
|
# called by dracut
|
||||||
install() {
|
install() {
|
||||||
inst_multiple /usr/lib/udev/collect
|
|
||||||
inst_hook cmdline 30 "$moddir/parse-zfcp.sh"
|
inst_hook cmdline 30 "$moddir/parse-zfcp.sh"
|
||||||
if [[ $hostonly_cmdline == "yes" ]]; then
|
if [[ $hostonly_cmdline == "yes" ]]; then
|
||||||
local _zfcp
|
local _zfcp
|
||||||
|
@ -76,7 +74,7 @@ install() {
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
if [[ $hostonly ]]; then
|
if [[ $hostonly ]]; then
|
||||||
inst_rules_wildcard 51-zfcp-*.rules
|
inst_rules_wildcard "51-zfcp-*.rules"
|
||||||
inst_rules_wildcard 41-s390x-zfcp-*.rules
|
inst_rules_wildcard "41-zfcp-*.rules"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,13 +22,6 @@ create_udev_rule() {
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f "$_rule" ]; then
|
|
||||||
cat > "$_rule" << EOF
|
|
||||||
ACTION=="add", SUBSYSTEM=="ccw", KERNEL=="$ccw", IMPORT{program}="collect $ccw %k ${ccw} zfcp"
|
|
||||||
ACTION=="add", SUBSYSTEM=="drivers", KERNEL=="zfcp", IMPORT{program}="collect $ccw %k ${ccw} zfcp"
|
|
||||||
ACTION=="add", ENV{COLLECT_$ccw}=="0", ATTR{[ccw/$ccw]online}="1"
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
[ -z "$wwpn" ] || [ -z "$lun" ] && return
|
[ -z "$wwpn" ] || [ -z "$lun" ] && return
|
||||||
m=$(sed -n "/.*${wwpn}.*${lun}.*/p" "$_rule")
|
m=$(sed -n "/.*${wwpn}.*${lun}.*/p" "$_rule")
|
||||||
if [ -z "$m" ]; then
|
if [ -z "$m" ]; then
|
||||||
|
@ -36,9 +29,6 @@ EOF
|
||||||
ACTION=="add", KERNEL=="rport-*", ATTR{port_name}=="$wwpn", SUBSYSTEMS=="ccw", KERNELS=="$ccw", ATTR{[ccw/$ccw]$wwpn/unit_add}="$lun"
|
ACTION=="add", KERNEL=="rport-*", ATTR{port_name}=="$wwpn", SUBSYSTEMS=="ccw", KERNELS=="$ccw", ATTR{[ccw/$ccw]$wwpn/unit_add}="$lun"
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
if [ -x /sbin/cio_ignore ] && ! cio_ignore -i "$ccw" > /dev/null; then
|
|
||||||
cio_ignore -r "$ccw"
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if [[ -f /sys/firmware/ipl/ipl_type && \
|
if [[ -f /sys/firmware/ipl/ipl_type && \
|
||||||
|
|
|
@ -6,10 +6,11 @@
|
||||||
Description=dracut ask for additional cmdline parameters
|
Description=dracut ask for additional cmdline parameters
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
Before=dracut-cmdline.service
|
Before=dracut-cmdline.service
|
||||||
After=systemd-journald.socket
|
|
||||||
After=systemd-vconsole-setup.service
|
|
||||||
Requires=systemd-vconsole-setup.service
|
|
||||||
Wants=systemd-journald.socket
|
Wants=systemd-journald.socket
|
||||||
|
After=systemd-journald.socket
|
||||||
|
Wants=systemd-vconsole-setup.service
|
||||||
|
After=systemd-vconsole-setup.service
|
||||||
|
|
||||||
ConditionPathExists=/usr/lib/initrd-release
|
ConditionPathExists=/usr/lib/initrd-release
|
||||||
ConditionKernelCommandLine=|rd.cmdline=ask
|
ConditionKernelCommandLine=|rd.cmdline=ask
|
||||||
ConditionPathExistsGlob=|/etc/cmdline.d/*.conf
|
ConditionPathExistsGlob=|/etc/cmdline.d/*.conf
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
# This file is part of dracut.
|
||||||
|
#
|
||||||
|
# See dracut.bootup(7) for details
|
||||||
|
|
||||||
|
[Unit]
|
||||||
|
Description=Service executing upon dracut-shutdown failure to perform cleanup
|
||||||
|
Documentation=man:dracut-shutdown.service(8)
|
||||||
|
DefaultDependencies=no
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=-/bin/rm /run/initramfs/shutdown
|
||||||
|
StandardError=null
|
|
@ -10,6 +10,7 @@ Wants=local-fs.target
|
||||||
Conflicts=shutdown.target umount.target
|
Conflicts=shutdown.target umount.target
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
ConditionPathExists=!/run/initramfs/bin/sh
|
ConditionPathExists=!/run/initramfs/bin/sh
|
||||||
|
OnFailure=dracut-shutdown-onfailure.service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
RemainAfterExit=yes
|
RemainAfterExit=yes
|
||||||
|
|
|
@ -40,6 +40,9 @@ by injecting "rd.break=pre-shutdown rd.shell" or "rd.break=shutdown rd.shell".
|
||||||
# touch /run/initramfs/.need_shutdown
|
# touch /run/initramfs/.need_shutdown
|
||||||
----
|
----
|
||||||
|
|
||||||
|
In case the unpack of the initramfs fails, dracut-shutdown-onfailure.service
|
||||||
|
executes to make sure switch root doesn't happen, since it would result in
|
||||||
|
switching to an incomplete initramfs.
|
||||||
|
|
||||||
AUTHORS
|
AUTHORS
|
||||||
-------
|
-------
|
||||||
|
|
|
@ -17,9 +17,10 @@ EVM_ACTIVATION_BITS=0
|
||||||
# EVMKEY: path to the symmetric key; defaults to /etc/keys/evm-trusted.blob
|
# EVMKEY: path to the symmetric key; defaults to /etc/keys/evm-trusted.blob
|
||||||
# EVMKEYDESC: Description of the symmetric key; default is 'evm-key'
|
# EVMKEYDESC: Description of the symmetric key; default is 'evm-key'
|
||||||
# EVMKEYTYPE: Type of the symmetric key; default is 'encrypted'
|
# EVMKEYTYPE: Type of the symmetric key; default is 'encrypted'
|
||||||
# EMX509: path to x509 cert; default is /etc/keys/x509_evm.der
|
# EVMX509: path to x509 cert; default is /etc/keys/x509_evm.der
|
||||||
# EVM_ACTIVATION_BITS: additional EVM activation bits, such as
|
# EVM_ACTIVATION_BITS: additional EVM activation bits, such as
|
||||||
# EVM_SETUP_COMPLETE; default is 0
|
# EVM_SETUP_COMPLETE; default is 0
|
||||||
|
# EVMKEYSDIR: Directory with more x509 certs; default is /etc/keys/evm/
|
||||||
|
|
||||||
load_evm_key() {
|
load_evm_key() {
|
||||||
# read the configuration from the config file
|
# read the configuration from the config file
|
||||||
|
@ -77,10 +78,7 @@ load_evm_x509() {
|
||||||
|
|
||||||
# check for EVM public key's existence
|
# check for EVM public key's existence
|
||||||
if [ ! -f "${EVMX509PATH}" ]; then
|
if [ ! -f "${EVMX509PATH}" ]; then
|
||||||
if [ "${RD_DEBUG}" = "yes" ]; then
|
EVMX509PATH=""
|
||||||
info "integrity: EVM x509 cert file not found: ${EVMX509PATH}"
|
|
||||||
fi
|
|
||||||
return 1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local evm_pubid line
|
local evm_pubid line
|
||||||
|
@ -96,13 +94,23 @@ load_evm_x509() {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# load the EVM public key onto the EVM keyring
|
if [ -z "${EVMKEYSDIR}" ]; then
|
||||||
# FIXME: EVMX509ID unused?
|
EVMKEYSDIR="/etc/keys/evm"
|
||||||
# shellcheck disable=SC2034
|
fi
|
||||||
if ! EVMX509ID=$(evmctl import "${EVMX509PATH}" "${evm_pubid}"); then
|
# load the default EVM public key onto the EVM keyring along
|
||||||
info "integrity: failed to load the EVM X509 cert ${EVMX509PATH}"
|
# with all the other ones in $EVMKEYSDIR
|
||||||
|
for PUBKEY in ${EVMX509PATH} "${NEWROOT}${EVMKEYSDIR}"/*; do
|
||||||
|
if [ ! -f "${PUBKEY}" ]; then
|
||||||
|
if [ "${RD_DEBUG}" = "yes" ]; then
|
||||||
|
info "integrity: EVM x509 cert file not found: ${PUBKEY}"
|
||||||
|
fi
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
if ! evmctl import "${PUBKEY}" "${evm_pubid}"; then
|
||||||
|
info "integrity: failed to load the EVM X509 cert ${PUBKEY}"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
if [ "${RD_DEBUG}" = "yes" ]; then
|
if [ "${RD_DEBUG}" = "yes" ]; then
|
||||||
keyctl show @u
|
keyctl show @u
|
||||||
|
@ -131,7 +139,7 @@ enable_evm() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local evm_configured=0
|
local evm_configured=0
|
||||||
local EVM_INIT_HMAC=1 EVM_INIT_X509=2 EVM_ALLOW_METADATA_WRITES=4
|
local EVM_INIT_HMAC=1 EVM_INIT_X509=2
|
||||||
|
|
||||||
# try to load the EVM encrypted key
|
# try to load the EVM encrypted key
|
||||||
load_evm_key && evm_configured=${EVM_INIT_HMAC}
|
load_evm_key && evm_configured=${EVM_INIT_HMAC}
|
||||||
|
@ -146,14 +154,7 @@ enable_evm() {
|
||||||
|
|
||||||
# initialize EVM
|
# initialize EVM
|
||||||
info "Enabling EVM"
|
info "Enabling EVM"
|
||||||
if [ "$((evm_configured & EVM_INIT_X509))" -ne 0 ]; then
|
|
||||||
# Older kernels did not support EVM_ALLOW_METADATA_WRITES, try for
|
|
||||||
# newer ones first that need it when an x509 is used
|
|
||||||
echo $((evm_configured | EVM_ALLOW_METADATA_WRITES | EVM_ACTIVATION_BITS)) > "${EVMSECFILE}" \
|
|
||||||
|| echo $((evm_configured | EVM_ACTIVATION_BITS)) > "${EVMSECFILE}"
|
|
||||||
else
|
|
||||||
echo $((evm_configured | EVM_ACTIVATION_BITS)) > "${EVMSECFILE}"
|
echo $((evm_configured | EVM_ACTIVATION_BITS)) > "${EVMSECFILE}"
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$((evm_configured & EVM_INIT_HMAC))" -ne 0 ]; then
|
if [ "$((evm_configured & EVM_INIT_HMAC))" -ne 0 ]; then
|
||||||
# unload the EVM encrypted key
|
# unload the EVM encrypted key
|
||||||
|
|
|
@ -55,7 +55,12 @@ mount_usr() {
|
||||||
while read -r _dev _mp _fs _opts _freq _passno || [ -n "$_dev" ]; do
|
while read -r _dev _mp _fs _opts _freq _passno || [ -n "$_dev" ]; do
|
||||||
[ "${_dev%%#*}" != "$_dev" ] && continue
|
[ "${_dev%%#*}" != "$_dev" ] && continue
|
||||||
if [ "$_mp" = "/usr" ]; then
|
if [ "$_mp" = "/usr" ]; then
|
||||||
|
case "$_dev" in
|
||||||
|
LABEL=* | UUID=* | PARTUUID=* | PARTLABEL=*)
|
||||||
_dev="$(label_uuid_to_dev "$_dev")"
|
_dev="$(label_uuid_to_dev "$_dev")"
|
||||||
|
;;
|
||||||
|
*) ;;
|
||||||
|
esac
|
||||||
|
|
||||||
if strstr "$_opts" "subvol=" \
|
if strstr "$_opts" "subvol=" \
|
||||||
&& [ "${root#block:}" -ef "$_dev" ] \
|
&& [ "${root#block:}" -ef "$_dev" ] \
|
||||||
|
|
|
@ -0,0 +1,139 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# replaces all occurrences of 'search' in 'str' with 'replacement'
|
||||||
|
#
|
||||||
|
# str_replace str search replacement
|
||||||
|
#
|
||||||
|
# example:
|
||||||
|
# str_replace ' one two three ' ' ' '_'
|
||||||
|
str_replace() {
|
||||||
|
local in="$1"
|
||||||
|
local s="$2"
|
||||||
|
local r="$3"
|
||||||
|
local out=''
|
||||||
|
|
||||||
|
while [ "${in##*"$s"*}" != "$in" ]; do
|
||||||
|
chop="${in%%"$s"*}"
|
||||||
|
out="${out}${chop}$r"
|
||||||
|
in="${in#*"$s"}"
|
||||||
|
done
|
||||||
|
echo "${out}${in}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# get a systemd-compatible unit name from a path
|
||||||
|
# (mimicks unit_name_from_path_instance())
|
||||||
|
dev_unit_name() {
|
||||||
|
local dev="$1"
|
||||||
|
|
||||||
|
if command -v systemd-escape > /dev/null; then
|
||||||
|
systemd-escape -p -- "$dev"
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$dev" = "/" -o -z "$dev" ]; then
|
||||||
|
printf -- "-"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
dev="${1%%/}"
|
||||||
|
dev="${dev##/}"
|
||||||
|
# shellcheck disable=SC1003
|
||||||
|
dev="$(str_replace "$dev" '\' '\x5c')"
|
||||||
|
dev="$(str_replace "$dev" '-' '\x2d')"
|
||||||
|
if [ "${dev##.}" != "$dev" ]; then
|
||||||
|
dev="\x2e${dev##.}"
|
||||||
|
fi
|
||||||
|
dev="$(str_replace "$dev" '/' '-')"
|
||||||
|
|
||||||
|
printf -- "%s" "$dev"
|
||||||
|
}
|
||||||
|
|
||||||
|
# set_systemd_timeout_for_dev [-n] <dev> [<timeout>]
|
||||||
|
# Set 'rd.timeout' as the systemd timeout for <dev>
|
||||||
|
set_systemd_timeout_for_dev() {
|
||||||
|
local _name
|
||||||
|
local _needreload
|
||||||
|
local _noreload
|
||||||
|
local _timeout
|
||||||
|
|
||||||
|
[ -z "$DRACUT_SYSTEMD" ] && return 0
|
||||||
|
|
||||||
|
if [ "$1" = "-n" ]; then
|
||||||
|
_noreload=1
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$2" ]; then
|
||||||
|
_timeout="$2"
|
||||||
|
else
|
||||||
|
_timeout=$(getarg rd.timeout)
|
||||||
|
fi
|
||||||
|
|
||||||
|
_timeout=${_timeout:-0}
|
||||||
|
|
||||||
|
_name=$(dev_unit_name "$1")
|
||||||
|
if ! [ -L "${PREFIX}/etc/systemd/system/initrd.target.wants/${_name}.device" ]; then
|
||||||
|
[ -d "${PREFIX}"/etc/systemd/system/initrd.target.wants ] || mkdir -p "${PREFIX}"/etc/systemd/system/initrd.target.wants
|
||||||
|
ln -s ../"${_name}".device "${PREFIX}/etc/systemd/system/initrd.target.wants/${_name}.device"
|
||||||
|
type mark_hostonly > /dev/null 2>&1 && mark_hostonly /etc/systemd/system/initrd.target.wants/"${_name}".device
|
||||||
|
_needreload=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [ -f "${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf" ]; then
|
||||||
|
mkdir -p "${PREFIX}/etc/systemd/system/${_name}.device.d"
|
||||||
|
{
|
||||||
|
echo "[Unit]"
|
||||||
|
echo "JobTimeoutSec=$_timeout"
|
||||||
|
echo "JobRunningTimeoutSec=$_timeout"
|
||||||
|
} > "${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf"
|
||||||
|
type mark_hostonly > /dev/null 2>&1 && mark_hostonly /etc/systemd/system/"${_name}".device.d/timeout.conf
|
||||||
|
_needreload=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$PREFIX" ] && [ "$_needreload" = 1 ] && [ -z "$_noreload" ]; then
|
||||||
|
/sbin/initqueue --onetime --unique --name daemon-reload systemctl daemon-reload
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# wait_for_dev <dev> [<timeout>]
|
||||||
|
#
|
||||||
|
# Installs a initqueue-finished script,
|
||||||
|
# which will cause the main loop only to exit,
|
||||||
|
# if the device <dev> is recognized by the system.
|
||||||
|
wait_for_dev() {
|
||||||
|
local _name
|
||||||
|
local _noreload
|
||||||
|
|
||||||
|
if [ "$1" = "-n" ]; then
|
||||||
|
_noreload=-n
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
_name="$(str_replace "$1" '/' '\x2f')"
|
||||||
|
|
||||||
|
type mark_hostonly > /dev/null 2>&1 && mark_hostonly "$hookdir/initqueue/finished/devexists-${_name}.sh"
|
||||||
|
|
||||||
|
[ -e "${PREFIX}$hookdir/initqueue/finished/devexists-${_name}.sh" ] && return 0
|
||||||
|
|
||||||
|
printf '[ -e "%s" ]\n' "$1" \
|
||||||
|
>> "${PREFIX}$hookdir/initqueue/finished/devexists-${_name}.sh"
|
||||||
|
{
|
||||||
|
printf '[ -e "%s" ] || ' "$1"
|
||||||
|
printf 'warn "\"%s\" does not exist"\n' "$1"
|
||||||
|
} >> "${PREFIX}$hookdir/emergency/80-${_name}.sh"
|
||||||
|
|
||||||
|
set_systemd_timeout_for_dev $_noreload "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
cancel_wait_for_dev() {
|
||||||
|
local _name
|
||||||
|
_name="$(str_replace "$1" '/' '\x2f')"
|
||||||
|
rm -f -- "$hookdir/initqueue/finished/devexists-${_name}.sh"
|
||||||
|
rm -f -- "$hookdir/emergency/80-${_name}.sh"
|
||||||
|
if [ -n "$DRACUT_SYSTEMD" ]; then
|
||||||
|
_name=$(dev_unit_name "$1")
|
||||||
|
rm -f -- "${PREFIX}/etc/systemd/system/initrd.target.wants/${_name}.device"
|
||||||
|
rm -f -- "${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf"
|
||||||
|
/sbin/initqueue --onetime --unique --name daemon-reload systemctl daemon-reload
|
||||||
|
fi
|
||||||
|
}
|
|
@ -1,5 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
type wait_for_dev > /dev/null 2>&1 || . /lib/dracut-dev-lib.sh
|
||||||
|
|
||||||
export DRACUT_SYSTEMD
|
export DRACUT_SYSTEMD
|
||||||
export NEWROOT
|
export NEWROOT
|
||||||
if [ -n "$NEWROOT" ]; then
|
if [ -n "$NEWROOT" ]; then
|
||||||
|
@ -390,7 +392,7 @@ setdebug() {
|
||||||
if getargbool 0 rd.debug -d -y rdinitdebug -d -y rdnetdebug; then
|
if getargbool 0 rd.debug -d -y rdinitdebug -d -y rdnetdebug; then
|
||||||
RD_DEBUG=yes
|
RD_DEBUG=yes
|
||||||
[ -n "$BASH" ] \
|
[ -n "$BASH" ] \
|
||||||
&& export PS4='${BASH_SOURCE}@${LINENO}(${FUNCNAME[0]}): '
|
&& export PS4='${BASH_SOURCE}@${LINENO}(${FUNCNAME[0]-}): '
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
export RD_DEBUG
|
export RD_DEBUG
|
||||||
|
@ -592,10 +594,13 @@ label_uuid_to_dev() {
|
||||||
echo "/dev/disk/by-partlabel/$(echo "${_dev#PARTLABEL=}" | sed 's,/,\\x2f,g;s, ,\\x20,g')"
|
echo "/dev/disk/by-partlabel/$(echo "${_dev#PARTLABEL=}" | sed 's,/,\\x2f,g;s, ,\\x20,g')"
|
||||||
;;
|
;;
|
||||||
UUID=*)
|
UUID=*)
|
||||||
echo "/dev/disk/by-uuid/$(echo "${_dev#UUID=}" | tr "[:upper:]" "[:lower:]")"
|
echo "/dev/disk/by-uuid/${_dev#UUID=}"
|
||||||
;;
|
;;
|
||||||
PARTUUID=*)
|
PARTUUID=*)
|
||||||
echo "/dev/disk/by-partuuid/$(echo "${_dev#PARTUUID=}" | tr "[:upper:]" "[:lower:]")"
|
echo "/dev/disk/by-partuuid/${_dev#PARTUUID=}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "$_dev"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
@ -838,119 +843,6 @@ wait_for_mount() {
|
||||||
} >> "$hookdir/emergency/90-${_name}.sh"
|
} >> "$hookdir/emergency/90-${_name}.sh"
|
||||||
}
|
}
|
||||||
|
|
||||||
# get a systemd-compatible unit name from a path
|
|
||||||
# (mimicks unit_name_from_path_instance())
|
|
||||||
dev_unit_name() {
|
|
||||||
local dev="$1"
|
|
||||||
|
|
||||||
if command -v systemd-escape > /dev/null; then
|
|
||||||
systemd-escape -p -- "$dev"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$dev" = "/" -o -z "$dev" ]; then
|
|
||||||
printf -- "-"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
dev="${1%%/}"
|
|
||||||
dev="${dev##/}"
|
|
||||||
# shellcheck disable=SC1003
|
|
||||||
dev="$(str_replace "$dev" '\' '\x5c')"
|
|
||||||
dev="$(str_replace "$dev" '-' '\x2d')"
|
|
||||||
if [ "${dev##.}" != "$dev" ]; then
|
|
||||||
dev="\x2e${dev##.}"
|
|
||||||
fi
|
|
||||||
dev="$(str_replace "$dev" '/' '-')"
|
|
||||||
|
|
||||||
printf -- "%s" "$dev"
|
|
||||||
}
|
|
||||||
|
|
||||||
# set_systemd_timeout_for_dev <dev>
|
|
||||||
# Set 'rd.timeout' as the systemd timeout for <dev>
|
|
||||||
|
|
||||||
set_systemd_timeout_for_dev() {
|
|
||||||
local _name
|
|
||||||
local _needreload
|
|
||||||
local _noreload
|
|
||||||
local _timeout
|
|
||||||
|
|
||||||
if [ "$1" = "-n" ]; then
|
|
||||||
_noreload=1
|
|
||||||
shift
|
|
||||||
fi
|
|
||||||
|
|
||||||
_timeout=$(getarg rd.timeout)
|
|
||||||
_timeout=${_timeout:-0}
|
|
||||||
|
|
||||||
if [ -n "$DRACUT_SYSTEMD" ]; then
|
|
||||||
_name=$(dev_unit_name "$1")
|
|
||||||
if ! [ -L "${PREFIX}/etc/systemd/system/initrd.target.wants/${_name}.device" ]; then
|
|
||||||
[ -d "${PREFIX}"/etc/systemd/system/initrd.target.wants ] || mkdir -p "${PREFIX}"/etc/systemd/system/initrd.target.wants
|
|
||||||
ln -s ../"${_name}".device "${PREFIX}/etc/systemd/system/initrd.target.wants/${_name}.device"
|
|
||||||
type mark_hostonly > /dev/null 2>&1 && mark_hostonly /etc/systemd/system/initrd.target.wants/"${_name}".device
|
|
||||||
_needreload=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! [ -f "${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf" ]; then
|
|
||||||
mkdir -p "${PREFIX}/etc/systemd/system/${_name}.device.d"
|
|
||||||
{
|
|
||||||
echo "[Unit]"
|
|
||||||
echo "JobTimeoutSec=$_timeout"
|
|
||||||
echo "JobRunningTimeoutSec=$_timeout"
|
|
||||||
} > "${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf"
|
|
||||||
type mark_hostonly > /dev/null 2>&1 && mark_hostonly /etc/systemd/system/"${_name}".device.d/timeout.conf
|
|
||||||
_needreload=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$PREFIX" ] && [ "$_needreload" = 1 ] && [ -z "$_noreload" ]; then
|
|
||||||
/sbin/initqueue --onetime --unique --name daemon-reload systemctl daemon-reload
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
# wait_for_dev <dev>
|
|
||||||
#
|
|
||||||
# Installs a initqueue-finished script,
|
|
||||||
# which will cause the main loop only to exit,
|
|
||||||
# if the device <dev> is recognized by the system.
|
|
||||||
wait_for_dev() {
|
|
||||||
local _name
|
|
||||||
local _noreload
|
|
||||||
|
|
||||||
if [ "$1" = "-n" ]; then
|
|
||||||
_noreload=-n
|
|
||||||
shift
|
|
||||||
fi
|
|
||||||
|
|
||||||
_name="$(str_replace "$1" '/' '\x2f')"
|
|
||||||
|
|
||||||
type mark_hostonly > /dev/null 2>&1 && mark_hostonly "$hookdir/initqueue/finished/devexists-${_name}.sh"
|
|
||||||
|
|
||||||
[ -e "${PREFIX}$hookdir/initqueue/finished/devexists-${_name}.sh" ] && return 0
|
|
||||||
|
|
||||||
printf '[ -e "%s" ]\n' "$1" \
|
|
||||||
>> "${PREFIX}$hookdir/initqueue/finished/devexists-${_name}.sh"
|
|
||||||
{
|
|
||||||
printf '[ -e "%s" ] || ' "$1"
|
|
||||||
printf 'warn "\"%s\" does not exist"\n' "$1"
|
|
||||||
} >> "${PREFIX}$hookdir/emergency/80-${_name}.sh"
|
|
||||||
|
|
||||||
set_systemd_timeout_for_dev $_noreload "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
cancel_wait_for_dev() {
|
|
||||||
local _name
|
|
||||||
_name="$(str_replace "$1" '/' '\x2f')"
|
|
||||||
rm -f -- "$hookdir/initqueue/finished/devexists-${_name}.sh"
|
|
||||||
rm -f -- "$hookdir/emergency/80-${_name}.sh"
|
|
||||||
if [ -n "$DRACUT_SYSTEMD" ]; then
|
|
||||||
_name=$(dev_unit_name "$1")
|
|
||||||
rm -f -- "${PREFIX}/etc/systemd/system/initrd.target.wants/${_name}.device"
|
|
||||||
rm -f -- "${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf"
|
|
||||||
/sbin/initqueue --onetime --unique --name daemon-reload systemctl daemon-reload
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
killproc() {
|
killproc() {
|
||||||
debug_off
|
debug_off
|
||||||
local _exe
|
local _exe
|
||||||
|
|
|
@ -387,7 +387,8 @@ if [ -f /etc/capsdrop ]; then
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
unset RD_DEBUG
|
unset RD_DEBUG
|
||||||
exec "$SWITCH_ROOT" "$NEWROOT" "$INIT" "$initargs" || {
|
# shellcheck disable=SC2086
|
||||||
|
exec "$SWITCH_ROOT" "$NEWROOT" "$INIT" $initargs || {
|
||||||
warn "Something went very badly wrong in the initramfs. Please "
|
warn "Something went very badly wrong in the initramfs. Please "
|
||||||
warn "file a bug against dracut."
|
warn "file a bug against dracut."
|
||||||
emergency_shell
|
emergency_shell
|
||||||
|
|
|
@ -15,11 +15,11 @@ depends() {
|
||||||
install() {
|
install() {
|
||||||
inst_multiple mount mknod mkdir sleep chroot chown \
|
inst_multiple mount mknod mkdir sleep chroot chown \
|
||||||
sed ls flock cp mv dmesg rm ln rmmod mkfifo umount readlink setsid \
|
sed ls flock cp mv dmesg rm ln rmmod mkfifo umount readlink setsid \
|
||||||
modprobe chmod
|
modprobe chmod tr
|
||||||
|
|
||||||
inst_multiple -o findmnt less kmod
|
inst_multiple -o findmnt less kmod
|
||||||
|
|
||||||
inst_binary "${dracutsysrootdir}${dracutbasedir}/dracut-util" "/usr/bin/dracut-util"
|
inst_binary "${dracutbasedir}/dracut-util" "/usr/bin/dracut-util"
|
||||||
|
|
||||||
ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
|
ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
|
||||||
ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
|
ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
|
||||||
|
@ -50,6 +50,7 @@ install() {
|
||||||
mkdir -p "${initdir}"/tmp
|
mkdir -p "${initdir}"/tmp
|
||||||
|
|
||||||
inst_simple "$moddir/dracut-lib.sh" "/lib/dracut-lib.sh"
|
inst_simple "$moddir/dracut-lib.sh" "/lib/dracut-lib.sh"
|
||||||
|
inst_simple "$moddir/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
|
||||||
mkdir -p "${initdir}"/var
|
mkdir -p "${initdir}"/var
|
||||||
|
|
||||||
if ! dracut_module_included "systemd"; then
|
if ! dracut_module_included "systemd"; then
|
||||||
|
@ -116,11 +117,10 @@ install() {
|
||||||
export DRACUT_SYSTEMD=1
|
export DRACUT_SYSTEMD=1
|
||||||
fi
|
fi
|
||||||
export PREFIX="$initdir"
|
export PREFIX="$initdir"
|
||||||
|
export hookdir=/lib/dracut/hooks
|
||||||
|
|
||||||
# suppress getarg for `rd.memdebug`
|
# shellcheck source=dracut-dev-lib.sh
|
||||||
export DEBUG_MEM_LEVEL=0
|
. "$moddir/dracut-dev-lib.sh"
|
||||||
# shellcheck source=dracut-lib.sh
|
|
||||||
. "$moddir/dracut-lib.sh"
|
|
||||||
|
|
||||||
for _dev in "${host_devs[@]}"; do
|
for _dev in "${host_devs[@]}"; do
|
||||||
for _dev2 in "${root_devs[@]}"; do
|
for _dev2 in "${root_devs[@]}"; do
|
||||||
|
@ -137,7 +137,7 @@ install() {
|
||||||
_pdev=$(get_persistent_dev "$_dev")
|
_pdev=$(get_persistent_dev "$_dev")
|
||||||
|
|
||||||
case "$_pdev" in
|
case "$_pdev" in
|
||||||
/dev/?*) wait_for_dev "$_pdev" ;;
|
/dev/?*) wait_for_dev "$_pdev" 0 ;;
|
||||||
*) ;;
|
*) ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
|
@ -67,22 +67,23 @@ install() {
|
||||||
[[ $nofscks == "yes" ]] && return
|
[[ $nofscks == "yes" ]] && return
|
||||||
|
|
||||||
if [[ $fscks == "${fscks#*[^ ]*}" ]]; then
|
if [[ $fscks == "${fscks#*[^ ]*}" ]]; then
|
||||||
_helpers="\
|
_helpers=(
|
||||||
umount mount /sbin/fsck* /usr/sbin/fsck*
|
/sbin/fsck* /usr/sbin/fsck*
|
||||||
xfs_db xfs_check xfs_repair xfs_metadump
|
xfs_db xfs_check xfs_repair xfs_metadump
|
||||||
e2fsck jfs_fsck reiserfsck btrfsck
|
e2fsck jfs_fsck reiserfsck btrfsck
|
||||||
"
|
)
|
||||||
if [[ $hostonly ]]; then
|
if [[ $hostonly ]]; then
|
||||||
_helpers="umount mount "
|
read -r -a _helpers < <(for_each_host_dev_fs echo_fs_helper)
|
||||||
_helpers+=$(for_each_host_dev_fs echo_fs_helper)
|
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
_helpers="$fscks"
|
read -r -a _helpers <<< "$fscks"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $_helpers == *e2fsck* ]] && [[ -e $dracutsysrootdir/etc/e2fsck.conf ]]; then
|
_helpers+=(umount mount)
|
||||||
|
|
||||||
|
if [[ ${_helpers[*]} == *e2fsck* ]] && [[ -e $dracutsysrootdir/etc/e2fsck.conf ]]; then
|
||||||
inst_simple /etc/e2fsck.conf
|
inst_simple /etc/e2fsck.conf
|
||||||
fi
|
fi
|
||||||
|
|
||||||
inst_multiple -o "$_helpers" fsck
|
inst_multiple -o "${_helpers[@]}" fsck
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ depends() {
|
||||||
|
|
||||||
# called by dracut
|
# called by dracut
|
||||||
install() {
|
install() {
|
||||||
inst_multiple tar gzip dd echo tr
|
inst_multiple tar gzip dd echo tr rmdir
|
||||||
# TODO: make this conditional on a cmdline flag / config option
|
# TODO: make this conditional on a cmdline flag / config option
|
||||||
inst_multiple -o cpio xz bzip2 zstd
|
inst_multiple -o cpio xz bzip2 zstd
|
||||||
inst_simple "$moddir/img-lib.sh" "/lib/img-lib.sh"
|
inst_simple "$moddir/img-lib.sh" "/lib/img-lib.sh"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
# Mount kernel debug fs so debug tools can work.
|
# Mount kernel debug fs so debug tools can work.
|
||||||
# memdebug=4 and memdebug=5 requires debug fs to be mounted.
|
# memdebug=4 and memdebug=5 requires debug fs to be mounted.
|
||||||
# And there is no need to umount it.
|
# And there is no need to umount it.
|
||||||
|
@ -20,8 +20,6 @@ is_debugfs_ready() {
|
||||||
}
|
}
|
||||||
|
|
||||||
prepare_debugfs() {
|
prepare_debugfs() {
|
||||||
local trace_base
|
|
||||||
|
|
||||||
trace_base=$(get_trace_base)
|
trace_base=$(get_trace_base)
|
||||||
# old debugfs interface case.
|
# old debugfs interface case.
|
||||||
if ! [ -d "$trace_base/tracing" ]; then
|
if ! [ -d "$trace_base/tracing" ]; then
|
||||||
|
@ -44,10 +42,10 @@ fi
|
||||||
if [ -n "$DEBUG_MEM_LEVEL" ]; then
|
if [ -n "$DEBUG_MEM_LEVEL" ]; then
|
||||||
if [ "$DEBUG_MEM_LEVEL" -ge 5 ]; then
|
if [ "$DEBUG_MEM_LEVEL" -ge 5 ]; then
|
||||||
echo "memstrack - will report kernel module memory usage summary and top allocation stack"
|
echo "memstrack - will report kernel module memory usage summary and top allocation stack"
|
||||||
memstrack --report module_summary,module_top --notui --throttle 80 -o /.memstrack &
|
nohup memstrack --report module_summary,module_top --notui --throttle 80 -o /.memstrack > /dev/null &
|
||||||
elif [ "$DEBUG_MEM_LEVEL" -ge 4 ]; then
|
elif [ "$DEBUG_MEM_LEVEL" -ge 4 ]; then
|
||||||
echo "memstrack - will report memory usage summary"
|
echo "memstrack - will report memory usage summary"
|
||||||
memstrack --report module_summary --notui --throttle 80 -o /.memstrack &
|
nohup memstrack --report module_summary --notui --throttle 80 -o /.memstrack > /dev/null &
|
||||||
else
|
else
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
@ -61,9 +59,7 @@ if [ $RET -ne 0 ]; then
|
||||||
exit $RET
|
exit $RET
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo $PID > /run/memstrack.pid
|
||||||
|
|
||||||
# Wait a second for memstrack to setup everything, avoid missing any event
|
# Wait a second for memstrack to setup everything, avoid missing any event
|
||||||
sleep 1
|
sleep 1
|
||||||
|
|
||||||
echo $PID > /run/memstrack.pid
|
|
||||||
# bash specific - non posix
|
|
||||||
disown
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ ConditionKernelCommandLine=|rd.memdebug=4
|
||||||
ConditionKernelCommandLine=|rd.memdebug=5
|
ConditionKernelCommandLine=|rd.memdebug=5
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=forking
|
||||||
ExecStart=/bin/memstrack-start
|
ExecStart=/bin/memstrack-start
|
||||||
PIDFile=/run/memstrack.pid
|
PIDFile=/run/memstrack.pid
|
||||||
StandardInput=null
|
StandardInput=null
|
||||||
|
|
|
@ -11,12 +11,12 @@ check() {
|
||||||
}
|
}
|
||||||
|
|
||||||
depends() {
|
depends() {
|
||||||
echo systemd bash
|
echo systemd
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
install() {
|
install() {
|
||||||
inst_multiple pgrep pkill
|
inst_multiple pgrep pkill nohup
|
||||||
inst "/bin/memstrack" "/bin/memstrack"
|
inst "/bin/memstrack" "/bin/memstrack"
|
||||||
|
|
||||||
inst "$moddir/memstrack-start.sh" "/bin/memstrack-start"
|
inst "$moddir/memstrack-start.sh" "/bin/memstrack-start"
|
||||||
|
|
|
@ -1,12 +1,17 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
PATH=/bin:/sbin
|
PATH=/bin:/sbin
|
||||||
|
|
||||||
# Basic mounts for mounting a squash image
|
[ -e /proc/self/mounts ] \
|
||||||
mkdir /proc /sys /dev /run
|
|| (mkdir -p /proc && mount -t proc -o nosuid,noexec,nodev proc /proc)
|
||||||
mount -t proc -o nosuid,noexec,nodev proc /proc
|
|
||||||
mount -t sysfs -o nosuid,noexec,nodev sysfs /sys
|
grep -q '^sysfs /sys sysfs' /proc/self/mounts \
|
||||||
mount -t devtmpfs -o mode=755,noexec,nosuid,strictatime devtmpfs /dev
|
|| (mkdir -p /sys && mount -t sysfs -o nosuid,noexec,nodev sysfs /sys)
|
||||||
mount -t tmpfs -o mode=755,nodev,nosuid,strictatime tmpfs /run
|
|
||||||
|
grep -q '^devtmpfs /dev devtmpfs' /proc/self/mounts \
|
||||||
|
|| (mkdir -p /dev && mount -t devtmpfs -o mode=755,noexec,nosuid,strictatime devtmpfs /dev)
|
||||||
|
|
||||||
|
grep -q '^tmpfs /run tmpfs' /proc/self/mounts \
|
||||||
|
|| (mkdir -p /run && mount -t tmpfs -o mode=755,noexec,nosuid,strictatime tmpfs /run)
|
||||||
|
|
||||||
# Load required modules
|
# Load required modules
|
||||||
modprobe loop
|
modprobe loop
|
||||||
|
|
|
@ -28,6 +28,11 @@ installpost() {
|
||||||
[[ $squash_dir == "$i"/* ]] || mv "$i" "$squash_dir"/
|
[[ $squash_dir == "$i"/* ]] || mv "$i" "$squash_dir"/
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# initdir also needs ld.so.* to make ld.so work
|
||||||
|
inst /etc/ld.so.cache
|
||||||
|
inst /etc/ld.so.conf
|
||||||
|
inst_dir /etc/ld.so.conf.d
|
||||||
|
|
||||||
# Create mount points for squash loader
|
# Create mount points for squash loader
|
||||||
mkdir -p "$initdir"/squash/
|
mkdir -p "$initdir"/squash/
|
||||||
mkdir -p "$squash_dir"/squash/
|
mkdir -p "$squash_dir"/squash/
|
||||||
|
@ -42,19 +47,25 @@ installpost() {
|
||||||
# Install required modules and binaries for the squash image init script.
|
# Install required modules and binaries for the squash image init script.
|
||||||
if [[ $_busybox ]]; then
|
if [[ $_busybox ]]; then
|
||||||
inst "$_busybox" /usr/bin/busybox
|
inst "$_busybox" /usr/bin/busybox
|
||||||
for _i in sh echo mount modprobe mkdir switch_root; do
|
for _i in sh echo mount modprobe mkdir switch_root grep umount; do
|
||||||
ln_r /usr/bin/busybox /usr/bin/$_i
|
ln_r /usr/bin/busybox /usr/bin/$_i
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
DRACUT_RESOLVE_DEPS=1 inst_multiple sh mount modprobe mkdir switch_root
|
DRACUT_RESOLVE_DEPS=1 inst_multiple sh mount modprobe mkdir switch_root grep umount
|
||||||
|
|
||||||
|
# libpthread workaround: pthread_cancel wants to dlopen libgcc_s.so
|
||||||
|
inst_libdir_file -o "libgcc_s.so*"
|
||||||
|
|
||||||
|
# FIPS workaround for Fedora/RHEL: libcrypto needs libssl when FIPS is enabled
|
||||||
|
[[ $DRACUT_FIPS_MODE ]] && inst_libdir_file -o "libssl.so*"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
hostonly="" instmods "loop" "squashfs" "overlay"
|
hostonly="" instmods "loop" "squashfs" "overlay"
|
||||||
dracut_kernel_post
|
dracut_kernel_post
|
||||||
|
|
||||||
# Install squash image init script.
|
# Install squash image init script.
|
||||||
ln -sfn /usr/bin "$initdir/bin"
|
ln_r /usr/bin /bin
|
||||||
ln -sfn /usr/sbin "$initdir/sbin"
|
ln_r /usr/sbin /sbin
|
||||||
inst_simple "$moddir"/init-squash.sh /init
|
inst_simple "$moddir"/init-squash.sh /init
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue