Várias receitas falham com diversos erros de múltiplas definições de variáveis globais. Acredito que a causa disso seja a flag "-fno-common" que agora é padrão no GCC 10.
Uma gambiarra é adicionar -fcommon às CFLAGS dos Makefiles para ter o comportamento das versões anteriores do compilador, mas pra resolver só adicionando extern às variáveis.
Documentação do GCC sobre o assunto aqui.
Exemplo dos erros no linker:
ld -m i386pe -T link.ld -o BL.BIN head.o main.o loader.o init.o ports.o x86.o stdio.o stdlib.o string.o keyboard.o pci.o hdd.o ide.o timer.o pages.o heap.o procedure.o fs.o shell.o r_render.o abort.o faults.o
ld: loader.o:(.bss+0x0): múltiplas definições de "current_mode"; main.o:(.bss+0x0): definido primeiro aqui
ld: loader.o:(.bss+0x20): múltiplas definições de "BootBlock"; main.o:(.bss+0x20): definido primeiro aqui
ld: loader.o:(.bss+0x50): múltiplas definições de "gdefLegacyBIOSBoot"; main.o:(.bss+0x50): definido primeiro aqui
ld: loader.o:(.bss+0x54): múltiplas definições de "gdefEFIBoot"; main.o:(.bss+0x54): definido primeiro aqui
ld: loader.o:(.bss+0x58): múltiplas definições de "gdefSafeBoot"; main.o:(.bss+0x58): definido primeiro aqui
ld: loader.o:(.bss+0x5c): múltiplas definições de "gdefShowLogo"; main.o:(.bss+0x5c): definido primeiro aqui
ld: loader.o:(.bss+0x60): múltiplas definições de "gdefShowProgressBar"; main.o:(.bss+0x60): definido primeiro aqui
ld: loader.o:(.bss+0x64): múltiplas definições de "____testing_memory_size_flag"; main.o:(.bss+0x64): definido primeiro aqui
ld: loader.o:(.bss+0x68): múltiplas definições de "__last_valid_address"; main.o:(.bss+0x68): definido primeiro aqui
ld: loader.o:(.bss+0x6c): múltiplas definições de "heapCount"; main.o:(.bss+0x6c): definido primeiro aqui
ld: loader.o:(.bss+0x70): múltiplas definições de "bl_heap_start"; main.o:(.bss+0x70): definido primeiro aqui
ld: loader.o:(.bss+0x74): múltiplas definições de "bl_heap_end"; main.o:(.bss+0x74): definido primeiro aqui
ld: loader.o:(.bss+0x78): múltiplas definições de "g_heap_pointer"; main.o:(.bss+0x78): definido primeiro aqui
ld: loader.o:(.bss+0x7c): múltiplas definições de "g_available_heap"; main.o:(.bss+0x7c): definido primeiro aqui
ld: loader.o:(.bss+0x80): múltiplas definições de "mmblockCount"; main.o:(.bss+0x80): definido primeiro aqui
ld: loader.o:(.bss+0x84): múltiplas definições de "current_mmblock"; main.o:(.bss+0x84): definido primeiro aqui
ld: loader.o:(.bss+0xa0): múltiplas definições de "mmblockList"; main.o:(.bss+0xa0): definido primeiro aqui
ld: loader.o:(.bss+0x4a0): múltiplas definições de "heapList"; main.o:(.bss+0x4a0): definido primeiro aqui
ld: loader.o:(.bss+0x4c0): múltiplas definições de "bliTesting"; main.o:(.bss+0x4c0): definido primeiro aqui
ld: loader.o:(.bss+0x4c4): múltiplas definições de "g_fat16_root_status"; main.o:(.bss+0x4c4): definido primeiro aqui
ld: loader.o:(.bss+0x4c8): múltiplas definições de "g_fat16_fat_status"; main.o:(.bss+0x4c8): definido primeiro aqui
ld: loader.o:(.bss+0x4cc): múltiplas definições de "g_file_system_type"; main.o:(.bss+0x4cc): definido primeiro aqui
ld: loader.o:(.bss+0x4e0): múltiplas definições de "buffer_dir_entry"; main.o:(.bss+0x4e0): definido primeiro aqui
ld: loader.o:(.bss+0x6e0): múltiplas definições de "file_cluster_list"; main.o:(.bss+0x6e0): definido primeiro aqui
ld: loader.o:(.bss+0xee0): múltiplas definições de "partition"; main.o:(.bss+0xee0): definido primeiro aqui
ld: loader.o:(.bss+0xef0): múltiplas definições de "keyboard_queue_tail"; main.o:(.bss+0xef0): definido primeiro aqui
ld: loader.o:(.bss+0xef4): múltiplas definições de "keyboard_queue_head"; main.o:(.bss+0xef4): definido primeiro aqui
ld: loader.o:(.bss+0xef8): múltiplas definições de "keyboard_queue"; main.o:(.bss+0xef8): definido primeiro aqui
ld: loader.o:(.bss+0xf00): múltiplas definições de "keyboard_flag"; main.o:(.bss+0xf00): definido primeiro aqui
ld: loader.o:(.bss+0xf04): múltiplas definições de "ATAFlag"; main.o:(.bss+0xf04): definido primeiro aqui
ld: loader.o:(.bss+0xf20): múltiplas definições de "dev_nport"; main.o:(.bss+0xf20): definido primeiro aqui
ld: loader.o:(.bss+0xf40): múltiplas definições de "ata_pci"; main.o:(.bss+0xf40): definido primeiro aqui
ld: loader.o:(.bss+0xf74): múltiplas definições de "ata"; main.o:(.bss+0xf74): definido primeiro aqui
ld: loader.o:(.bss+0xf8c): múltiplas definições de "ata_identify_dev_buf"; main.o:(.bss+0xf8c): definido primeiro aqui
ld: loader.o:(.bss+0xf90): múltiplas definições de "ata_record_dev"; main.o:(.bss+0xf90): definido primeiro aqui
ld: loader.o:(.bss+0xf91): múltiplas definições de "ata_record_channel"; main.o:(.bss+0xf91): definido primeiro aqui
ld: loader.o:(.bss+0xf94): múltiplas definições de "g_current_ide_channel"; main.o:(.bss+0xf94): definido primeiro aqui
ld: loader.o:(.bss+0xf98): múltiplas definições de "g_current_ide_device"; main.o:(.bss+0xf98): definido primeiro aqui
ld: loader.o:(.bss+0xfa0): múltiplas definições de "ide_ports"; main.o:(.bss+0xfa0): definido primeiro aqui
ld: loader.o:(.bss+0x1000): múltiplas definições de "ide_handler_address"; main.o:(.bss+0x1000): definido primeiro aqui
ld: loader.o:(.bss+0x1020): múltiplas definições de "idechannelList"; main.o:(.bss+0x1020): definido primeiro aqui
ld: loader.o:(.bss+0x10e0): múltiplas definições de "IDE"; main.o:(.bss+0x10e0): definido primeiro aqui
ld: loader.o:(.bss+0x1100): múltiplas definições de "prompt"; main.o:(.bss+0x1100): definido primeiro aqui
ld: loader.o:(.bss+0x11fc): múltiplas definições de "prompt_pos"; main.o:(.bss+0x11fc): definido primeiro aqui
ld: loader.o:(.bss+0x1200): múltiplas definições de "g_cmd_status"; main.o:(.bss+0x1200): definido primeiro aqui
ld: loader.o:(.bss+0x1204): múltiplas definições de "g_initialized"; main.o:(.bss+0x1204): definido primeiro aqui
ld: loader.o:(.bss+0x1208): múltiplas definições de "g_driver_hdd_initialized"; main.o:(.bss+0x1208): definido primeiro aqui
ld: loader.o:(.bss+0x120c): múltiplas definições de "g_cursor_x"; main.o:(.bss+0x120c): definido primeiro aqui
ld: loader.o:(.bss+0x1210): múltiplas definições de "g_cursor_y"; main.o:(.bss+0x1210): definido primeiro aqui
ld: loader.o:(.bss+0x1214): múltiplas definições de "g_system_color"; main.o:(.bss+0x1214): definido primeiro aqui
ld: loader.o:(.bss+0x1218): múltiplas definições de "g_char_attrib"; main.o:(.bss+0x1218): definido primeiro aqui
ld: loader.o:(.bss+0x121c): múltiplas definições de "CURSOR_X"; main.o:(.bss+0x121c): definido primeiro aqui
ld: loader.o:(.bss+0x1220): múltiplas definições de "CURSOR_Y"; main.o:(.bss+0x1220): definido primeiro aqui
ld: loader.o:(.bss+0x1224): múltiplas definições de "STATUS_X"; main.o:(.bss+0x1224): definido primeiro aqui
ld: loader.o:(.bss+0x1228): múltiplas definições de "STATUS_Y"; main.o:(.bss+0x1228): definido primeiro aqui
ld: loader.o:(.bss+0x122c): múltiplas definições de "EDITBOX_X"; main.o:(.bss+0x122c): definido primeiro aqui
ld: loader.o:(.bss+0x1230): múltiplas definições de "EDITBOX_Y"; main.o:(.bss+0x1230): definido primeiro aqui
ld: loader.o:(.bss+0x1234): múltiplas definições de "EDITBOX_LARGURA"; main.o:(.bss+0x1234): definido primeiro aqui
ld: loader.o:(.bss+0x1238): múltiplas definições de "EDITBOX_ALTURA"; main.o:(.bss+0x1238): definido primeiro aqui
ld: loader.o:(.bss+0x123c): múltiplas definições de "EDITBOX_BG_COLOR"; main.o:(.bss+0x123c): definido primeiro aqui
ld: loader.o:(.bss+0x1240): múltiplas definições de "EDITBOX_TEXT_COLOR"; main.o:(.bss+0x1240): definido primeiro aqui
ld: loader.o:(.bss+0x1244): múltiplas definições de "LegacyCR3"; main.o:(.bss+0x1244): definido primeiro aqui
ld: loader.o:(.bss+0x1248): múltiplas definições de "BootLoaderCR3"; main.o:(.bss+0x1248): definido primeiro aqui
ld: loader.o:(.bss+0x124c): múltiplas definições de "useGUI"; main.o:(.bss+0x124c): definido primeiro aqui
ld: loader.o:(.bss+0x1250): múltiplas definições de "g_proc_status"; main.o:(.bss+0x1250): definido primeiro aqui
ld: loader.o:(.bss+0x1254): múltiplas definições de "g_next_app"; main.o:(.bss+0x1254): definido primeiro aqui
ld: loader.o:(.bss+0x1258): múltiplas definições de "g_next_proc"; main.o:(.bss+0x1258): definido primeiro aqui
ld: loader.o:(.bss+0x125c): múltiplas definições de "g_nova_mensagem"; main.o:(.bss+0x125c): definido primeiro aqui
ld: loader.o:(.bss+0x1260): múltiplas definições de "next_address"; main.o:(.bss+0x1260): definido primeiro aqui
ld: loader.o:(.bss+0x1264): múltiplas definições de "g_lbf_pa"; main.o:(.bss+0x1264): definido primeiro aqui
ld: loader.o:(.bss+0x1268): múltiplas definições de "g_lbf_va"; main.o:(.bss+0x1268): definido primeiro aqui
ld: loader.o:(.bss+0x126c): múltiplas definições de "system_info"; main.o:(.bss+0x126c): definido primeiro aqui
ld: loader.o:(.bss+0x1274): múltiplas definições de "VideoBlock"; main.o:(.bss+0x1274): definido primeiro aqui
ld: loader.o:(.bss+0x1290): múltiplas definições de "vesa_mode"; main.o:(.bss+0x1290): definido primeiro aqui
ld: loader.o:(.bss+0x12a0): múltiplas definições de "procedure_info"; main.o:(.bss+0x12a0): definido primeiro aqui
ld: loader.o:(.bss+0x12b0): múltiplas definições de "menu_highlight"; main.o:(.bss+0x12b0): definido primeiro aqui
ld: loader.o:(.bss+0x12c0): múltiplas definições de "MENU"; main.o:(.bss+0x12c0): definido primeiro aqui
...
make[1]: *** [Makefile:112: link-x86] Erro 1
make[1]: Saindo do diretório '/home/gabriel/git/gramado/boot/x86/2bl'
make: *** [Makefile:133: land-os] Erro 2
```
test