[gPXE] Chrome OS

Thomas Miletich thomas.miletich at gmail.com
Wed Jul 7 11:23:18 EDT 2010


Hello everyone,
sorry for the delayed response.

As Stefan said, I indeed tried to boot Chrome OS over the network
once. I got it fully booting back then, and not many changes were
required. This information is from lat November 2009, so it may be
out-of-date by now.

Here is a summary of a mail I wrote back then. This information
assumes that you're building Chromium OS from source and are familiar
with the basics of the build system. I hope this is useful in any way.
If you can get it working, an appnote in the Etherboot wiki would be
much appreciated :)

> The only thing that was needed to make the initrd mount the nfs root
> was recompiling a kernel with nfsroot support.
> You can use make menuconfig(or whatever you prefer), you just have to
> make sure that you copy your .config to
> chromeos/config/chromeos-intel-menlow.
> When you call build_kernel.sh it will do a distclean and use the
> config file from that directory. If you don't put your config there,
> it will be overwritten.
>
> I also edited chroot/etc/initramfs-tools/initramfs.conf and changed
> 'MODULES=most' to 'MODULES=netboot', to include the network drivers. I
> didn't actually verify if this influenced anything.
> The nfsroot scripts looked like unchanged ubuntu scripts, so Chrome OS
> seems to be quite compatible. I assume that your ubuntu httpfs scripts
> should work too.
>
> Once the root fs is mounted you have to prevent Chrome OS from
> reconfiguring the network interfaces:
>
> --- connman.conf.bak    2009-11-21 01:16:09.356553404 +0100
> +++ connman.conf        2009-11-21 00:07:13.365304234 +0100
> @@ -10,4 +10,4 @@
>
>  respawn
>  expect fork
> -exec /usr/sbin/connmand
> +exec /usr/sbin/connmand -I eth0
>
> Chrome OS also wants to use a 'stateful partition' where it saves some
> config data. As that won't work so well with a read-only root fs,
> mount a tmpfs there:
>
> --- chromeos_startup.bak    2009-11-21 01:21:02.873304403 +0100
> +++ chromeos_startup        2009-11-21 01:20:36.526317229 +0100
> @@ -52,7 +52,8 @@
>   # convention when specifying the stateful partition.
>   STATE_DEV="/dev/disk/by-label/C-STATE"
>  fi
> -mount -n -t ext3 "$STATE_DEV" /mnt/stateful_partition
> +#mount -n -t ext3 "$STATE_DEV" /mnt/stateful_partition
> +mount -n -t tmpfs none /mnt/stateful_partition
>
>  # Make sure stateful partition has some basic directories
>  mkdir -p -m 0755 /mnt/stateful_partition/var/cache
>
> My approach was actually not very systematic and it is possible that I
> changed files that I forgot to mention. Should have used some kind of
> version control.
> Possibly /etc/init/iptables.conf on the root fs also need to be changed.


--
Thomas

On Wed, Jun 30, 2010 at 8:49 AM, Stefan Hajnoczi <stefanha at gmail.com> wrote:
> On Tue, Jun 29, 2010 at 5:27 PM, Hsuan-Yeh Chang <hsuanyeh at yahoo.com> wrote:
>> Has anyone booted Chrome OS?
>
> I know that Thomas Miletich got it partially booting.  I believe he
> had the kernel and initramfs loaded, the next step was to get the root
> file system over HTTP/NFS.  It wasn't finished due to lack of time -
> it should definitely be possible!
>
> Booting a Linux-based OS, such as Chrome OS, that does not come with
> network booting functionality involves understanding its boot process
> and adjusting kernel parameters and initramfs scripts so that
> resources are fetched over the network.  The boot.kernel.org project
> has several examples of network booting Linux distros over HTTP,
> perhaps the BKO git repo has the modifications that were necessary to
> various distros.
>
> Stefan
>


More information about the gPXE mailing list