[Guide for openFyde] - Crostini Multi Container to Debian ArchLinux Ubuntu 🐧

List of available LXC live images

Crostini ArchLinux Penguin :white_check_mark:

1265f57e8f44c7c5b5a1a93ac8af4742e37d8540_2_690x446

For safety first keep the original debian penguin unchanged and just enable the #crostini-multi-container flag and add one more!

🖱️Add a Linux to your penguin sommelier first:🖱️

Crostini Vibes Enable and Become an LXC Expert:


Turn on the flag for multiple containers.
Go to Developers and add another container with a random name it will automatically create it with your ip.

  • Create an container via crostini in settings name it whatever you like.

🖱️Grant connection to your Linux container:🖱️

Start the terminal and grant you have access to the internet by doing sudo ping google.com if no return - then: Shut Down Crostini and start it again.


Repeat the process if needed.

  1. Start Vsh Termina
  • Press Ctrl+Alt+T to open the crosh terminal.
  • Type vsh termina.
  • If you see (termina) chronos@localhost ~ $, it means that Termina has started successfully.

Set Up the Arch Container - This installs archlinux into LXC container

  • Run the command below to install the ArchLinux container:
lxc list
lxc launch images:archlinux/current archlinux
lxc exec archlinux -- bash
#lxc stop / lxc delete / lxc start / lxc console

#set a root password
passwd

#Install basic requirements
yes y | pacman -Syu base-devel git gtk3 openssh xdg-utils xkeyboard-config base-devel git curl make neovim wl-clipboard fish base-devel pacman-contrib wayland xorg-xwayland devtools dhclient neofetch sudo screenfetch

Create your username and password ex: ‘archlinux’

sudo useradd -G wheel -m archlinux
sudo passwd archlinux

sudo sed -i 's/^# \(%wheel ALL=(ALL:ALL) ALL\)/\1/; s/^# \(%wheel ALL=(ALL:ALL) NOPASSWD: ALL\)/\1/' /etc/sudoers

exit
lxc exec archlinux su - archlinux
🖱️On arm64 you can just replace user 'alarm' (optional/skip)🖱️
grep 1000:1000 /etc/passwd
groupmod -n archlinux alarm
usermod -d /home/archlinux -l archlinux -m -c archlinux alarm

#sudo sed -i 's/^# \(%wheel ALL=(ALL:ALL) ALL\)/\1/; s/^# \(%wheel ALL=(ALL:ALL) NOPASSWD: ALL\)/\1/' /etc/sudoers
#or manually:

passwd archlinux #Set user passwd
visudo
# ^ Uncomment the line that says:
# %wheel ALL=(ALL) NOPASSWD ALL
:wq #(Press ESC and type :wq enter to save and exit)

usermod -aG wheel archlinux
exit 

#lxc exec container su - your_username
lxc exec archlinux su - archlinux

Install YAY and Crostini Interface

git clone https://aur.archlinux.org/yay.git
cd yay
yes y | makepkg -si

yay -S cros-container-guest-tools-git
exit

Exit Crosh - Start debian penguin to let it establish and then start your Archlinux clicking it 3 times.

Once it starts have fun et Voilá Sudo Pacman Treé Jolie.


🖱️Extras for pacman:🖱️
sudo nano /etc/pacman.conf
# ^ Optional: Update pacman config. I prefer to:
#   - uncomment #Color
#   - uncomment #VerbosePkgLists
#   - uncomment #ParallelDownloads = 5

sudo nano /etc/pacman.d/mirrorlist
# ^ Optional: Use a closer mirror. Eg, change
#   mirror.archlinuxarm.org => au.mirror.archlinuxarm.org
#
#   A full list of mirrors are in this page:
#   https://archlinuxarm.org/about/mirrors

🖱️Network Fix (Most likely needed):🖱️
#Check the network by running (it can't be empty) with:
ip -4 a show dev eth0
#if no connection then:
sudo dhcpcd eth0
sudo pacman -S dhclient
sudo systemctl disable systemd-networkd
sudo systemctl disable systemd-resolved
sudo unlink /etc/resolv.conf
sudo touch /etc/resolv.conf
sudo systemctl enable dhclient@eth0
sudo systemctl start dhclient@eth0
ping 8.8.8.8

🖱️Renaming containers (only optional)🖱️
#Crosh Ctrl+Alt+T
vsh termina
lxc stop archlinux
lxc stop penguin
lxc rename penguin debian
lxc rename archlinux penguin
lxc restart penguin

🖱️Links for Reference🖱️

You can switch it to ArchLinux Add ArchLinux for Linux Subsystem - FydeOS
Debian to Arch: Install Arch Linux on ChromeOS
Baldrailers Github: Arch Linux ARM on Crostini · GitHub

2 Likes

List of available LXC live images

Crostini Ubuntu Penguin :white_check_mark:

For safety first keep the original debian penguin unchanged and just enable the #crostini-multi-container flag and add one more!

🖱️Add a Linux to your penguin sommelier first:🖱️

Crostini Vibes Enable and Become an LXC Expert:

Turn on the flag for multiple containers.
Go to Developers and add another container with a random name it will automatically create it with your ip.

  • Create an container via crostini in settings name it whatever you like.

🖱️Grant connection to your Linux container:🖱️

