1

Background: Stuck in boot-loop when unpack and pack system.img?

Short Description: I am trying to modify the system partition of my Samsung S10 5G system-as-root treble device. I have successfully rooted it with patching the AP file and flashed it on the device. It works fine but if I will just unpack and then pack the system.img.ext4.lz4(or vendor.img.ext4.lz4) and put it in the AP file, then the flashing succeeds but the device stuck in a boot loop. So, I am interested to see the logs that cause the boot loop.

Try 1: I have read about pstore and using adb I have noted the following things:

  1. Run find . | grep pstore and the result is as following:
./sys/fs/pstore
./sys/module/pstore
./sys/module/pstore/uevent
./sys/module/pstore/parameters
./sys/module/pstore/parameters/update_ms
./sys/module/pstore/parameters/backend
  1. Check the kernel config by pulling the file from /proc/config.gz and it has all the flag available that are listed in Reading kernel logs article.
$ cat config | grep PSTORE
CONFIG_PSTORE=y
CONFIG_PSTORE_ZLIB_COMPRESS=y
# CONFIG_PSTORE_LZO_COMPRESS is not set
# CONFIG_PSTORE_LZ4_COMPRESS is not set
CONFIG_PSTORE_CONSOLE=y
CONFIG_PSTORE_PMSG=y
CONFIG_PSTORE_PMSG_SSPLOG=y
CONFIG_PSTORE_RAM=y

With the above information, I should be able to read logs from /sys/fs/pstore/ after following the following steps:

  1. Flash the ROM that makes the kernel panic. Followed all steps to root the system-as-root device until the step to boot in recovery mode after factory data reset. Because the device didn't boot properly and stuck in a boot loop.
  2. Open the download mode and flashed the working ROM with following the root instructions.
  3. After setup the device, I have installed MagiskManager and let it do its work.
  4. Then, I have opened the adb shell with su user. I have tried to check logs but there were no logs:
1|beyondxq:/ # ls -l /sys/fs/pstore/
total 0

Try 2: Read this article and tried to do the same step as above but with mounting /dev/pstore as following:

// Just flashed rooted ROM
// Install MagiskManager and allow it to do required setup
// Run adb shell:
D:\SamsungS105G\VZW-G977UVRU2ASH7-20190827135903>adb shell
beyondxq:/ $ su
beyondxq:/ # ls -l /dev/pstore
ls: /dev/pstore: No such file or directory
1|beyondxq:/ # ls -l /sys/fs/pstore/
total 0
beyondxq:/ # mkdir /dev/pstore
beyondxq:/ # mount -t pstore - /dev/pstore
beyondxq:/ # ls -l /dev/pstore
total 0
beyondxq:/ #

// switching off
// Opening Download mode
// Flashing Panic ROM
// Reboot into recovery
// Done Wipe data/factory reset and then Reboot system now
// Pressed Recovery ket combination till Splash Screen
// Instead of starting setup, the device rebooted, display Splash, black screen, and then again device rebooted...[3 times]

// Open download mode
// Flashing rooted ROM
// Reboot into recovery
// Done Wipe data/factory reset and then Reboot system now
// Pressed Recovery key combination till Splash Screen
// Device opened with root enable
// Install MagiskManager and allow it to do required setup
// Run adb shell:
D:\SamsungS105G\VZW-G977UVRU2ASH7-20190827135903>adb shell
beyondxq:/ $ su
beyondxq:/ # ls -l /dev/pstore
ls: /dev/pstore: No such file or directory
1|beyondxq:/ # ls -l /sys/fs/pstore/
total 0
beyondxq:/ # mkdir /dev/pstore
beyondxq:/ # mount -t pstore - /dev/pstore
beyondxq:/ # ls -l /dev/pstore
total 0
beyondxq:/ # ls -l /sys/fs/pstore/
total 0

The above is the 6th try. While scrolling the command prompt above, I have noticed that in the very first try I have following logs:

1|beyondxq:/ # mkdir /dev/pstore
beyondxq:/ # ls /dev/pstore/
beyondxq:/ # mount -t pstore - /dev/pstore
beyondxq:/ # ls /dev/pstore/
beyondxq:/ #

-- Probably switch off or reboot

