After DietPi update, my the "reboot required" never goes away

Creating a bug report/issue

I’ve found this post with the exactly same issue. But I didn’t get how it was solved. @Joulinar found out a solution, could you explain me the steps please? I’m an early user of Linux.

Required Information

  • DietPi version | cat /boot/dietpi/.version
G_DIETPI_VERSION_CORE=9

G_DIETPI_VERSION_SUB=9

G_DIETPI_VERSION_RC=0

G_GITBRANCH='master'

G_GITOWNER='MichaIng'

G_LIVE_PATCH_STATUS[0]='applied'

G_LIVE_PATCH_STATUS[1]='applied'

G_LIVE_PATCH_STATUS[2]='not applicable'

G_LIVE_PATCH_STATUS[3]='not applicable'
  • Distro version | echo $G_DISTRO_NAME $G_RASPBIAN
bookworm
  • Kernel version | uname --all
Linux DietPi 6.7.4-edge-rockchip64 #3 SMP PREEMPT Fri Feb 23 08:51:59 UTC 2024 aarch64 GNU/Linux
  • Architecture | dpkg --print-architecture
arm64
  • SBC model | echo $G_HW_MODEL_NAME or (EG: RPi3)
Orange Pi 3B (aarch64)
  • Power supply used | (EG: 5V 1A RAVpower)
EG: 5V 1A RAVpower
  • SD card used | (EG: SanDisk ultra)
SanDisk ultra

Additional Information (if applicable)

Booting from a SSD.

Steps to reproduce

DietPi boot message prompted me that there was updates available. After the update i get the message that i need to reboot. Done that several times but the message won’t go away.

 DietPi Team     : https://github.com/MichaIng/DietPi#the-dietpi-project-team
 Patreon Legends : Chris Gelatt, ADSB.im
 Website         : https://dietpi.com/ | https://twitter.com/DietPi_
 Contribute      : https://dietpi.com/contribute.html
 Web Hosting by  : https://myvirtualserver.com

 reboot          : A reboot is required to finalise a recent kernel upgrade

Output of mount; df -h

sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=3863580k,nr_inodes=965895,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,noexec,relatime,size=787500k,mode=755)
/dev/sda1 on / type ext4 (rw,noatime,lazytime)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
bpf on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime)
tracefs on /sys/kernel/tracing type tracefs (rw,nosuid,nodev,noexec,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime)
configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime)
ramfs on /run/credentials/systemd-sysctl.service type ramfs (ro,nosuid,nodev,noexec,relatime,mode=700)
ramfs on /run/credentials/systemd-sysusers.service type ramfs (ro,nosuid,nodev,noexec,relatime,mode=700)
ramfs on /run/credentials/systemd-tmpfiles-setup-dev.service type ramfs (ro,nosuid,nodev,noexec,relatime,mode=700)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime,lazytime,size=3937280k)
tmpfs on /var/log type tmpfs (rw,nosuid,nodev,noatime,lazytime,size=51200k)
ramfs on /run/credentials/systemd-tmpfiles-setup.service type ramfs (ro,nosuid,nodev,noexec,relatime,mode=700)
Filesystem      Size  Used Avail Use% Mounted on
udev            3.7G     0  3.7G   0% /dev
tmpfs           770M   57M  713M   8% /run
/dev/sda1       235G  9.3G  216G   5% /
tmpfs           3.8G     0  3.8G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           3.8G     0  3.8G   0% /tmp
tmpfs            50M     0   50M   0% /var/log

I also followed the following tutorial to setting up everything

So, I also have SD card as well as SSD connected same time. And currently it won’t boot without the SD card.

Running: lsblk -o name,fstype,label,size,ro,type,mountpoint,partuuid,uuid

The output:

NAME        FSTYPE LABEL   SIZE RO TYPE MOUNTPOINT PARTUUID                             UUID
sda                      238.5G  0 disk                                                 
└─sda1      ext4         238.5G  0 part /          dc43f165-ad03-41f8-b1d6-6ed6838d4baa 57876797-a70c-4d51-bf42-c6eb94527443
mtdblock0                   16M  0 disk                                                 
mmcblk1                   29.7G  0 disk                                                 
└─mmcblk1p1 ext4          29.7G  0 part            dc43f165-ad03-41f8-b1d6-6ed6838d4baa 622a338e-3234-4298-b5ce-0ee48c240924

Running: cat /etc/fstab

The output:

# You can use "dietpi-drive_manager" to setup mounts.
# NB: It overwrites and re-creates physical drive mount entries on use.
#----------------------------------------------------------------
# NETWORK
#----------------------------------------------------------------


