2

This question already has an answer here:

I have installed Ubuntu in my chromebook but it only boots into chrome OS. My goal is to have my Chromebook booting into Ubuntu.

marked as duplicate by user364819, Eric Carvalho, Zanna, David Foerster, muru Jul 6 '17 at 6:26

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • 1
    How did you install Ubuntu? – Seth Jan 18 '14 at 2:57
  • Seth I followed instructions on 'YouTube' I saw everything downloading (about20min) but I can not get into Ubuntu – Brian Jan 18 '14 at 14:59
  • 1
    This question is pretty clear, without needing any edits, the user is trying to run Ubuntu on his chromebook. Ubuntu is already installed but it will only boot into Chrome OS not into Ubuntu. – Hans Jan 18 '14 at 16:20
  • @Hans ok, but how he installed Ubuntu? Used an script? He says followed instructions on YT, but which and who's instructions? – Braiam Jan 18 '14 at 18:25
  • Stu has pointed out that this question may be related to Chromebook install Ubuntu but I can not to start Ubuntu. Acer C7 and perhaps information there could be helpful here (or vice versa). – Eliah Kagan Jan 18 '14 at 20:09
5

Once you have installed Ubuntu, if you reboot your Chromebook, by default it will continue to boot into Chrome OS, which lives on in its own dedicated partition.

If you'd like ChrUbuntu to be the default, open up the Terminal in ChrUbuntu (or the Developer Console command prompt in Chrome OS) and enter sudo cgpt add -i 6 -P 5 -S 1 /dev/sda to change the default boot partition. Changing it back to Chrome OS is as easy as disabling developer mode when you boot the Chromebook, or entering sudo cgpt add -i 6 -P 0 -S 1 /dev/sda at the terminal.

EDIT I:

Set boot priority

At this point we should have the following situation:

  • Image-A is an official Google Chrome OS which can boot either in normal mode or dev-mode.
  • Image-B is (or will be after the first autoupdate) another official Google Chrome OS which can boot either in normal mode or dev-mode.
  • Image-C is Chrome OS kernel with a modified command line and an Ubuntu rootfs, which can only boot in dev-mode.

Next, we adjust the priority among the images so we can try out our Ubuntu image. The image priority is an attribute of its kernel partition. Run cgpt show /dev/sda, to see the kernel priorities:

localhost ~ # cgpt show /dev/sda

...

 4096     32768       2  Label: "KERN-A"
                         Type: ChromeOS kernel
                         UUID: D176DC60-81F1-654E-8953-E3D28019738C
                         Attr: priority=3 tries=0 successful=1

...

36864     32768       4  Label: "KERN-B"
                         Type: ChromeOS kernel
                         UUID: F1A2C65C-CC22-FF4A-A8BC-67BA233F3D40
                         Attr: priority=0 tries=15 successful=0

...

12369920     32768       6  Label: "KERN-C"
                         Type: ChromeOS kernel
                         UUID: B6954485-4295-9749-956A-C315B01FB684
                         Attr: priority=0 tries=15 successful=0

The priority determines the order in which the BIOS tries to find a valid kernel (bigger is higher, zero means don't even try). The tries field is decremented each time the BIOS tries to boot it, and if it's zero, the kernel is considered invalid (this lets us boot new images without looping forever if they don't work). The successful field overrides the tries field, but is only set by the OS once it's up and running.

Let's change the priority of KERN-C to 5:

cgpt add -i 6 -P 5 -T 1 -S 0 /dev/sda

This makes KERN-C the highest priority, but only gives us one chance to boot it. That way if it doesn't work, we're not completely stuck.

If you reboot now, you should come up in Ubuntu! Note that Computer Science Standard Answer #1 applies: It Works For Me™

If something went wrong and Ubuntu crashes or you powered off, the tries field for KERN-C will have been decremented to 0 and you'll fall back to booting Chrome OS.

Assuming that Ubuntu booted and you could log in, go to Applications->Accessories->Terminal to get a shell, and run

sudo cgpt add -i 6 -P 5 -S 1 /dev/sda

This will mark the Ubuntu kernel as valid, so it will continue to boot next time.

Now you can switch back and forth between the official Chrome OS release and Ubuntu just by flipping the dev-mode switch. Going from dev-mode to normal mode erases STATE (/dev/sda1), but much more quickly. Going from normal to dev-mode again would normally do a slow erase of /dev/sda1, but since we're booting Ubuntu that doesn't happen.

This works because although KERN-C has the highest priority, it isn't signed by Google. In dev-mode that's okay, but in normal mode it will be rejected by the BIOS. Since we've set the successful flag to 1, the BIOS won't mark it invalid but will just skip it each time. This makes the normal-mode boot time slightly longer, but only by a second or two.

Of course you could also switch between images from within dev-mode just by manually setting the priorities with cgpt before rebooting.

Note that if the normal image autoupdates, it will probably change the kernel priorities so that Image-C is no longer the highest and the next time you switch to dev mode, you will a) have a long wait, b) still be running Chrome OS, and c) have to use cgpt to raise the KERN-C priority again.