Start the terminal and grant you have access to the internet by doing sudo ping google.com if no return - then: Shut Down Crostini and start it again.


Repeat the process if needed.

Open Crosh and lets make the LXC Ubuntu Container:

  1. Start Vsh Termina
  • Press Ctrl+Alt+T to open the crosh terminal.
  • Type vsh termina.
  • If you see (termina) chronos@localhost ~ $, it means that Termina has started successfully.

vsh termina # vmc stop termina / vmc launch termina
lxc list
# Clone your ubuntu container 
lxc launch ubuntu:mantic ubuntu -c security.privileged=true
lxc exec ubuntu -- bash
# lxc stop / lxc delete / lxc start / lxc console
# sudo /etc/init.d/networking restart

Install some basic stuff - Optional but I do recommend it :smiling_imp:

🖱️Nala old Legacy Install (Not needed since ubuntu lunar):🖱️
git clone https://gitlab.com/volian/nala.git
cd nala
sudo make install
sudo nala update && sudo nala upgrade -y
sudo apt update && sudo apt install nala git aptitude nano zenity screenfetch make python3-pip python3-apt python3-debian pandoc neofetch adwaita-icon-theme-full -y && screenfetch
#For ChromeOS use google packages instead: 
echo "deb https://storage.googleapis.com/cros-packages bullseye main" > /etc/apt/sources.list.d/cros.list && if [ -f /dev/.cros_milestone ]; then sudo sed -i "s?packages?packages/$(cat /dev/.cros_milestone)?" /etc/apt/sources.list.d/cros.list; fi

#For FydeOS use fyde packages instead:
echo "deb https://deb-mirror.fydeos.com/cros-packages bullseye main" > /etc/apt/sources.list.d/cros.list && if [ -f /dev/.cros_milestone ]; then sudo sed -i "s?packages?packages/$(cat /dev/.cros_milestone)?" /etc/apt/sources.list.d/cros.list; fi

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1397BC53640DB551
sudo apt update && sudo nala install cros-garcon cros-host-fonts cros-notificationd cros-sftp cros-sommelier bash-completion bzip2 cros-sommelier-config curl dbus-user-session dbus-x11 file fuse git gnupg iputils-ping iptables less libxss1 man-db pulseaudio udev unzip usbutils vim wget xz-utils cros-apt-config cros-logging cros-sommelier-config cros-sudo-config cros-systemd-overrides cros-wayland gtk2-engines-pixbuf libgtk2.0-0 libgtk-3-0 gtk2-engines-murrine -y && sudo nala upgrade -y
#All done here! Lets start Crostini now.

#sudo rm /etc/apt/sources.list.d/cros.list to clear anything not google/fydeos/etc.
#sudo nano /etc/apt/sources.list to clear things out.
#cd /etc/apt/sources.list.d/ to see whats going on.

🖱️Quick Start of the Penguin (Understand THIS):🖱️

Go to your Crostini Terminal open Ubuntu it wil likely fail the first time so force its opening a few times and remember to check if it has connection once open. (What it does… it tries to establish the sommelier connections to the lxc container and it kinda… fails easily).

Also: Starting the Debian penguin first kinda fixes the connections so then you can open this new changed linux

The third time is a win.


🖱️Network Fix (Most likely needed):🖱️
#Check the network by running (it can't be empty) with:
ip -4 a show dev eth0
#if no connection then:
sudo dhcpcd eth0
sudo dhclient
sudo systemctl disable systemd-networkd
sudo systemctl disable systemd-resolved
sudo unlink /etc/resolv.conf
sudo touch /etc/resolv.conf
sudo systemctl enable dhclient@eth0
sudo systemctl start dhclient@eth0
ping 8.8.8.8

🖱️Renaming containers (only optional)🖱️
#This is only needed if you want to replace the terminal other then add more.
#you gotta use your brain here a bit.. 
lxc list
lxc stop 'your_containers'
lxc rename penguin 'something_else' #to switch by the actual one
lxc rename ubuntu penguin #that is if you only want 1 crostini penguin container instead of the debian.
lxc restart penguin
#lxc stop ubuntu that is if u only created an named ubuntu lxc container and crostini
exit
exit

🖱️cros-guest-tools:🖱️

cros-guest-tools is the main thing here (just for reference)
sudo aptitude install bash-completion bzip2 cros-apt-config cros-gpu cros-logging cros-pulse-config cros-sommelier-config cros-sudo-config cros-systemd-overrides cros-wayland curl dbus-user-session dbus-x11 file fuse git gnupg iputils-ping iptables ess libxss1 man-db pulseaudio udev unzip usbutils vim wget xz-utils -y


🖱️Links for reference:🖱️

More info: linuxium.com.au: Introduction to Crostini - Part 3: Using Ubuntu by default
Alternative solution: GitHub - jcdang/chromeos-ubuntu-sommelier: Short and simple guide to get X11 apps on ChromeOS
Extra info: https://blog.csdn.net/qq_37401091/article/details/127460700
Debian to Ubuntu Crostini: https://www.reddit.com/r/Crostini/wiki/howto/run-ubuntu/#wiki_install_crostini_packages
Very Good info: Ubuntu 20.04 on Chromebook
Container privilege options: LXC 1.0: Unprivileged containers [7/10] | Stéphane Graber's website

1 Like