dnschneid / crouton

Chromium OS Universal Chroot Environment
https://goo.gl/fd3zc?si=1
BSD 3-Clause "New" or "Revised" License
8.55k stars 1.24k forks source link

Can't Properly Install Crouton Chroot Environment #5096

Open CABLE353 opened 2 weeks ago

CABLE353 commented 2 weeks ago

Please describe your issue:

Crouton won't install the chroot properly. It's about 98% there and it gives the dredded "Permission Denied" error for 2 directories it tries to make/use:

Installing mount-chroot into the host... Installing unmount-chroot into the host... Installing crash_reporter_wrapper into the host... /tmp/crouton-installer-cache/crouton.nIZ/host-bin/crash_reporter_wrapper: /var/run/crw/crw: /bin/sh: bad interpreter: Permission denied /tmp/crouton-installer-cache/crouton.nIZ/host-bin/crash_reporter_wrapper: line 119: /var/run/crw/crw: Success WARNING: Unable to register core dump handler. cp: cannot create directory '/var/run/crouton/mnt/stateful_partition/crouton/chroots/xenial/var/run/drm': Permission denied Unmounting /mnt/stateful_partition/crouton/chroots/xenial...

When I try to "sudo enter-chroot it gives me this:

chronos@localhost / $ sudo enter-chroot Password: Enter encryption passphrase for xenial: Entering /mnt/stateful_partition/crouton/chroots/xenial... /usr/local/bin/crash_reporter_wrapper: /var/run/crw/crw: /bin/sh: bad interpreter: Permission denied /usr/local/bin/crash_reporter_wrapper: line 119: /var/run/crw/crw: Success WARNING: Unable to register core dump handler. A chroot setup script still exists inside the chroot. The chroot may not be fully set up. Would you like to finish the setup? [Y/n/d] n Skipping setup. You will be prompted again next time. /mnt/stateful_partition/crouton/chroots/xenial doesn't appear to be a valid chroot. Unmounting /mnt/stateful_partition/crouton/chroots/xenial...

If I choose yes, it tries to re-run the setup script that was found, but then it fails with the exact same Permissions error, & then deletes the script rendering the chroot invalid/useless/broken/ect; options n & d just skip the retry attempt & delete the "leftover" script file. I have Chromebrew installed which just allows me to sudo in the crosh shell(not VT2), I've deleted & reinstalled crouton many times, I've also disconnected the battery from the board to disable firmware write protection, & installed the crouton integration chrome extension to no avail. I'm currently on the dev channel & have dev mode enabled. I'm on a Lenovo 100e Chromebook with 32gb of NAND disk space 4gb of RAM & an Intel Celeron CPU. My chrome Os version info is:

