Package: partman-base
Version: 179
Severity: important
Tags: patch
Several armhf platforms have u-boot installed directly to the device
in an area which gets wiped out by partman. This results in
debian-installer producing a "successful" install, but zeros out the
location of the bootloader in the process... so fails to boot.
This was fixed for sunxi/allwinner platforms (see:
https://bugs.debian.org/751704), but other platforms such as imx6
(Wandboard, CuBox-i) and am335x (BeagleBone Black) are still affected
by the issue.
The following proof-of-concept patch may be a little too broad,
affecting all Freescale or AM33XX systems, although it is limited to
installs to /dev/mmcblk0. BeagleBone Black may also need this code
when installing to /dev/mmcblk1...
Essentially it renames the is_sunxi_system to
is_system_with_firmware_on_disk, and adds cases for the additional
platforms.
diff --git a/parted_server.c b/parted_server.c
index 808a85f..e9e72a0 100644
--- a/parted_server.c
+++ b/parted_server.c
@@ -1330,9 +1330,10 @@ command_dump()
oprintf("OK\n");
}
-/* Check whether we are running on a sunxi-based system. */
+/* Check whether we are running on a sunxi-based, freescale-based, or
+ AM33XX (beaglebone black) system. */
int
-is_sunxi_system()
+is_system_with_firmware_on_disk()
{
int cpuinfo_handle;
int result = 0;
@@ -1345,6 +1346,10 @@ is_sunxi_system()
buf[length]='\0';
if (strstr(buf, "Allwinner") != NULL)
result = 1;
+ else if (strstr(buf, "Freescale") != NULL)
+ result = 1;
+ else if (strstr(buf, "AM33XX") != NULL)
+ result = 1;
}
close(cpuinfo_handle);
}
@@ -1365,9 +1370,9 @@ command_commit()
* the firmware area, resulting in an unbootable system (see
* bug #751704).
*/
- if (is_sunxi_system() && !strcmp(disk->dev->path, "/dev/mmcblk0")) {
+ if (is_system_with_firmware_on_disk() && !strcmp(disk->dev->path, "/dev/mmcblk0")) {
disk->needs_clobber = 0;
- log("Sunxi platform detected. Disabling ped_disk_clobber " \
+ log("Sunxi/Freescale/AM33XX detected. Disabling ped_disk_clobber" \
"for the boot device %s to protect the firmware " \
"area.", disk->dev->path);
}
Thanks for considering!
live well,
vagrant
Attachment:
signature.asc
Description: PGP signature