#----------------------------------------------------------------
# TMPFS
#----------------------------------------------------------------
tmpfs /tmp tmpfs size=3845M,noatime,lazytime,nodev,nosuid,mode=1777
tmpfs /var/log tmpfs size=50M,noatime,lazytime,nodev,nosuid

#----------------------------------------------------------------
# MISC: ecryptfs, vboxsf, glusterfs, mergerfs, bind, Btrfs subvolume
#----------------------------------------------------------------


#----------------------------------------------------------------
# SWAP SPACE
#----------------------------------------------------------------


#----------------------------------------------------------------
# PHYSICAL DRIVES
#----------------------------------------------------------------
UUID=57876797-a70c-4d51-bf42-c6eb94527443 / ext4 noatime,lazytime,rw 0 1

This looks identical to the other thread you linked too.

  1. you have both an SD card and an SSD connected
  2. your board wants to boot from SD first
  3. you need to copy the /boot folder/Dir to the SSD
  4. remove the SD card and see if it boots from SSD.

I guess the SSD is connected via usb or what.

Whoops actually they copied the ssd /boot to the sd card sorry.
Here are the relevant lines

Yes, i used the dietpi-drive-manager to mount the SD card. Then removed the contens of the SD card /boot dir. copied the contens of the SSD /boot to the now empty SD card /boot.
then after a system reboot the message was gone.

On Orange Pi, SD card might be needed still. Best to copy boot folder from SSD to SD and mount boot folder from SD card to SSD afterwards.

@anika200 @Joulinar thanks for the answers :folded_hands:

I’m a little bit confused considering these two comments. Just confirming. I need:

  • Copy the boot folder from SSD to SD

  • Mount boot folder from SD card to SSD

To do that, do you have any idea of the CLI commands ?
I thought about something like this to copy it from SSD to the SD card:
sudo cat /dev/mmcblk1 > /dev/sda

let’s do it step by step to avoid confusion. First, mount our SD card using drive manager.

I did it, is it okay the output below ?

root@DietPi:~# lsblk -o name,fstype,label,size,ro,type,mountpoint,partuuid,uuid
NAME        FSTYPE LABEL   SIZE RO TYPE MOUNTPOINT                               PARTUUID                             UUID
sda                      238.5G  0 disk                                                                               
└─sda1      ext4         238.5G  0 part /                                        dc43f165-ad03-41f8-b1d6-6ed6838d4baa 57876797-a70c-4d51-bf42-c6eb94527443
mtdblock0                   16M  0 disk                                                                               
mmcblk1                   29.7G  0 disk                                                                               
└─mmcblk1p1 ext4          29.7G  0 part /mnt/622a338e-3234-4298-b5ce-0ee48c24092 dc43f165-ad03-41f8-b1d6-6ed6838d4baa 622a338e-3234-4298-b5ce-0ee48c240924

Can you share following

ls -la /mnt/622a338e-3234-4298-b5ce-0ee48c24092
root@DietPi:~# ls -la /mnt/622a338e-3234-4298-b5ce-0ee48c240924
total 84
drwxr-xr-x 18 root root  4096 Aug  3 15:24 .
drwxr-xr-x  8 root root  4096 Aug  3 15:22 ..
lrwxrwxrwx  1 root root     7 Mar 18  2024 bin -> usr/bin
drwxr-xr-x  4 root root  4096 Aug  3 14:45 boot
drwxr-xr-x  2 root root  4096 Mar 18  2024 dev
drwxr-xr-x 60 root root  4096 Apr 17  2024 etc
drwxr-xr-x  3 root root  4096 Mar 18  2024 home
lrwxrwxrwx  1 root root     7 Mar 18  2024 lib -> usr/lib
drwx------  2 root root 16384 Mar 18  2024 lost+found
drwxr-xr-x  2 root root  4096 Mar 18  2024 media
drwxr-xr-x  6 root root  4096 Mar 18  2024 mnt
drwxr-xr-x  2 root root  4096 Mar 18  2024 opt
drwxr-xr-x  2 root root  4096 Jan 28  2024 proc
drwx------  3 root root  4096 Apr 17  2024 root
drwxr-xr-x  2 root root  4096 Mar 18  2024 run
lrwxrwxrwx  1 root root     8 Mar 18  2024 sbin -> usr/sbin
drwxr-xr-x  2 root root  4096 Mar 18  2024 srv
drwxr-xr-x  2 root root  4096 Jan 28  2024 sys
drwxrwxrwt  2 root root  4096 Apr 17  2024 tmp
drwxr-xr-x 11 root root  4096 Mar 18  2024 usr
drwxr-xr-x 11 root root  4096 Mar 18  2024 var

