Newly installed Debian stuck on loading on MacBook Pro "Core 2 Duo" 2.16
I also have 2007 MacbookPro2,1 and have found that the Linux Radeon driver does not work.
Without recompiling your kernel your options are extremely limited - you could try an extremely old kernel (before 2009 KMS introduction) which would be hard to find and insecure  or try passing nomodeset kernel parameter (which will mean no graphics at all).
To get graphics to work need to do the following:

Extract the vbios as described in comments in this 2010 bug report Radeon KMS fails with inaccessible AtomBIOS on systems with (U)EFI boot:



boot from latest ubuntu live CD (hold alt, or c, at boot)
dump the bios
dd if=/dev/mem of=vbios.bin bs=65536 skip=12 count=1
move it to your partition's /lib/firmware/radeon/vbios.bin


Based on this Archlinux forums thread Load custom Radeon firmware for Macbook Pro thread I saved vbios.bin to /usr/lib/firmware/radeon/vbios.bin.

Check it as described in link above:


b) You can verify the correctness with:
hexdump -C vbios.bin | head -n 1
00000000  55 aa 7d e9 7f 02 00 00  00 00 00 00 00 00 00 00  |U.}.............|
the first two bytes must be 55 aa, also later in the dump you see some copyright
notices. :-)


Patch radeon_bios.c source to read this file and recompile kernel.

This method has worked for me for the last several years.  Occasionally radeon_bios.c changes and the patch in the links above is outdated.
As of last month (October 2020) the following patch will work with kernel.org kernel.  For others you may need to manually adjust it.
--- archlinux-linux/drivers/gpu/drm/radeon/radeon_bios.c.orig   2020-04-08 13:12:37.572725381 +0200
+++ archlinux-linux/drivers/gpu/drm/radeon/radeon_bios.c    2020-04-08 13:26:48.700908967 +0200
@@ -33,6 +33,7 @@
 #include &lt;drm/drm_device.h&gt;

 #include &quot;atom.h&quot;
+#include &lt;linux/firmware.h&gt;
 #include &quot;radeon.h&quot;
 #include &quot;radeon_reg.h&quot;

@@ -60,15 +61,18 @@ static bool igp_read_bios_from_vram(stru
    vram_base = pci_resource_start(rdev-&gt;pdev, 0);
    bios = ioremap(vram_base, size);
    if (!bios) {
+       DRM_ERROR(&quot;No bios\n&quot;);
        return false;
    }

    if (size == 0 || bios[0] != 0x55 || bios[1] != 0xaa) {
+       DRM_ERROR(&quot;Invalid bios\n&quot;);
        iounmap(bios);
        return false;
    }
    rdev-&gt;bios = kmalloc(size, GFP_KERNEL);
    if (rdev-&gt;bios == NULL) {
+       DRM_ERROR(&quot;alloc fail\n&quot;);
        iounmap(bios);
        return false;
    }
@@ -77,6 +81,41 @@ static bool igp_read_bios_from_vram(stru
    return true;
 }

+static bool radeon_read_bios_from_firmware(struct radeon_device *rdev)
+{
+   const uint8_t __iomem *bios;
+   resource_size_t size;
+   const struct firmware *fw = NULL;
+
+   request_firmware(&amp;fw, &quot;radeon/vbios.bin&quot;, rdev-&gt;dev);
+   if (!fw) {
+           DRM_ERROR(&quot;No bios\n&quot;);
+           return false;
+   }
+   size = fw-&gt;size;
+   bios = fw-&gt;data;
+
+   if (!bios) {
+           DRM_ERROR(&quot;No bios\n&quot;);
+           return false;
+   }
+
+   if (size == 0 || bios[0] != 0x55 || bios[1] != 0xaa) {
+           DRM_ERROR(&quot;wrong sig\n&quot;);
+           release_firmware(fw);
+           return false;
+   }
+   rdev-&gt;bios = kmalloc(size, GFP_KERNEL);
+   if (rdev-&gt;bios == NULL) {
+           DRM_ERROR(&quot;alloc fail\n&quot;);
+           release_firmware(fw);
+           return false;
+   }
+   memcpy(rdev-&gt;bios, bios, size);
+   release_firmware(fw);
+   return true;
+}
+
 static bool radeon_read_bios(struct radeon_device *rdev)
 {
    uint8_t __iomem *bios, val1, val2;
@@ -663,7 +702,9 @@ bool radeon_get_bios(struct radeon_devic
    bool r;
    uint16_t tmp;

-   r = radeon_atrm_get_bios(rdev);
+   r = radeon_read_bios_from_firmware(rdev);
+   if (!r)
+       r = radeon_atrm_get_bios(rdev);
    if (!r)
        r = radeon_acpi_vfct_bios(rdev);
    if (!r)