Google Chrome 129.0.6668.18 (Official Build) dev (64-bit) Revision 2ff0f2510c7a962b63e8fbf3a3a42da735affd80-refs/branch-heads/6668@{#400} Platform 16002.10.0 (Official Build) dev-channel coral Firmware Version Google_Coral.10068.92.0 Customization ID ROBO ARC SDK Version: Unknown JavaScript V8 12.9.202.5 User Agent Mozilla/5.0 (X11; CrOS x86_64 14541.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36

I'm not sure what else I need to do to get this crap working. Please help!

If known, describe the steps to reproduce the issue:

Try to install a Chroot using: sudo sh /path/to/downloaded/croutonscriptfile/ -r xenial -t x11,chrome,xorg,xiwi,keyboard,touch,unity,xfce -e -u

Equus-paradoxus commented 2 weeks ago

Firstly the installation instructions have changed. You now need to install with: sudo CROUTON_BRANCH=silence crouton -r distro -t targets That should fix the problem but additionally, in my experience, the unity target has dependencies on fonts that have been renamed so it can also cause installation to fail. To be absolutely certain you can install with minimal targets, -t core,cli should be sufficient, then update with the targets you want after confirming that you can access the chroot.

Equus-paradoxus commented 2 weeks ago

Oops it's -t core,cli-extra

CABLE353 commented 2 weeks ago

Ok. Let me try that real quick...

CABLE353 commented 2 weeks ago

Nothing really happened. It didn't fail as far as I can tell but nothing happened either: Screenshot 2024-09-02 1 35 18 PM

Does the command look right?

Equus-paradoxus commented 2 weeks ago

Sorry distro is the name of the distribution you want, I didn't make that clear.

Equus-paradoxus commented 2 weeks ago

Also you need to log in to vt2 to start crew-sudo. You can log out again immediately after and switch back to crosh.

CABLE353 commented 2 weeks ago

Now I'm getting a sudo: crouton: command not found error:

image

I logged out then back into the vt2 chronos shell, & restarted the crosh shell also.

Equus-paradoxus commented 2 weeks ago

Did you make the installer executable? I don't remember the command but I think it's in the reader.

Equus-paradoxus commented 2 weeks ago

This is from the readme:

If you're just here to use crouton, you can grab the latest release from https://goo.gl/fd3zc?si=1. Download it, pop open a shell (Ctrl+Alt+T, type shell and hit enter), make the installer executable with sudo install -Dt /usr/local/bin -m 755 ~/Downloads/crouton, then launch it with sudo crouton to see the help text.

You then need to run the sudo CROUTON_BRANCH=silence crouton command. Unity is a desktop not a distribution, you could install xenial as you were trying before but it's pretty old and you might have more luck with focal, so sudo CROUTON_BRANCH=silence crouton -r focal -t core,cli-extra should work. After that ensure that the enter-chroot command takes you into the chroot then run sudo CROUTON_BRANCH=silence crouton -n focal -u -t with your original list of targets following the t. I'd omit unity from that list, it's unlikely to work.

CABLE353 commented 2 weeks ago

It's downloading. I used focal like you suggested; & since I only want one desktop so I only did the first CROUTON_BRANCH command that you recommended. It looks successful so far... hopefully the install goes well & the enter-chroot works 🤞. It seems to keep failing a download though: W: Retrying failed download of http://archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc6_2.31-0ubuntu9_amd64.deb

Is this normal?

CABLE353 commented 2 weeks ago

It looks like there are a few failed downloads. Around like 10 or more. All are .Deb files from the archive.ubuntu website; & some look to be corrupt upon downloading.

W: Retrying failed download of http://archive.ubuntu.com/ubuntu/pool/main/p/p11-kit/libp11-kit0_0.23.20-1build1_amd64.deb I: Retrieving libp11-kit0 0.23.20-1build1 W: Retrying failed download of http://archive.ubuntu.com/ubuntu/pool/main/p/p11-kit/libp11-kit0_0.23.20-1build1_amd64.deb I: Retrieving libp11-kit0 0.23.20-1build1 W: Retrying failed download of http://archive.ubuntu.com/ubuntu/pool/main/p/p11-kit/libp11-kit0_0.23.20-1build1_amd64.deb W: http://archive.ubuntu.com/ubuntu/pool/main/p/p11-kit/libp11-kit0_0.23.20-1build1_amd64.deb was corrupt W: Couldn't download package libp11-kit0 (ver 0.23.20-1build1 arch amd64) at http://archive.ubuntu.com/ubuntu/pool/main/p/p11-kit/libp11-kit0_0.23.20-1build1_amd64.deb

This also happened:

E: Couldn't download packages: libp11-kit0 debootstrap error log: % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 4 53700 4 2606 0 0 2759 0 100 53700 100 53700 0 0 34367 0 100 53700 100 53700 0 0 34364 0 0:00:01 0:00:01 --:--:-- 34379 Failed to run debootstrap.

And the enter-chroot command doesn't exist. Do I have to restart the shell first for it to take affect?

CABLE353 commented 2 weeks ago

Retried it again with an ethernet connection & it didn't fail to download anything this time, but I got the same error as before 😭: image

Equus-paradoxus commented 2 weeks ago

That's actually progress, it's at least running more or less as expected. If it were me, I'd back up anything I wanted to keep and powerwash to start over with a clean install at this point. That can be a bit of a pain since you need to reinstall chromebrew and crew-sudo again but probably worth it. If you don't want to powerwash you could try updating and see if that fixes any outstanding issues: sudo CROUTON_BRANCH=silence crouton -r focal -u

CABLE353 commented 2 weeks ago

Updating didn't fix it; I tried to set permissions to 777 for the path all the way up to '/var/run/crouton/mnt/stateful_partition/crouton/chroots/focal/var/' and then it freaked out on me: image

This is weird. I know it's a noob question😆; but can't I just get a portable version of the operating system? You know, simple copy & paste into the /usr/local/ directory & then boot it up from there?

Equus-paradoxus commented 2 weeks ago

You shouldn't need to change any permissions to make it work. It's more likely that the data that was retained from the earlier attempts can't be made to function, which is why it won't complete the set up. That's why I suggested a powerwash since it will clean out any files that are preventing the installation from completing.

You could try the following:

sudo rm -r /mnt/stateful_partition/crouton

That should remove any files associated with the failed installs but may delete other files you need. Then you could run the installer again. Overall I prefer to powerwash since I find it easier to restore a whole backup than try to figure out which parts are missing.

CABLE353 commented 2 weeks ago

Well, I was trying my best to avoid doing a powerwash. Alas I'm just coming from crostini. I'm not going to lie, it really sucks that the backup feature for it STILL doesn't work properly. On my Chromebook, if I accidentally do something to my crostini container that makes it unfunctional; I can't just restore it via backup; I have to powerwash the ENTIRE Chromebook first. So I was hopeful that I could install something linux that I didn't have to powerwash for, but it seems no matter what, ANYTHING that has to do with Linux doesn't work after failing on a Chromebook until you powerwash the stupid thing🙄.

I'm going to powerwash now. I'll let you know if the installer is working for me.

Equus-paradoxus commented 2 weeks ago

I wouldn't necessarily say chromebooks are designed to be powerwashed but they don't interact with local files in the same way as any other os. Pretty much anything that can be saved is saved in your profile and you really need something like crostini or crouton to interact with 'local'' files. I have all the files I use on an external drive so a powerwash is a simple solution, all I need to remember is how to set up the environment again and all the files will already be in place.

CABLE353 commented 1 week ago

Ok. Just powerwashed, and went back to the stable channel, and I'm still getting the exact same error: image

I really must be an anomaly, or the script needs some major fixing for ChromeOS 126.0.6478.251.

CABLE353 commented 1 week ago

Is there a way to redirect the location of the chroot away from the /mnt/stateful_partition/ folder?

Equus-paradoxus commented 1 week ago

Two things you could check are if the directory already exists and if you can use mkdir to create it at the same location yourself. There was a security update around chromeos 126 that required remounting the security folder but I thought it was patched into the installer. I certainly haven't had issues since crouton was updated but I only restored existing chroots, I haven't actually created a new one since then. To remount security run sudo mount -o remount,rw /sys/kernel/security/ before running the installer. That may give you the write permissions to create the directory.

CABLE353 commented 1 week ago

After remounting the security directory, It didn't make a difference unfortunately. I've also tried disabling write protect using flashrom, to no avail. I think the ChromeOS dev team has finally figured out a way to completely squash the crouton environment for new users🙄.

CABLE353 commented 1 week ago

Why does the crouton environment even need a write protected directory like that anyway?

Equus-paradoxus commented 1 week ago

It was actually Google who changed the security to keep certain parts of the disc from being accessed. The remount is a workaround. But it should be included in the installer now anyway so I didn't think that was the issue. Maybe you could try a debian distro if ubuntu isn't working. Bullseye might run. I'm using bookworm but I don't remember it being straightforward to install so it's probably better trying Bullseye first. Replace focal with bullseye in the installation command and see what happens.

CABLE353 commented 1 week ago

Didn't work with bullseye. Still getting the same error.

CABLE353 commented 1 week ago

Is there any way to force enter-chroot, even if it's detected as "invalid" or "incomplete"?

CABLE353 commented 1 week ago

It also doesn't work with bookworm. All the same errors. Would I brick my Chromebook if I decided to permanently unmount the security Kernal?

CABLE353 commented 1 week ago

I made my roots permanently read/writable & STILL got the same error. So I think this is a crouton script error in whatever handoff it does with making this specific directory & giving correct permissions for the script to finish it further. This is kind of sad. I was hoping to install steam using a chroot desktop among other .Deb packages. Is there any other way of doing that with just chromebrew?

Equus-paradoxus commented 1 week ago

Looking at your errors, it seems like the mount point has actually been created but the issue arrises when it tries to copy the mount as a variable to the /var/ folder. Why that should be happening I don't know. Did you try running the installer in vt2? It's possible there's a permission conflict when crew-sudo passes the commands there from crosh. Alternatively you could try creating the directory yourself using mkdir and see if it's recognised.

CABLE353 commented 1 week ago

I made my rootfs permanently read/writable & STILL got the same error, even in VT2 & with mkdir. This is kind of sad. I was hoping to install steam within the chroot desktop along with other .Deb packages.