Ok let’s compare 2 folder’s

ls -la /mnt/622a338e-3234-4298-b5ce-0ee48c24092/boot/
ls -la /boot/
root@DietPi:~# ls -la /mnt/622a338e-3234-4298-b5ce-0ee48c240924/boot/
total 73576
drwxr-xr-x  4 root root     4096 Aug  3 14:45 .
drwxr-xr-x 18 root root     4096 Aug  3 15:24 ..
-rw-r--r--  1 root root        0 Aug  3 14:44 .next
lrwxrwxrwx  1 root root       34 Aug  3 14:44 Image -> vmlinuz-6.16.0-rc3-edge-rockchip64
-rw-r--r--  1 root root  5754691 Jul  1 23:48 System.map-6.16.0-rc3-edge-rockchip64
-rw-r--r--  1 root root     2789 Aug  3 14:45 boot.cmd
-rw-r--r--  1 root root     2861 Aug  3 14:45 boot.scr
-rw-r--r--  1 root root   263950 Jul  1 23:48 config-6.16.0-rc3-edge-rockchip64
drwxr-xr-x  4 root root     4096 Jul 28 23:13 dietpi
-rw-r--r--  1 root root    18092 Mar 17  2024 dietpi-LICENSE.txt
-rw-r--r--  1 root root    16059 Mar 17  2024 dietpi-README.md
-rw-------  1 root root     3950 Apr 14  2024 dietpi-wifi.txt
-rw-r--r--  1 root root    17475 Nov 23  2024 dietpi.txt
-rw-r--r--  1 root root      280 Nov 23  2024 dietpiEnv.txt
lrwxrwxrwx  1 root root       30 Aug  3 14:43 dtb -> dtb-6.16.0-rc3-edge-rockchip64
drwxr-xr-x  3 root root     4096 Aug  3 14:42 dtb-6.16.0-rc3-edge-rockchip64
-rw-r--r--  1 root root 14969290 Aug  3 14:45 initrd.img-6.16.0-rc3-edge-rockchip64
lrwxrwxrwx  1 root root       34 Aug  3 14:45 uInitrd -> uInitrd-6.16.0-rc3-edge-rockchip64
-rw-r--r--  1 root root 14969354 Aug  3 14:45 uInitrd-6.16.0-rc3-edge-rockchip64
-rw-r--r--  1 root root 39287296 Jul  1 23:48 vmlinuz-6.16.0-rc3-edge-rockchip64

root@DietPi:~# ls -la /boot/
total 73576
drwxr-xr-x  4 root root     4096 Aug  3 14:45 .
drwxr-xr-x 18 root root     4096 Jul 28 23:13 ..
-rw-r--r--  1 root root        0 Aug  3 14:44 .next
lrwxrwxrwx  1 root root       34 Aug  3 14:44 Image -> vmlinuz-6.16.0-rc3-edge-rockchip64
-rw-r--r--  1 root root  5754691 Jul  1 23:48 System.map-6.16.0-rc3-edge-rockchip64
-rw-r--r--  1 root root     2789 Aug  3 14:45 boot.cmd
-rw-r--r--  1 root root     2861 Aug  3 14:45 boot.scr
-rw-r--r--  1 root root   263950 Jul  1 23:48 config-6.16.0-rc3-edge-rockchip64
drwxr-xr-x  4 root root     4096 Jul 28 23:13 dietpi
-rw-r--r--  1 root root    18092 Mar 17  2024 dietpi-LICENSE.txt
-rw-r--r--  1 root root    16059 Mar 17  2024 dietpi-README.md
-rw-------  1 root root     3950 Apr 14  2024 dietpi-wifi.txt
-rw-r--r--  1 root root    17475 Nov 23  2024 dietpi.txt
-rw-r--r--  1 root root      280 Nov 23  2024 dietpiEnv.txt
lrwxrwxrwx  1 root root       30 Aug  3 14:43 dtb -> dtb-6.16.0-rc3-edge-rockchip64
drwxr-xr-x  3 root root     4096 Aug  3 14:42 dtb-6.16.0-rc3-edge-rockchip64
-rw-r--r--  1 root root 14969290 Aug  3 14:45 initrd.img-6.16.0-rc3-edge-rockchip64
lrwxrwxrwx  1 root root       34 Aug  3 14:45 uInitrd -> uInitrd-6.16.0-rc3-edge-rockchip64
-rw-r--r--  1 root root 14969354 Aug  3 14:45 uInitrd-6.16.0-rc3-edge-rockchip64
-rw-r--r--  1 root root 39287296 Jul  1 23:48 vmlinuz-6.16.0-rc3-edge-rockchip64

