[Solved] Reboot fail with BusyBox on RPi3B (aarch64)

This is for ARMv8 based devices

[Solved] Reboot fail with BusyBox on RPi3B (aarch64)

Postby TheoGoudout » Mon Jul 02, 2018 2:50 pm

Hi,

I would like to install a BusyBox on a separate partition on my RPi3B SD card in order to use it as a "Recovery partition". I can change my boot partition from uBoot and I manage to boot on said partition. After so time on the internet, I managed to make it run a script that decompress an archive containing a backup from my other partition and overwrite it. So far, so good.

But when the copy is done, the reboot is failing. Here are the logs from Kernel start :
$this->bbcode_second_pass_code('', '
Starting kernel ...

[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[ 0.000000] Linux version 4.17.3-1-ARCH (builduser@leming) (gcc version 8.1.0 (GCC)) #1 SMP Tue Jun 26 20:31:09 MDT 2018
[ 0.000000] Machine model: Raspberry Pi 3 Model B
[ 0.000000] debug: ignoring loglevel setting.
[ 0.000000] efi: Getting EFI parameters from FDT:
[ 0.000000] efi: UEFI not found.
[ 0.000000] cma: Reserved 64 MiB at 0x0000000036c00000
[ 0.000000] On node 0 totalpages: 242688
[ 0.000000] DMA32 zone: 3792 pages used for memmap
[ 0.000000] DMA32 zone: 0 pages reserved
[ 0.000000] DMA32 zone: 242688 pages, LIFO batch:31
[ 0.000000] percpu: Embedded 25 pages/cpu @ (ptrval) s61592 r8192 d32616 u102400
[ 0.000000] pcpu-alloc: s61592 r8192 d32616 u102400 alloc=25*4096
[ 0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3
[ 0.000000] Detected VIPT I-cache on CPU0
[ 0.000000] CPU features: detected: Kernel page table isolation (KPTI)
[ 0.000000] CPU features: enabling workaround for ARM erratum 843419
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 238896
[ 0.000000] Kernel command line: console=tty0 console=ttyS0,115200 root=/dev/mmcblk0p2 rw rootfs=ext4 smsc95xx.macaddr=b8:27:eb:fd:8d:1a ignore_loglevel dma.dmachans=0x7f35 rootwait 8250.nr_uarts=1 elevator=deadline fsck.repair=yes bcm2708_fb.fbwidth=1920 bcm2708_fb.fbheight=1080 vc_mem.mem_base=0x3dc00000 vc_mem.mem_size=0x3f000000
[ 0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes)
[ 0.000000] Memory: 860800K/970752K available (12668K kernel code, 2436K rwdata, 8428K rodata, 1536K init, 762K bss, 44416K reserved, 65536K cma-reserved)
[ 0.000000] random: get_random_u64 called from cache_random_seq_create+0x60/0x120 with crng_init=0
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[ 0.000000] ftrace: allocating 46680 entries in 183 pages
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
[ 0.000000] Tasks RCU enabled.
[ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[ 0.000000] arch_timer: cp15 timer(s) running at 19.20MHz (phys).
[ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x46d987e47, max_idle_ns: 440795202767 ns
[ 0.000008] sched_clock: 56 bits at 19MHz, resolution 52ns, wraps every 4398046511078ns
[ 0.000187] Console: colour dummy device 80x25
[ 0.000649] console [tty0] enabled
[ 0.000687] Calibrating delay loop (skipped), value calculated using timer frequency.. 38.40 BogoMIPS (lpj=192000)
[ 0.000720] pid_max: default: 32768 minimum: 301
[ 0.000912] Security Framework initialized
[ 0.000932] Yama: becoming mindful.
[ 0.001069] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.001108] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.002911] ASID allocator initialised with 32768 entries
[ 0.003047] Hierarchical SRCU implementation.
[ 0.006569] EFI services will not be available.
[ 0.007074] smp: Bringing up secondary CPUs ...
[ 0.007787] Detected VIPT I-cache on CPU1
[ 0.007853] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[ 0.008678] Detected VIPT I-cache on CPU2
[ 0.008718] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
[ 0.009480] Detected VIPT I-cache on CPU3
[ 0.009519] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
[ 0.009648] smp: Brought up 1 node, 4 CPUs
[ 0.009742] SMP: Total of 4 processors activated.
[ 0.009761] CPU features: detected: 32-bit EL0 Support
[ 0.014077] CPU: All CPU(s) started at EL2
[ 0.014116] alternatives: patching kernel code
[ 0.015796] devtmpfs: initialized
[ 0.022723] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.022773] futex hash table entries: 1024 (order: 5, 131072 bytes)
[ 0.026036] pinctrl core: initialized pinctrl subsystem
[ 0.027136] DMI not present or invalid.
[ 0.027675] NET: Registered protocol family 16
[ 0.031738] cpuidle: using governor ladder
[ 0.031889] cpuidle: using governor menu
[ 0.032656] vdso: 2 pages (1 code @ (ptrval), 1 data @ (ptrval))
[ 0.032684] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[ 0.034334] DMA: preallocated 256 KiB pool for atomic allocations
[ 0.034887] Serial: AMBA PL011 UART driver
[ 0.037780] uart-pl011 3f201000.serial: could not find pctldev for node /soc/gpio@7e200000/uart0_gpio32, deferring probe
[ 0.055578] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[ 0.055981] cryptd: max_cpu_qlen set to 1000
[ 0.056895] ACPI: Interpreter disabled.
[ 0.057830] vgaarb: loaded
[ 0.058842] SCSI subsystem initialized
[ 0.059063] libata version 3.00 loaded.
[ 0.059331] usbcore: registered new interface driver usbfs
[ 0.059407] usbcore: registered new interface driver hub
[ 0.059521] usbcore: registered new device driver usb
[ 0.059787] usb_phy_generic phy: phy supply vcc not found, using dummy regulator
[ 0.060309] pps_core: LinuxPPS API ver. 1 registered
[ 0.060328] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 0.060369] PTP clock support registered
[ 0.060622] EDAC MC: Ver: 3.0.0
[ 0.061610] Advanced Linux Sound Architecture Driver Initialized.
[ 0.062157] NetLabel: Initializing
[ 0.062175] NetLabel: domain hash size = 128
[ 0.062190] NetLabel: protocols = UNLABELED CIPSOv4 CALIPSO
[ 0.062285] NetLabel: unlabeled traffic allowed by default
[ 0.063097] clocksource: Switched to clocksource arch_sys_counter
[ 0.212192] VFS: Disk quotas dquot_6.6.0
[ 0.212315] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[ 0.212776] simple-framebuffer 3eaf0000.framebuffer: framebuffer at 0x3eaf0000, 0x10a800 bytes, mapped to 0x (ptrval)
[ 0.212811] simple-framebuffer 3eaf0000.framebuffer: format=a8r8g8b8, mode=656x416x32, linelength=2624
[ 0.219865] Console: switching to colour frame buffer device 82x26
[ 0.225944] simple-framebuffer 3eaf0000.framebuffer: fb0: simplefb registered!
[ 0.229928] pnp: PnP ACPI: disabled
[ 0.242516] NET: Registered protocol family 2
[ 0.246886] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 8192 bytes)
[ 0.254257] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
[ 0.258230] TCP bind hash table entries: 8192 (order: 5, 131072 bytes)
[ 0.262346] TCP: Hash tables configured (established 8192 bind 8192)
[ 0.266521] UDP hash table entries: 512 (order: 2, 16384 bytes)
[ 0.270500] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[ 0.274795] NET: Registered protocol family 1
[ 0.279535] RPC: Registered named UNIX socket transport module.
[ 0.283670] RPC: Registered udp transport module.
[ 0.287672] RPC: Registered tcp transport module.
[ 0.291509] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 0.295394] PCI: CLS 0 bytes, default 128
[ 0.299349] Unpacking initramfs...
[ 0.302951] Initramfs unpacking failed: junk in compressed archive
[ 0.306649] Freeing initrd memory: 48K
[ 0.311556] kvm [1]: 8-bit VMID
[ 0.317240] kvm [1]: Hyp mode initialized successfully
[ 0.341892] Initialise system trusted keyrings
[ 0.345383] workingset: timestamp_bits=46 max_order=18 bucket_order=0
[ 0.356258] zbud: loaded
[ 0.362577] NFS: Registering the id_resolver key type
[ 0.365859] Key type id_resolver registered
[ 0.368962] Key type id_legacy registered
[ 0.371952] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[ 0.375260] SGI XFS with ACLs, security attributes, no debug enabled
[ 0.381041] pstore: using deflate compression
[ 2.561597] NET: Registered protocol family 38
[ 2.564718] Key type asymmetric registered
[ 2.567676] Asymmetric key parser 'x509' registered
[ 2.570777] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 243)
[ 2.577320] io scheduler noop registered
[ 2.580492] io scheduler deadline registered (default)
[ 2.584057] io scheduler cfq registered
[ 2.587160] io scheduler mq-deadline registered (default)
[ 2.590252] io scheduler kyber registered
[ 2.593489] io scheduler bfq registered
[ 2.603904] ipmi message handler version 39.2
[ 2.616879] Serial: 8250/16550 driver, 1 ports, IRQ sharing enabled
[ 2.621317] console [ttyS0] disabled
[ 2.624387] 3f215040.serial: ttyS0 at MMIO 0x0 (irq = 61, base_baud = 31250000) is a 16550
[ 3.421882] console [ttyS0] enabled
[ 3.429729] msm_serial: driver initialized
[ 4.374750] bcm2835-rng 3f104000.rng: hwrng registered
[ 4.384154] cacheinfo: Unable to detect cache hierarchy for CPU 0
[ 4.396619] libphy: Fixed MDIO Bus: probed
[ 4.405472] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 4.415350] ehci-pci: EHCI PCI platform driver
[ 4.423102] ehci-platform: EHCI generic platform driver
[ 4.431666] ehci-orion: EHCI orion driver
[ 4.438854] tegra-ehci: Tegra EHCI driver
[ 4.446002] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 4.455400] ohci-pci: OHCI PCI platform driver
[ 4.463052] ohci-platform: OHCI generic platform driver
[ 4.471629] uhci_hcd: USB Universal Host Controller Interface driver
[ 4.481993] usbcore: registered new interface driver uas
[ 4.490781] usbcore: registered new interface driver usb-storage
[ 4.500216] usbcore: registered new interface driver ums-alauda
[ 4.509439] usbcore: registered new interface driver ums-cypress
[ 4.518615] usbcore: registered new interface driver ums-datafab
[ 4.527633] usbcore: registered new interface driver ums_eneub6250
[ 4.536656] usbcore: registered new interface driver ums-freecom
[ 4.545433] usbcore: registered new interface driver ums-isd200
[ 4.554054] usbcore: registered new interface driver ums-jumpshot
[ 4.562737] usbcore: registered new interface driver ums-karma
[ 4.571046] usbcore: registered new interface driver ums-onetouch
[ 4.579526] usbcore: registered new interface driver ums-realtek
[ 4.587743] usbcore: registered new interface driver ums-sddr09
[ 4.595740] usbcore: registered new interface driver ums-sddr55
[ 4.603632] usbcore: registered new interface driver ums-usbat
[ 4.611397] usbcore: registered new interface driver usbserial_generic
[ 4.619837] usbserial: USB Serial support registered for generic
[ 4.629204] mousedev: PS/2 mouse device common for all mice
[ 4.639989] device-mapper: uevent: version 1.0.3
[ 4.646768] device-mapper: ioctl: 4.39.0-ioctl (2018-04-03) initialised: dm-devel@redhat.com
[ 4.659814] sdhci: Secure Digital Host Controller Interface driver
[ 4.668086] sdhci: Copyright(c) Pierre Ossman
[ 4.675202] Synopsys Designware Multimedia Card Interface Driver
[ 4.788549] sdhost-bcm2835 3f202000.mmc: loaded - DMA enabled (>1)
[ 4.797305] sdhci-pltfm: SDHCI platform and OF driver helper
[ 4.835819] mmc1: SDHCI controller on 3f300000.sdhci [3f300000.sdhci] using PIO
[ 4.847174] ledtrig-cpu: registered to indicate activity on CPUs
[ 4.856769] hidraw: raw HID events driver (C) Jiri Kosina
[ 4.865875] usbcore: registered new interface driver usbhid
[ 4.874581] usbhid: USB HID core driver
[ 4.882874] bcm2835-mbox 3f00b880.mailbox: mailbox enabled
[ 4.897956] drop_monitor: Initializing network drop monitor service
[ 4.901847] mmc1: queuing unknown CIS tuple 0x80 (2 bytes)
[ 4.908044] Initializing XFRM netlink socket
[ 4.918628] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[ 4.925535] NET: Registered protocol family 10
[ 4.935849] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[ 4.944604] Segment Routing with IPv6
[ 4.959004] mip6: Mobile IPv6
[ 4.965577] NET: Registered protocol family 17
[ 4.973823] Key type dns_resolver registered
[ 4.982900] registered taskstats version 1
[ 4.990411] mmc0: host does not support reading read-only switch, assuming write-enable
[ 5.005350] Loading compiled-in X.509 certificates
[ 5.005398] mmc0: new high speed SDHC card at address aaaa
[ 5.013751] zswap: loaded using pool lzo/zbud
[ 5.023113] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)
[ 5.040158] mmcblk0: mmc0:aaaa SU16G 14.8 GiB
[ 5.041695] Key type big_key registered
[ 5.056370] mmcblk0: p1 p2 p3
[ 5.056735] Key type encrypted registered
[ 5.074414] 3f201000.serial: ttyAMA0 at MMIO 0x3f201000 (irq = 66, base_baud = 0) is a PL011 rev2
[ 5.089939] serial serial0: tty port ttyAMA0 registered
[ 5.101959] raspberrypi-firmware soc:firmware: Attached to firmware from 2018-06-29 13:12
[ 5.114483] random: fast init done
[ 5.124088] vchiq: vchiq_init_state: slot_zero = (ptrval), is_master = 0
[ 5.127081] mmc1: new high speed SDIO card at address 0001
[ 5.142472] dwc2 3f980000.usb: 3f980000.usb supply vusb_d not found, using dummy regulator
[ 5.163150] dwc2 3f980000.usb: 3f980000.usb supply vusb_a not found, using dummy regulator
[ 5.229285] dwc2 3f980000.usb: dwc2_check_params: Invalid parameter lpm=1
[ 5.240030] dwc2 3f980000.usb: dwc2_check_params: Invalid parameter lpm_clock_gating=1
[ 5.255423] dwc2 3f980000.usb: dwc2_check_params: Invalid parameter besl=1
[ 5.266319] dwc2 3f980000.usb: dwc2_check_params: Invalid parameter hird_threshold_en=1
[ 5.282342] dwc2 3f980000.usb: DWC OTG Controller
[ 5.291337] dwc2 3f980000.usb: new USB bus registered, assigned bus number 1
[ 5.302526] dwc2 3f980000.usb: irq 41, io mem 0x3f980000
[ 5.312006] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.17
[ 5.328110] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 5.339425] usb usb1: Product: DWC OTG Controller
[ 5.348170] usb usb1: Manufacturer: Linux 4.17.3-1-ARCH dwc2_hsotg
[ 5.358443] usb usb1: SerialNumber: 3f980000.usb
[ 5.367583] hub 1-0:1.0: USB hub found
[ 5.375250] hub 1-0:1.0: 1 port detected
[ 5.384554] hctosys: unable to open rtc device (rtc0)
[ 5.393624] ALSA device list:
[ 5.400063] No soundcards found.
[ 5.407122] md: Waiting for all devices to be available before autodetect
[ 5.417423] md: If you don't use raid, use raid=noautodetect
[ 5.427469] md: Autodetecting RAID arrays.
[ 5.434989] md: autorun ...
[ 5.440969] md: ... autorun DONE.
[ 5.477623] EXT4-fs (mmcblk0p2): recovery complete
[ 5.487503] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[ 5.502040] VFS: Mounted root (ext4 filesystem) on device 179:2.
[ 5.512163] devtmpfs: mounted
[ 5.524993] Freeing unused kernel memory: 1536K
starting pid 210, tty '': '/etc/init.d/rcS'
:: Starting recovery script
mount: mounting dev on /dev failed: Device or resource busy
ERROR: Recovery file '/etc/recovery.tar.gz' could not be found
:: Automatic reboot in progress
[ 5.813130] usb 1-1: new high-speed USB device number 2 using dwc2
[ 6.063328] usb 1-1: New USB device found, idVendor=0424, idProduct=2514, bcdDevice= b.b3
[ 6.077725] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 6.088892] hub 1-1:1.0: USB hub found
[ 6.096002] hub 1-1:1.0: 4 ports detected
[ 6.423121] usb 1-1.1: new high-speed USB device number 3 using dwc2
[ 6.563435] usb 1-1.1: New USB device found, idVendor=0424, idProduct=2514, bcdDevice= b.b3
[ 6.578674] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 6.590303] hub 1-1.1:1.0: USB hub found
[ 6.597922] hub 1-1.1:1.0: 3 ports detected
[ 7.323127] usb 1-1.1.1: new high-speed USB device number 4 using dwc2
[ 7.463797] usb 1-1.1.1: New USB device found, idVendor=0424, idProduct=7800, bcdDevice= 3.00
[ 7.479778] usb 1-1.1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 8.276274] random: crng init done
[ 8.630572] kvm: exiting hardware virtualization
[ 8.640983] reboot: Restarting system
[ 8.648370] Reboot failed -- System halted
')

