#Path to store logs and coredump files
%define crash_root_path /opt%{TZ_SYS_SHARE}/crash
%define crash_path %{crash_root_path}/dump
+%define crash_temp %{crash_root_path}/temp
%build
cp %{SOURCE1001} .
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
-DTZ_SYS_BIN=%{TZ_SYS_BIN} \
-DUNIT_DIR=%{_unitdir} \
- -DCRASH_PATH=%{crash_path}
+ -DCRASH_PATH=%{crash_path} \
+ -DCRASH_TEMP=%{crash_temp}
make %{?jobs:-j%jobs}
%install
%make_install
mkdir -p %{buildroot}%{crash_root_path}
mkdir -p %{buildroot}%{crash_path}
+mkdir -p %{buildroot}%{crash_temp}
%install_service sysinit.target.wants crash-init.service
%defattr(-,system,system,-)
%dir %{crash_root_path}
%dir %{crash_path}
+%dir %{crash_temp}
%attr(0755,system,system) %{_bindir}/dump_systemstate
%{_bindir}/crash-manager.sh
%{_bindir}/crash-init.sh
[Unit]
Description=Crash init
DefaultDependencies=no
-Before=sysinit.target
+After=local-fs.target
[Service]
Type=normal
#!/bin/sh
+################################
+# MOUNT tmpfs ON TEMPORARY PATH
+################################
+
+mkdir -p @CRASH_TEMP@
+/usr/bin/mount tmpfs @CRASH_TEMP@ -t tmpfs
+
+
+############################
+# REMOVE PREVIOUS COREDUMPS
+############################
+
id=""
if [ -e "/proc/sys/kernel/random/boot_id" ]
then
cd /var/lib/systemd/coredump
-#remove temporary dump files
+#remove garbage dump files
if [ -e ".#core.*" ]
then
for i in `ls -a .#core.*`
/usr/lib/systemd/systemd-coredump "$process" "$user" "$group" "$signal" "$time" "$app"
-rootpath=@CRASH_PATH@
+temppath=@CRASH_TEMP@
+resultpath=@CRASH_PATH@
name="$app"_"$process"_"$time"
-path="$rootpath"/"$name"
+path="$temppath"/"$name"
info="$name".info
dump="$name".coredump
log="$name".log
result="$name".tar.gz
-/usr/bin/mkdir -p "$rootpath"
+/usr/bin/mkdir -p "$temppath"
+/usr/bin/mkdir -p "$resultpath"
/usr/bin/mkdir -p "$path"
cd "$path"
/usr/bin/coredumpctl dump "$process" --output="$dump"
/usr/bin/dump_systemstate -d -k -f "$log"
-/usr/bin/tar cvfz ../"$result" "$dump" "$info" "$log"
+cd "$temppath"
+/usr/bin/tar cvfz "$result" "$name"/"$dump" "$name"/"$info" "$name"/"$log"
-cd ..
+/usr/bin/mv "$temppath"/"$result" "$resultpath"/"$result"
/usr/bin/rm -rf "$path"