I recently restored a pi 3 from a backup. Before the incident that required the restore I had it booting from a USB SSD hard drive. To restore the operating system I simply copied the root directory of the SD card (using rsync -a with --delete-during) to the USB drive.
Next I tried apt-get update
and apt-get upgrade
. All went smoothly until I got an error like this:
Preparing to unpack .../raspberrypi-bootloader_1.20181112-1_armhf.deb ...
/boot appears to be NOOBS recovery partition. Applying fix.
Could not determine root partition
dpkg: error processing archive /var/cache/apt/archives/raspberrypi-bootloader_1.20181112-1_armhf.deb (--unpack):
subprocess new pre-installation script returned error exit status 1
No diversion 'diversion of /boot/start.elf by rpikernelhack', none removed.
No diversion 'diversion of /boot/start_cd.elf by rpikernelhack', none removed.
No diversion 'diversion of /boot/start_db.elf by rpikernelhack', none removed.
No diversion 'diversion of /boot/start_x.elf by rpikernelhack', none removed.
No diversion 'diversion of /boot/fixup.dat by rpikernelhack', none removed.
No diversion 'diversion of /boot/fixup_cd.dat by rpikernelhack', none removed.
No diversion 'diversion of /boot/fixup_db.dat by rpikernelhack', none removed.
No diversion 'diversion of /boot/fixup_x.dat by rpikernelhack', none removed.
No diversion 'diversion of /boot/bootcode.bin by rpikernelhack', none removed.
No diversion 'diversion of /boot/LICENCE.broadcom by rpikernelhack', none removed.
Errors were encountered while processing:
/var/cache/apt/archives/raspberrypi-bootloader_1.20181112-1_armhf.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
How can I fix this error and complete the upgrade?
When I made the restore from the SD card to the USB drive I used an rsync exclude file like this:
/proc/*
/sys/*
/dev/*
/boot/*
/tmp/*
/run/*
/mnt/*
/media/*
.bash_history
/etc/fake-hwclock.data
/var/lib/rpimonitor/stat/
But after this, I wasn't sure whether I needed to copy /boot, but decided to copy it over with sudo cp -r /boot/* /media/usbdrive/boot/
.
Following this I set up my cmdline.txt and fstab etc to use the usb drive again instead of the SD after initial boot.
Some other things that might be relevant are
1) output of fdisk -l
pi@raspberrypi:~ $ sudo fdisk -l
Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/ram1: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/ram2: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/ram3: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/ram4: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/ram5: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/ram6: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/ram7: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/ram8: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/ram9: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/ram10: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/ram11: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/ram12: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/ram13: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/ram14: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/ram15: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/mmcblk0: 14.9 GiB, 15931539456 bytes, 31116288 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0004e623
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 8192 3279296 3271105 1.6G e W95 FAT16 (LBA)
/dev/mmcblk0p2 3279297 31116287 27836991 13.3G 5 Extended
/dev/mmcblk0p5 3284992 3350525 65534 32M 83 Linux
/dev/mmcblk0p6 3350528 3491839 141312 69M c W95 FAT32 (LBA)
/dev/mmcblk0p7 3497984 31116287 27618304 13.2G 83 Linux
Disk /dev/sdb: 117.4 GiB, 126035288064 bytes, 246162672 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 909F2695-EDB4-4CDE-A258-7EE27E75BD77
Device Start End Sectors Size Type
/dev/sdb1 2048 246162638 246160591 117.4G Linux filesystem
Disk /dev/sda: 230.5 GiB, 247510073344 bytes, 483418112 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00030033
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 483409919 483407872 230.5G 83 Linux
2) my fstab
pi@raspberrypi:~ $ cat /etc/fstab
proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults 0 2
#PARTUUID=d96b7723-01 /boot vfat defaults 0 2
#PARTUUID=d96b7723-02 / ext4 defaults,noatime 0 1
# The USB SSD drive
PARTUUID=712ae4a6-73d8-4aca-9ec6-b6e507c95f74 / ext4 defaults,noatime 0 1
# another USB flash drive
UUID=978cc26c-be1f-4318-b4c3-6b0448333b02 /media/usbflash0 ext4 defaults,nofail,noatime 0 0
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
3) contents of /boot
(on the usb drive, I copied this from sd card, should I have?)
pi@raspberrypi:~ $ ls /boot/
bcm2708-rpi-0-w.dtb bcm2708-rpi-b-plus.dtb bcm2709-rpi-2-b.dtb bcm2710-rpi-cm3.dtb defaults os recovery7.img recovery.elf recovery.img riscos-boot.bin
bcm2708-rpi-b.dtb bcm2708-rpi-cm.dtb bcm2710-rpi-3-b.dtb BUILD-DATA INSTRUCTIONS-README.txt overlays recovery.cmdline RECOVERY_FILES_DO_NOT_EDIT recovery.rfs
4) contents of sd card boot partition
pi@raspberrypi:~ $ sudo mkdir /media/sdboot
pi@raspberrypi:~ $ sudo mount /dev/mmcblk0p6 /media/sdboot/
pi@raspberrypi:~ $ ls /media/sdboot/
bcm2708-rpi-0-w.dtb bcm2708-rpi-b-plus.dtb bcm2709-rpi-2-b.dtb bcm2710-rpi-cm3.dtb cmdline.txt cmdline.txt.usb COPYING.linux fixup.dat fixup_x.dat kernel7.img LICENCE.broadcom os_config.json start_cd.elf start.elf
bcm2708-rpi-b.dtb bcm2708-rpi-cm.dtb bcm2710-rpi-3-b.dtb bootcode.bin cmdline.txt.orig config.txt fixup_cd.dat fixup_db.dat issue.txt kernel.img LICENSE.oracle overlays start_db.elf start_x.elf
3) my cmdline.txt in the sd card boot partition
pi@raspberrypi:~ $ cat /media/sdboot/cmdline.txt
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=712ae4a6-73d8-4aca-9ec6-b6e507c95f74 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait splash plymouth.ignore-serial-consoles max_usb_current=1
EDIT 1
When I originally set up the system, I used instructions very similar to these. This left me with a working SD card. It is the original SD card I am using as my 'backup'. I backed up my user data elsewhere.
mmcblk0p1
, but I don't reference that, I referencemmcblk0p6
, which is the SD card boot partition. That's why I showed my mount command. – crobar Jan 18 '19 at 15:20mmcblk0p1
in myfstab
! Maybe this is the issue! – crobar Jan 18 '19 at 15:42