I did the steps of copy the /boot from SSD to SD card, and after the reboot the message gone. Thank youuu!

until next kernel update…

1 Like

Do you know why this is necessary on OrangePi? There is no way to boot it directly on SSD through the USB connection?

The Orange Pi 3B does not natively support direct USB booting (i.e., booting directly from a USB drive without a microSD card or onboard eMMC).

Out if interest, can you share your boot.cmd?

Of course:

root@DietPi:/mnt/622a338e-3234-4298-b5ce-0ee48c240924/boot# cat boot.cmd
if test "${devtype}" = "mmc"; then part uuid mmc "${devnum}:1" partuuid; fi
# DO NOT EDIT THIS FILE
#
# Please edit /boot/dietpiEnv.txt to set supported parameters
#
# If you must, edit /boot/boot.cmd and recompile /boot/boot.scr with:
# mkimage -C none -A arm64 -T script -d /boot/boot.cmd /boot/boot.scr

# Default environment
setenv rootdev "/dev/mmcblk0p1"
setenv rootfstype "ext4"
setenv consoleargs "console=tty1"
setenv docker_optimizations "off"
setenv overlay_path "amlogic"
setenv overlay_prefix "meson"

# Load addresses
setenv scriptaddr "0x9000000"
setenv overlay_error "false"

# Load environment file
if load "${devtype}" "${devnum}" "${scriptaddr}" "${prefix}dietpiEnv.txt"; then
	env import -t "${scriptaddr}" "${filesize}"
fi

# Define kernel command-line arguments
setenv bootargs "root=${rootdev} rootfstype=${rootfstype} rootwait ${consoleargs} consoleblank=0 coherent_pool=2M usb-storage.quirks=${usbstoragequirks} ${extraargs} partuuid=${partuuid}"

# Add bootargs for Docker
if test "${docker_optimizations}" = "on"; then setenv bootargs "${bootargs} cgroup_enable=memory swapaccount=1"; fi

# Load kernel, initramfs and device tree
load "${devtype}" "${devnum}" "${kernel_addr_r}" "${prefix}Image"
load "${devtype}" "${devnum}" "${ramdisk_addr_r}" "${prefix}uInitrd"
load "${devtype}" "${devnum}" "${fdt_addr_r}" "${prefix}dtb/${fdtfile}"
fdt addr "${fdt_addr_r}"

# Apply DT overlays
if test -n "${overlays}${user_overlays}"; then
	fdt resize 65536
	for overlay in ${overlays}; do
		if load "${devtype}" "${devnum}" "${scriptaddr}" "${prefix}dtb/${overlay_path}/overlay/${overlay_prefix}-${overlay}.dtbo"; then
			echo "Applying kernel provided DT overlay ${overlay_prefix}-${overlay}.dtbo"
			fdt apply "${scriptaddr}" || setenv overlay_error "true"
		fi
	done

	for overlay in ${user_overlays}; do
		if load "${devtype}" "${devnum}" "${scriptaddr}" "${prefix}overlay-user/${overlay}.dtbo"; then
			echo "Applying user provided DT overlay ${overlay}.dtbo"
			fdt apply "${scriptaddr}" || setenv overlay_error "true"
		fi
	done

	if test "${overlay_error}" = "true"; then
		echo "Error applying DT overlays, restoring original DT"
		load "${devtype}" "${devnum}" "${fdt_addr_r}" "${prefix}dtb/${fdtfile}"
	else
		if load "${devtype}" "${devnum}" "${scriptaddr}" "${prefix}dtb/${overlay_path}/overlay/${overlay_prefix}-fixup.scr"; then
			echo "Applying kernel provided DT fixup script ${overlay_prefix}-fixup.scr"
			source "${scriptaddr}"
		fi
		if test -e "${devtype}" "${devnum}" "${prefix}fixup.scr"; then
			if load "${devtype}" "${devnum}" "${scriptaddr}" "${prefix}fixup.scr"; then
				echo "Applying user provided DT fixup script fixup.scr"
				source "${scriptaddr}"
			fi
		fi
	fi
fi

# Boot
booti "${kernel_addr_r}" "${ramdisk_addr_r}" "${fdt_addr_r}"