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
signature.asc
Description: PGP signature