D:\SamsungS105G\VZW-G977UVRU2ASH7-20190827135903>adb shell
beyondxq:/ $ su
beyondxq:/ # ls /dev/pstore
ls: /dev/pstore: No such file or directory
1|beyondxq:/ # mount -t pstore - /dev/pstore
mount: '-'->'/dev/pstore': No such file or directory
1|beyondxq:/ # mkdir /dev/pstore
beyondxq:/ # mount -t pstore - /dev/pstore
beyondxq:/ # ls -l /dev/pstore/
total 0
-r--r----- 1 system log 262004 2018-01-11 09:32 console-ramoops-0
beyondxq:/ # exit
beyondxq:/ $ exit

So, I did a mistake :( and missed to read the console-ramoops-0 file. But the problem is I am not able to get it back.

Is it like:

  • if you don't remove the console-ramoops-0 file when its generated first then no more logs will be written by kernel?
  • Or the memory is full?

Please suggest what I did wrong in my later tries?

Update: Tried to crash manually using the instructions given here but no logs recorded.

Update 2: Grep the pstore using find . | grep '\.rc' | xargs cat | grep pstore -n -i and get following result:

314:    # pstore/ramoops previous console log
315:    mount pstore pstore /sys/fs/pstore nodev noexec nosuid
316:    chown system log /sys/fs/pstore/console-ramoops
317:    chmod 0440 /sys/fs/pstore/console-ramoops
318:    chown system log /sys/fs/pstore/console-ramoops-0
319:    chmod 0440 /sys/fs/pstore/console-ramoops-0
320:    chown system log /sys/fs/pstore/pmsg-ramoops-0
321:    chmod 0440 /sys/fs/pstore/pmsg-ramoops-0
13623:    # pstore/ramoops previous console log
13624:    mount pstore pstore /sys/fs/pstore nodev noexec nosuid
13625:    chown system log /sys/fs/pstore/console-ramoops
13626:    chmod 0440 /sys/fs/pstore/console-ramoops
13627:    chown system log /sys/fs/pstore/console-ramoops-0
13628:    chmod 0440 /sys/fs/pstore/console-ramoops-0
13629:    chown system log /sys/fs/pstore/pmsg-ramoops-0
13630:    chmod 0440 /sys/fs/pstore/pmsg-ramoops-0
27725:    # pstore/ramoops previous console log
27726:    mount pstore pstore /sys/fs/pstore nodev noexec nosuid
27727:    chown system log /sys/fs/pstore/console-ramoops
27728:    chmod 0440 /sys/fs/pstore/console-ramoops
27729:    chown system log /sys/fs/pstore/console-ramoops-0
27730:    chmod 0440 /sys/fs/pstore/console-ramoops-0
27731:    chown system log /sys/fs/pstore/pmsg-ramoops-0
27732:    chmod 0440 /sys/fs/pstore/pmsg-ramoops-0

Update 3 The configuration of ramoops is as following:

./sys/module/ramoops/parameters/console_size            262144
./sys/module/ramoops/parameters/dump_oops               1
./sys/module/ramoops/parameters/ecc                     0
./sys/module/ramoops/parameters/ftrace_size             262144
./sys/module/ramoops/parameters/mem_address             3241148416
./sys/module/ramoops/parameters/mem_size                1048576
./sys/module/ramoops/parameters/mem_type                0
./sys/module/ramoops/parameters/pmsg_size               262144
./sys/module/ramoops/parameters/record_size             262144
Vatish Sharma
  • 1,001
  • 4
  • 21
  • 36
  • Checked in rc files that it is mounted by the script(check Update 2 in question). There is no need to mount it as you said. When flashing the ROM the device reboots many times like when opening Download mode, when ROM flashed successfully, after wiping data/cache from recovery, etc.. Is it can be the reason for clearing of logs? – Vatish Sharma Nov 19 '19 at 07:07
  • I have tried the same step as in http://docs.halium.org/en/latest/porting/debug-build/dmesg.html on another device(OnePlus 6T) and I can see the logs but on this(Samsung S10 5G) device there are no logs. Although, I can see last_kmesg on Samsung device but I didn't find any "Kernel Panic" logs. Any suggestion? – Vatish Sharma Nov 19 '19 at 12:52
  • I have Linux version 4.14.83-16633035 (dpi@SWDH2517) (clang version 6.0.10 for Android NDK) #2 SMP PREEMPT Wed Aug 14 16:23:48 KST 2019 – Vatish Sharma Nov 19 '19 at 13:00

0 Answers0