(For now, I don't have a perfect script or a recovery archive, but that's not a problem, I will fix that later).

And here is my (fairly simple) script :

$this->bbcode_second_pass_code('', '
#!/bin/busybox sh

recovery=/etc/recovery.tar.gz
root=/dev/mmcblk0p3

echo ":: Starting recovery script"
mkdir -p /proc /sys /dev /run
mount -t proc proc /proc -o nosuid,noexec,nodev
mount -t sysfs sys /sys -o nosuid,noexec,nodev
mount -t devtmpfs dev /dev -o mode=0755,nosuid
mount -t tmpfs run /run -o nosuid,nodev,mode=0755
mkdir -m755 /run/initramfs

# Restore root from recovery archive
if [ -f "$recovery" ]; then
echo ":: Restoring root partition"
dd "if=${recovery}" | gzip -d | dd "of=${root}"
else
echo "ERROR: Recovery file '${recovery}' could not be found"
fi

echo ":: Automatic reboot in progress"
sleep 2
reboot -f
')

In order to try to find a solution, I started the kernel using $this->bbcode_second_pass_code('', 'init=/bin/ash') bootarg. From there I tried :

  • reboot -f;
  • shutdown -r now;
  • echo b > /proc/sysrq-trigger;
  • touch /dev/watchdog then wait for a few minutes;
  • I even tried to provoke a Kernel Panic with panic=5 bootarg

and nothing worked.

I have compiled my BusyBox to keep only the essential to run my script, and compiled it as a static executable. I have tried it on both a RPi 3B and a RPi3B+

Can someone help me, or at least point me towards the right direction? I would like to avoid installing a whole filesystem for it to work.

I can provide more information if needed, just ask me. I'm fairly new to ArchLinux, so please be gentle! :)
Last edited by TheoGoudout on Tue Jul 03, 2018 2:54 pm, edited 1 time in total.
TheoGoudout
 
Posts: 2
Joined: Fri Jan 19, 2018 10:34 am

Re: Reboot fail with BusyBox on RPi3B (aarch64)

Postby TheoGoudout » Tue Jul 03, 2018 2:53 pm

So, I kept on looking and I found a solution to my problem!
It might sound simple, but I'm no expert in Linux Kernel stuffs : I needed to load the watchdog kernel module.

So I added the kernel module file to my recovery partition (uncompressed) as well as a modules.dep file :

$this->bbcode_second_pass_code('', 'kernel/drivers/watchdog/bcm2835_wdt.ko:')

I had to add modprobe to my BusyBox and to load it from my script. Everything seems to be working fine now!
TheoGoudout
 
Posts: 2
Joined: Fri Jan 19, 2018 10:34 am


Return to ARMv8 Devices

Who is online

Users browsing this forum: No registered users and 5 guests