If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

Comment

All Linux needs to boot is something to initialize the hardware enough to load the kernel into memory and execute it. There is actually a lot of work to get to that point... but coreboot is suppose to do that using the minimal amount of effort.

Once Linux boots then it takes over the hardware and uses the Linux drivers to set everything up.

With a BIOS (and EFI is a 100x times more complex) there is a huge amount of things that the BIOS does to the hardware to get it pretty much all working before it bothers with a bootloader. When it finally gets around to booting Linux the Linux kernel must go back and 'undo' most of the BIOS does in order to get the hardware working properly. Then Linux is also forced to deal with BIOSes and EFI for things like ACPI and whatnot. BIOSes are really terribly programmed things... full of all sorts of legacy crud and just useless junk that doesn't really do anything for you. Essentially the developers just take the BIOSes they have used in a hundred other systems, add and modify enough code to get the system to work and then ships it. Then from the OS perspective it's just a black box. You have no idea what is going on in there or what it's spending all it's time doing. It's just insane.

And EFI is even worse. It has it's own embedded shell environment, interpreted scripting language and all sorts of other stuff... The more complex you make something the more buggy it's going to be. It's simply a matter of reality. Linux doesn't really need that much setup to get started. The OS is all that anybody is really interested in...

Initializing hardware should just take a moment.

Coreboot can also be used to run other payloads. One of the big ones is 'SeaBIOS'. SeaBIOS is a open source BIOS developed originally for machine emulators. It was then taken and modified for virtual machine environments like Qemu/KVM/Xen/Virtualbox/etc etc... and Coreboot can use it to launch systems that need a BIOS for booting... Like Windows.

Fun stuff.

Comment

All Linux needs to boot is something to initialize the hardware enough to load the kernel into memory and execute it. There is actually a lot of work to get to that point... but coreboot is suppose to do that using the minimal amount of effort.

Once Linux boots then it takes over the hardware and uses the Linux drivers to set everything up.

With a BIOS (and EFI is a 100x times more complex) there is a huge amount of things that the BIOS does to the hardware to get it pretty much all working before it bothers with a bootloader. When it finally gets around to booting Linux the Linux kernel must go back and 'undo' most of the BIOS does in order to get the hardware working properly. Then Linux is also forced to deal with BIOSes and EFI for things like ACPI and whatnot. BIOSes are really terribly programmed things... full of all sorts of legacy crud and just useless junk that doesn't really do anything for you. Essentially the developers just take the BIOSes they have used in a hundred other systems, add and modify enough code to get the system to work and then ships it. Then from the OS perspective it's just a black box. You have no idea what is going on in there or what it's spending all it's time doing. It's just insane.

And EFI is even worse. It has it's own embedded shell environment, interpreted scripting language and all sorts of other stuff... The more complex you make something the more buggy it's going to be. It's simply a matter of reality. Linux doesn't really need that much setup to get started. The OS is all that anybody is really interested in...

Initializing hardware should just take a moment.

Coreboot can also be used to run other payloads. One of the big ones is 'SeaBIOS'. SeaBIOS is a open source BIOS developed originally for machine emulators. It was then taken and modified for virtual machine environments like Qemu/KVM/Xen/Virtualbox/etc etc... and Coreboot can use it to launch systems that need a BIOS for booting... Like Windows.

Fun stuff.

The question should be how easy will this be with the Pixel. Ie in the simplest case you should be able to put the kernel (coreboot is supposed to be able to use the kernel as a payload) in the unprotected bios slot and get going.

It will be interesting when knowledgeable people get their hands on one.

Comment

The question should be how easy will this be with the Pixel. Ie in the simplest case you should be able to put the kernel (coreboot is supposed to be able to use the kernel as a payload) in the unprotected bios slot and get going.

It will be interesting when knowledgeable people get their hands on one.

Define 'easy'?

Maybe it would be helpful to understand how a computer operates at a low level? When the system is powered on the lines in the mainboard are provided with voltage which activates various bits and pieces of hardware. At that point they can't actually do anything. No keyboard input, no monitor or nothing. At that point the system isn't even capable of using your RAM or anything.. even the memory controllers need to be programmed to work correctly.

The CPU is then just hard-wired to read and execute at some memory address like 0x0 or whatever. That memory address is hard-wired to something.. like flash or something. It begins executing whatever program that is in that flash, which then goes out and initializes various bits and pieces. This is why on ARM systems like phones or whatever you can 'brick' a device by messing up the bootloader. Their is typically no bios in a ARM system. Nothing to setup the hardware or do anything. The bootloader is the functional equivalent of a BIOS. Without a bootloader in a ARM system you literally have nothing but a hand warmer... The 5 volts or 1.2 volts or whatever gets applied to the CPU... and that's it. The cpu turns on and just halts when it can't execute anything properly. Completely useless.

I don't know how hard it would be. But certainly it would require extra steps. Most people are going to want to run Debian or Ubuntu or Fedora or whatever on the system and they by default are going to expect to have a BIOS to boot from. Programming a Linux kernel payload into coreboot would probably be very similar to how you program a new firmware into a android phone or whatnot. You'd probably have to have some other LInux computer you can plug in and program the laptop.

Comment

I don't know how hard it would be. But certainly it would require extra steps. Most people are going to want to run Debian or Ubuntu or Fedora or whatever on the system and they by default are going to expect to have a BIOS to boot from. Programming a Linux kernel payload into coreboot would probably be very similar to how you program a new firmware into a android phone or whatnot. You'd probably have to have some other LInux computer you can plug in and program the laptop.

What i would like as a way of updating the thing would be:

1) Run your package manager/updater.
2) If new kernel download.
3) Run utility to do the magic required to set it up and copy it to the proper place.
4) Reboot.
5) ??????
6) Profit.

Thats not going to happen but it would be nice to have something like that.