But, because autoupdate only switches between Image-A and Image-B, the Ubuntu kernel and rootfs shouldn't be affected.

  • 2
    @Brian check out the edit that I made to my answer, tell us if it worked (if so, don't forget to mark the answer as accepted). If it doesn't please let us know as well. – Hans Jan 18 '14 at 16:14
  • 2
    Ok, just access your Chromebook into the Chrome OS and open a console, then enter the codes I typed in above, and that's all. – Hans Jan 18 '14 at 17:52
  • 2
    A console or command prompt is an application used to give the computer some orders. There is a command prompt or console within all OS (actually there are some OS that have only a command prompt, the don't have a graphic interface at all!) the Chrome OS command prompt is accessed by hitting CTRL+ALT+Tdirectly within the system, then do as instructed. PS: The Ubuntu command prompt is the Terminal you will be working on it a lot, so get used to it. – Hans Jan 18 '14 at 18:17
  • 2
    @Brian , by this time I will recommend you to visit this site – Hans Jan 18 '14 at 18:33
  • 2
    @Brian we do our best, but we can't teach you how to use a computer. Read a bit about how to use the developer console, and find an answer about the cgpt command in chromebook in other forum. Then comeback and do as instructed before. – Hans Jan 18 '14 at 19:35
0

I don't have enough reputation to comment on the above post unfortunately, and my post is too long for a comment, so I'll clarify the problem with your console, Brian.

Your problem is that you're not even in the console. That's why you get "Unknown command: sudo" and "Unknown command: cgpt". You're not in a full Linux shell.

How to fix: After going into the console with ctrl+alt+T, type "shell" without quotation marks. Then you'll be able to execute the commands helpfully provided by Hans.

Thanks,
Num

P.S. I tried your method, Hans, and there's a slight problem. I don't have a kernel C. However, the console accepted the cgpt add -i 6 -P 5 -T 1 -S 0 /dev/sda command without an error. When I rebooted, the screen turned on but stayed black, then off, then flashed black again, then gave me the "OS verification is OFF" message. I pressed ctrl+D, and, after a couple more flashes of black between quick power-offs of the monitor, it booted successfully... into ChromeOS. Do I need to apt-get headers or something? I know KERN-C is supposed to be on the cgpt show /dev/sda list. My laptop is an Acer C710 if that helps. I realize this problem is mainly occurring on Acers.

  • I checked again just now, and Kern-C has been added to the list. Probably fixed itself with the flashes. – Numailia Jul 9 '14 at 15:19
  • I tried running sudo cgpt add -i 6 -P 5 -T 1 -S 0 /dev/sda, then cgpt show /dev/sda to make sure the kernel C had the highest priorities, which it did, then rebooted. It had the flashes as before, then went into ChromeOS. I ran cgpt show /dev/sda in the terminal to see what was wrong, and sure enough, the values of KERN-C had all been reset to zeros. No priorities, no tries, no successes. What should I do? The terminal isn't saving my changes. – Numailia Jul 9 '14 at 15:34
  • I have the same problem. Eric Reyes reported a problem with the ChrUbuntu script which repacks the kernel with the wrong architecture option. (I noticed that my Acer C710 became 64 bits some time ago.) I locally fixed the script after download and redid the installation, but it did not work. Since this was an overwrite of an existing Ubuntu installation, I will retry the procedure from scratch with a restored Chromebook. – SylvainC Jul 21 '14 at 20:18

Not the answer you're looking for? Browse other questions tagged or ask your own question.