Gentoo Archives: gentoo-commits

From: Thomas Deutschmann <whissi@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/genkernel:master commit in: defaults/, /
Date: Fri, 28 Aug 2020 20:18:55
Message-Id: 1598632559.88e1dd1c2ab49f232fed596927c15c3781fc6b28.whissi@gentoo
1 commit: 88e1dd1c2ab49f232fed596927c15c3781fc6b28
2 Author: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
3 AuthorDate: Fri Aug 28 15:22:56 2020 +0000
4 Commit: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
5 CommitDate: Fri Aug 28 16:35:59 2020 +0000
6 URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=88e1dd1c
7
8 defaults/linuxrc: Add gksosreport
9
10 To help debugging, 'gksosreport' was added (idea was borrowed from dracut):
11
12 Whenever a user run into a problem and get to a rescue shell, running "gksosreport"
13 will generate /run/initramfs/gksosreport.txt containing useful debug information
14 suitable to attach to bug reports.
15
16 Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>
17
18 defaults/gksosreport.sh | 74 +++++++++++++++++++++++++++++++++++++++++++++++++
19 defaults/initrd.scripts | 20 +++++++++----
20 defaults/linuxrc | 4 +--
21 gen_initramfs.sh | 8 +++++-
22 4 files changed, 98 insertions(+), 8 deletions(-)
23
24 diff --git a/defaults/gksosreport.sh b/defaults/gksosreport.sh
25 new file mode 100644
26 index 0000000..03b44b6
27 --- /dev/null
28 +++ b/defaults/gksosreport.sh
29 @@ -0,0 +1,74 @@
30 +#!/bin/sh
31 +
32 +echo 'Generating "/run/initramfs/gksosreport.txt" ...'
33 +
34 +if [ ! -d /run/initramfs ]
35 +then
36 + mkdir -p /run/initramfs
37 + chmod 0750 /run/initramfs
38 +fi
39 +
40 +exec >/run/initramfs/gksosreport.txt 2>&1
41 +
42 +PWFILTER='s/\(ftp:\/\/.*\):.*@/\1:*******@/g;s/\(cifs:\/\/.*\):.*@/\1:*******@/g;s/cifspass=[^ ]*/cifspass=*******/g;s/iscsi:.*@/iscsi:******@/g;s/rd.iscsi.password=[^ ]*/rd.iscsi.password=******/g;s/rd.iscsi.in.password=[^ ]*/rd.iscsi.in.password=******/g'
43 +
44 +echo "Genkernel SOS report from $(date +'%Y-%m-%d %H:%M:%S'):"
45 +
46 +set -x
47 +
48 +cat /lib/dracut/dracut-gk-version.info
49 +
50 +cat /lib/dracut/build-parameter.txt
51 +
52 +cat /proc/cmdline | sed -e "${PWFILTER}"
53 +
54 +[ -f /etc/cmdline ] && cat /etc/cmdline | sed -e "${PWFILTER}"
55 +
56 +lspci -k
57 +
58 +lsmod
59 +
60 +find /lib/modules/$(uname -r) -type f
61 +
62 +cat /proc/self/mountinfo
63 +cat /proc/mounts
64 +
65 +blkid
66 +blkid -o udev
67 +
68 +ls -l /dev/disk/by*
69 +
70 +if hash lvm >/dev/null 2>/dev/null
71 +then
72 + lvm pvdisplay
73 + lvm vgdisplay
74 + lvm lvdisplay
75 +fi
76 +
77 +if hash dmsetup >/dev/null 2>/dev/null
78 +then
79 + dmsetup ls --tree
80 +fi
81 +
82 +if [ -e /proc/mdstat ]
83 +then
84 + cat /proc/mdstat
85 +fi
86 +
87 +if hash cryptsetup >/dev/null 2>/dev/null
88 +then
89 + if [ -e /dev/mapper/root ]
90 + then
91 + cryptsetup status /dev/mapper/root
92 + fi
93 +fi
94 +
95 +if hash ip >/dev/null 2>/dev/null
96 +then
97 + ip link
98 + ip addr
99 +fi
100 +
101 +dmesg | sed -e "${PWFILTER}"
102 +
103 +[ -f /run/initramfs/init.log ] && cat /run/initramfs/init.log | sed -e "${PWFILTER}"
104
105 diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
106 index 36f4791..7a84755 100644
107 --- a/defaults/initrd.scripts
108 +++ b/defaults/initrd.scripts
109 @@ -983,7 +983,7 @@ check_loop() {
110 bad_msg 'Please export LOOP with a valid location, or reboot and pass a proper loop=...'
111 bad_msg 'kernel command line!'
112
113 - run_shell
114 + run_emergency_shell
115 fi
116 }
117
118 @@ -1001,6 +1001,14 @@ run() {
119 return ${retval}
120 }
121
122 +run_emergency_shell() {
123 + echo
124 + gksosreport
125 + good_msg 'You might want to save "/run/initramfs/gksosreport.txt" to a USB stick or /boot'
126 + good_msg 'after mounting them and attach it to a bug report.'
127 + run_shell
128 +}
129 +
130 run_shell() {
131 if [ -f "${GK_USERINTERACTION_DISABLED_STATEFILE}" ]
132 then
133 @@ -1092,7 +1100,7 @@ test_success() {
134 error_string=${1}
135 error_string="${error_string:-Failed to run command}"
136 bad_msg "${error_string}; Failing back to the shell ..."
137 - run_shell
138 + run_emergency_shell
139 fi
140 }
141
142 @@ -1347,7 +1355,7 @@ prompt_user() {
143 'shell')
144 eval ${1}'='${oldvalue}
145 warn_msg "To leave and try again just press <Ctrl>+D"
146 - run_shell
147 + run_emergency_shell
148 ;;
149 '')
150 eval ${1}'='${oldvalue}
151 @@ -1799,7 +1807,7 @@ openLUKS() {
152 # if crypt_silent=1 and some error occurs, enter shell quietly
153 elif [ \( ${CRYPT_SILENT} -eq 1 \) -a \( \( \( ${DEV_ERROR} -eq 1 \) -o \( ${KEY_ERROR} -eq 1 \) \) -o \( ${KEYDEV_ERROR} -eq 1 \) \) ]
154 then
155 - run_shell
156 + run_emergency_shell
157 elif [ ${DEV_ERROR} -eq 1 ]
158 then
159 prompt_user "LUKS_DEVICE" "${LUKS_NAME}"
160 @@ -2487,7 +2495,7 @@ cdupdate() {
161 if [ "$?" != '0' ]
162 then
163 bad_msg "Executing cdupdate.sh failed!"
164 - run_shell
165 + run_emergency_shell
166 fi
167 else
168 good_msg 'No cdupdate.sh script found, skipping ...'
169 @@ -2511,6 +2519,8 @@ rundebugshell() {
170 if is_debug
171 then
172 good_msg 'Starting debug shell as requested by "debug" option.'
173 + good_msg "Run '${BOLD}gksosreport${NORMAL}' to generate debug report"
174 + good_msg "in case you want to file a bug report."
175 else
176 return 0
177 fi
178
179 diff --git a/defaults/linuxrc b/defaults/linuxrc
180 index 061d3e0..e96b637 100644
181 --- a/defaults/linuxrc
182 +++ b/defaults/linuxrc
183 @@ -1071,7 +1071,7 @@ then
184 grep -Fq squashfs /proc/filesystems || \
185 bad_msg "HINT: Your kernel does not know filesystem \"squashfs\"."
186 fi
187 - run_shell
188 + run_emergency_shell
189 }
190 fi
191
192 @@ -1188,7 +1188,7 @@ FSTAB
193 ) ||
194 {
195 bad_msg "Copying failed, dropping into a shell."
196 - run_shell
197 + run_emergency_shell
198 }
199
200 # Now we do the links.
201
202 diff --git a/gen_initramfs.sh b/gen_initramfs.sh
203 index 27e98fc..315bb22 100755
204 --- a/gen_initramfs.sh
205 +++ b/gen_initramfs.sh
206 @@ -348,6 +348,12 @@ append_base_layout() {
207 echo "Genkernel $GK_V" > "${TDIR}"/etc/build_id \
208 || gen_die "Failed to create '${TDIR}/etc/build_id'!"
209
210 + cp -a "${GK_SHARE}"/defaults/gksosreport.sh "${TDIR}"/usr/sbin/gksosreport \
211 + || gen_die "Failed to copy '${GK_SHARE}/defaults/gksosreport.sh' to '${TDIR}/usr/sbin/gksosreport'"
212 +
213 + chmod 0755 "${TDIR}"/usr/sbin/gksosreport \
214 + || gen_die "Failed to chmod of '${TDIR}/usr/sbin/gksosreport'!"
215 +
216 # Allow lsinitrd from dracut to process our initramfs
217 echo "$(cat "${TDIR}/etc/build_id") ($(cat "${TDIR}/etc/build_date"))" > "${TDIR}"/lib/dracut/dracut-gk-version.info \
218 || gen_die "Failed to create '${TDIR}/lib/dracut/dracut-gk-version.info'!"
219 @@ -474,7 +480,7 @@ append_busybox() {
220 done
221
222 # Set up a few default symlinks
223 - local required_applets='[ ash sh mkdir mknod mount uname echo cut cat touch'
224 + local required_applets='[ ash sh mkdir mknod mount uname echo chmod cut cat touch'
225 local required_applet=
226 for required_applet in ${required_applets}
227 do