Skip to content

Instantly share code, notes, and snippets.

@jusa
Last active February 8, 2023 11:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jusa/91a86d589b0c2c58e95c9d63247686e8 to your computer and use it in GitHub Desktop.
Save jusa/91a86d589b0c2c58e95c9d63247686e8 to your computer and use it in GitHub Desktop.
#!/bin/bash
VERSION=4
GATHER_LOGS_DIR="_gather_logs_tmp"
GATHER_LOGS_FULL="/$GATHER_LOGS_DIR"
if [ $(id -u) != 0 ]; then
echo "This script needs to be run as root."
exec devel-su -c bash "$0"
fi
copy_to_backup() {
if [ -e "$1" ]; then
mkdir -p "$GATHER_LOGS_FULL/backup"
cp "$1" "$GATHER_LOGS_FULL/backup"
fi
}
copy_from_backup() {
local f="$(basename $1)"
if [ -e "$GATHER_LOGS_FULL/backup/$f" ]; then
cp "$GATHER_LOGS_FULL/backup/$f" "$1"
fi
}
echo "$(basename $0) version $VERSION"
if [ ! -d "$GATHER_LOGS_FULL" ]; then
echo "Preparing for logging..."
# Disable rate limiter in journal
copy_to_backup /etc/systemd/journald.conf
sed -i 's/.*Storage=.*/Storage=persistent/' /etc/systemd/journald.conf
sed -i 's/.*SystemMaxUse=.*/SystemMaxUse=50M/' /etc/systemd/journald.conf
sed -i 's/.*RateLimitBurst.*/RateLimitBurst=0/' /etc/systemd/journald.conf
sed -i 's/.*RateLimitInterval=.*/RateLimitInterval=0/g' /etc/systemd/journald.conf
sed -i 's/^RuntimeMaxUse/#RuntimeMaxUse/g' /etc/systemd/journald.conf
# Enable verbose logging for PulseAudio
copy_to_backup /etc/sysconfig/pulseaudio
sed -i -e 's/\(CONFIG=".*\)"/\1 -vvvvv"/' /etc/sysconfig/pulseaudio
# Enable verbose logging for OHM
copy_to_backup /etc/sysconfig/ohmd.debug
echo "DEBUG_FLAGS='--verbose=all --trace=\"* format [%C:%L] ; * enabled;* target stdout;*.*=all\"'" > /etc/sysconfig/ohmd.debug
# Enable verbose logging for BlueZ
copy_to_backup /etc/tracing/bluez/bluez.tracing
mkdir -p /etc/tracing/bluez
echo -e "TRACING=-d\nMGMT_DEBUG=1" > /etc/tracing/bluez/bluez.tracing
# Enable verbose logging for oFono
copy_to_backup /var/lib/environment/ofono/gather_logs.conf
mkdir -p /var/lib/environment/ofono
echo "OFONO_DEBUG=-d" > /var/lib/environment/ofono/gather_logs.conf
if [ -d /etc/appsupport.conf.d ]; then
# Enable AppSupport crash logger
copy_to_backup /etc/appsupport.conf.d/99-gather-logs-crash-logger.conf
cat >/etc/appsupport.conf.d/99-gather-logs-crash-logger.conf <<EOF
[Features]
CrashLoggerEnabled=true
EOF
# Enable verbose logging for alienaudioservice
copy_to_backup /etc/sysconfig/alienaudioservice.verbose
echo "RUN_FLAGS=-v" > /etc/sysconfig/alienaudioservice.verbose
fi
sync
echo "System prepared for logging."
echo "Please restart your device, run it until the issue is reproduced, then re-run this script."
else
echo "Gathering logs..."
echo "$VERSION" > "$GATHER_LOGS_FULL/gather_logs_version"
journalctl -b > "$GATHER_LOGS_FULL/journal"
/system/bin/logcat -d -f "$GATHER_LOGS_FULL/logcat"
mkdir -p "$GATHER_LOGS_FULL/etc"
for f in /etc/hw-release /etc/sailfish-release /etc/passwd /etc/group; do
cp $f "$GATHER_LOGS_FULL/etc"
done
rpm -qa > "$GATHER_LOGS_FULL/installed-packages"
ssu lr > "$GATHER_LOGS_FULL/ssu-lr"
df > "$GATHER_LOGS_FULL/df"
mount > "$GATHER_LOGS_FULL/mount"
ps > "$GATHER_LOGS_FULL/ps"
ls -l /dev > "$GATHER_LOGS_FULL/ls-dev"
ls -l /dev/snd > "$GATHER_LOGS_FULL/ls-dev-snd"
ls -l -R /etc > "$GATHER_LOGS_FULL/ls-etc"
APPSUPPORT_LOGS=0
# AppSupport
if systemctl is-active aliendalvik >/dev/null; then
APPSUPPORT_LOGS=1
/usr/sbin/appsupport-attach /bin/logcat -d '*:V' > $GATHER_LOGS_FULL/appsupport-logcat.log
/usr/sbin/appsupport-attach /bin/dumpsys > $GATHER_LOGS_FULL/appsupport-dumpsys.log
fi
if [ -d /tmp/appsupport/crashlogs ]; then
APPSUPPORT_LOGS=1
cp -a /tmp/appsupport/crashlogs $GATHER_LOGS_FULL/appsupport-crashlogs
fi
# Restore original state
copy_from_backup /etc/systemd/journald.conf
copy_from_backup /etc/sysconfig/pulseaudio
rm -f /etc/sysconfig/ohmd.debug
copy_from_backup /etc/sysconfig/ohmd.debug
rm -f /etc/tracing/bluez/bluez.tracing
copy_from_backup /etc/tracing/bluez/bluez.tracing
rm -f /var/lib/environment/ofono/gather_logs.conf
copy_from_backup /var/lib/environment/ofono/gather_logs.conf
rm -f /etc/sysconfig/alienaudioservice.verbose
copy_from_backup /etc/sysconfig/alienaudioservice.verbose
rm -f /etc/appsupport.conf.d/99-gather-logs-crash-logger.conf
copy_from_backup /etc/appsupport.conf.d/99-gather-logs-crash-logger.conf
LOG_PACKAGE="sailfish_logs_$(date +%Y.%m.%d-%H.%M.%S).tar.bz2"
tar cjf "$LOG_PACKAGE" "$GATHER_LOGS_DIR" -C /
rm -r -f "$GATHER_LOGS_FULL"
echo "Logs gathered."
echo "Contents of the package: full system log (verbose pulseaudio, ohmd, bluetoothd, ofono), logcat, installed packages, ssu lr output, df output, mount output, ps output, ls of /etc /dev /dev/snd, /etc/hw-release, /etc/sailfish-release /etc/passwd (this file doesn't contain actual passwords) /etc/group"
if [ $APPSUPPORT_LOGS -eq 1 ]; then
echo " AppSupport logcat, dumpsys and possible crashlogs"
fi
echo ""
echo "Please submit $LOG_PACKAGE for investigation, thank you!"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment