Кіріспе
Ашық кодты компьютерлік микробағдарламасы
coreboot, бұрын LinuxBIOS деп аталған, көптеген компьютерлерде кездесетін меншік микробағдарламасын (BIOS немесе UEFI) ауыстыруға бағытталған бағдарламалық жоба. Ол заманауи 32 бит немесе 64 бит операциялық жүйені жүктеу және іске қосу үшін қажетті ең аз міндеттерді орындауға арналған жеңіл микробағдарламаны пайдаланады. coreboot аппараттықты тікелей инициализациялайтындықтан, ол қолдайтын әрбір чипсет пен аналық платаға бейімделуі керек. Осы себепті coreboot тек шектеулі аппараттық платформалар мен аналық плата модельдері үшін ғана қолжетімді. coreboot-тың бір түрі – Libreboot, ол соңғы пайдаланушыларға арналған, меншік бөліктерінен жартылай бос бағдарламалық тарату.
Тарих
Coreboot жобасы жылдам іске қосылатын және қателерді интеллектуалды түрде шешетін BIOS құру мақсатымен басталды. Ол GNU General Public License нұсқасы 2 (GPLv2) шарттарымен лицензияланған. Басты үлес қосушыларға LANL, SiS, AMD, Coresystems және Linux Networx, Inc, сондай-ақ аналық плата өндірушілері MSI, Gigabyte және Tyan кіреді, олар өздерінің стандартты BIOS-тарымен қатар coreboot ұсынады немесе кейбір аналық платаларының аппараттық интерфейстерінің сипаттамаларын ұсынады. Google coreboot жобасын жартылай қаржыландырады. CME Group, фьючерстік биржалар тобы, 2009 жылдан бастап coreboot жобасын қолдауға кірісті. Алғашқы үш модельден басқа, барлық Chromebook құрылғылары coreboot-ты қолданады. ARM командалар жиынтығына негізделген процессорларды қолдау үшін Das U Boot коды пайдаланылды. 2019 жылдың маусым айында coreboot, NSA-ның Ghidra бағдарламалық қамтамасын, осы бағдарлама ашық кодты және тегін болғаннан кейін, микрокодтағы нақты мәселелерді кері инженериялау үшін қолдана бастады.
Дизайн
coreboot әдетте Linux ядросын жүктейді, бірақ ол кез келген дербес ELF атқарылатын файлын жүктей алады, мысалы, iPXE, gPXE немесе Etherboot, олар желі арқылы Linux ядросын жүктеуге мүмкіндік береді, немесе SeaBIOS, ол Linux ядросын, Windows 2000 және одан кейінгі нұсқаларын, сондай-ақ BSD жүйелерін жүктей алады; Windows 2000/XP және OpenBSD қолдауы бұрын ADLO арқылы қамтамасыз етілген. coreboot ядроны Myrinet, Quadrics немесе SCI кластерлік байланыстар сияқты қолдау көрсетілетін кез келген құрылғыдан да жүктей алады. Plan 9 ядросы сияқты басқа ядроларды тікелей жүктеу де мүмкін. Ядроны тікелей жүктеудің орнына, coreboot басқаруды GNU GRUB 2-нің coreboot-пен үйлесімді нұсқасы сияқты арнайы жүктеуге беруге болады. coreboot негізінен C тілінде жазылған, аз мөлшерде құрастыру кодын қамтиды. C тілін басты бағдарламалау тілі ретінде таңдау, қазіргі PC BIOS-тарымен салыстырғанда, кодты тексеруді жеңілдетеді, олар көбінесе құрастыру тілінде жазылған, бұл қауіпсіздікті жақсартады. Қауіпсіздік деңгейін одан әрі арттыру үшін Ada тілінде coreboot бөліктерін жазуға құрастыру және орындалу кезінде қолдау бар, бірақ қазіргі уақытта ол сирек қолданылады. Көз кодың GNU GPL нұсқасы 2 лицензиясы бойынша жарияланады. coreboot аппараттық инициализацияның ең минималды көлемін орындайды, содан кейін басқаруды операциялық жүйеге береді. Нәтижесінде, операциялық жүйе басқаруды алғаннан кейін coreboot кодың ешқайсысы жұмыс істемейді. coreboot-тың ерекшелігі – x86 нұсқасы тек он команданы орындағаннан кейін 32 биттік режимде жұмыс істейді (басқа x86 BIOS-тарының көпшілігі 16 биттік режимде жұмыс істейді). Бұл жаңа PC аппараттық құралдарында қолданылатын қазіргі заманғы UEFI микробағдарламасына ұқсас.
coreboot is written primarily in C, with a small amount of assembly code. Choosing C as the primary programming language enables easier code audits when compared to contemporary PC BIOS that was generally written in assembly, which results in improved security. There is build and runtime support to write parts of coreboot in Ada to further raise the security bar, but it is currently only sporadically used. The source code is released under the GNU GPL version 2 license. coreboot performs the absolute minimal amount of hardware initialization and then passes control to the operating system. As a result, there is no coreboot code running once the operating system has taken control. A feature of coreboot is that the x86 version runs in 32 bit mode after executing only ten instructions (almost all other x86 BIOSes run exclusively in 16 bit mode). This is similar to the modern UEFI firmware, which is used on newer PC hardware.
DRAM- ды инициализациялау
Coreboot-тың ең қиын инициализациялайтын аппараттық құрылғылары DRAM контроллері мен DRAM болып табылады. Кейбір жағдайларда осы тақырыптағы техникалық құжаттама құпиялылық сақтау шартымен (NDA) шектелген немесе қол жетімді емес. RAM-ды инициализациялау әсіресе қиын, себебі RAM инициализацияланғанша оны пайдалану мүмкін емес. Сондықтан DRAM контроллерлері мен DRAM-ды инициализациялау үшін инициализациялау коды тек CPU-ның жалпы мақсаттағы регистрлерін немесе уақытша сақтау ретінде RAM орнына кэшті пайдалана алады. RAM орнына регистрлерді қолданатын C компиляторы romcc бұл міндетті жеңілдетеді. romcc-ті пайдалану арқылы DRAM DIMM-дерінің SPD ROM-дарына SMBus арқылы кіру салыстырмалы түрде оңай, бұл RAM-ды пайдалануға мүмкіндік береді. Жаңа x86 процессорларында DRAM инициализацияланғанша процессор кэшін RAM ретінде пайдалануға болады. Процессор кэшін RAM режимінде кэшке де инициализациялау қажет, бірақ бұл DRAM-ды инициализациялауға қарағанда аз нұсқауларды қажет етеді. Сонымен қатар, Cache as RAM режимінің инициализациясы CPU архитектурасына тән, сондықтан ол DRAM инициализациясынан гөрі көбірек жалпылама, ал DRAM инициализациясы әр чипсет пен аналық платаға тән. Көптеген қазіргі заманғы x86 платформалары үшін DRAM-ды орнату үшін тек өндіруші ұсынған жабық кодты бинарлық компоненттер қолданылады. Intel жүйелері үшін FSP M қажет, ал AMD-де қазіргі уақытта қолдау жоқ. AMD жүйелеріндегі меншік құқығындағы UEFI микропрограммасы үшін қазіргі уақытта бинарлық AGESA қолданылады, және бұл модель болашақта AMD-ге қатысты кез келген coreboot қолдауына көшірілетіні күтілуде.
Coreboot-ты әзірлеу және жөндеу
CPU-ны ауыстыратын немесе JTAG порты арқылы қосылатын CPU эмуляторлары да бар, мысалы, Sage SmartProbe. Кодты BIOS құрылғысын тікелей жадқа жазудың орнына BIOS эмуляторларына құруға немесе жүктеуге болады.
Еуропалық Coreboot конференциясы
Бір физикалық кездесу – 2017 жылдың қазан айында ұйымдастырылып, үш күнге созылған Еуропалық Coreboot конференциясы.
Конференция тарихы
Іс-шара және жыл Күні Қонақ қаласы Өтетін орны Ресурстар Тақырыбы ЕҮК2017 26.10 – 29.10 Бохум, Германия RUB конгресс орталығы https://ecc2017.com