https://github.com/eliranwong/chromeoslinux
Notes on setup Linux on Chrome OS
https://github.com/eliranwong/chromeoslinux
Last synced: 6 months ago
JSON representation
Notes on setup Linux on Chrome OS
- Host: GitHub
- URL: https://github.com/eliranwong/chromeoslinux
- Owner: eliranwong
- Created: 2021-01-23T16:56:49.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-05-22T15:27:59.000Z (over 1 year ago)
- Last Synced: 2024-05-22T16:13:05.660Z (over 1 year ago)
- Size: 1.61 MB
- Stars: 10
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Chrome OS Linux
This repository contains notes about Linux setup on Chrome OS. These are written for setting up environment for developing bible apps.
We also wrote some note about WSL2 setup on Windows: https://github.com/eliranwong/wsl2
# Tested Device & Versions
Notes in this repository are tested with the following device and os versions:
Device 1: Google Pixelbook Go
Chrome OS Version: 107.0.5304.110 (Official Build) (64-bit)
Device 2: Apple mac mini (2012)
Chrome OS Flex Version: 108.0.5359.111 (Official Build) (64-bit)
Linux version:
> cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"CPU:
> dpkg --print-architecture
amd64
# System Info Viewer
Cog is a nice extension to view system information:
https://chrome.google.com/webstore/detail/cog-system-info-viewer/difcjdggkffcfgcfconafogflmmaadco?hl=en
# Check the zRam enabled by default
Press "ctrl + alt + t" key combination to open a crosh session and run:
> free -ht
Can use "swap" command to allocate the size of virtual memory instead of the default one, but it is unnecessary in common cases.
To change virtual memory, e.g.:
> swap enable 2048
To change to factory default:
(If the size is omitted, the factory default is chosen)
> swap enable
Remarks: Restart device for change in virtual memory to take effect.
Read https://support.google.com/chromebook/thread/93286060/want-to-increase-virtual-ram-memory-in-chromebook?hl=en
# Turn ON Linux
Make sure you have the latest version of Chrome OS first, because "sudo apt update" does not work in some old Chrome OS versions.
1) Open Settings > About Chrome OS > Check for updates
2) Restart after updates if any
3) Open Settings > Linux > Turn On
4) To check the Linux's version installed, open terminal and type:
> cat /etc/os-release
If the version is not 10 (buster) or above, you'll need to run the update script:
> sudo bash /opt/google/cros-containers/bin/upgrade_container5) To update packages, run on terminal app:
> sudo apt update && sudo apt dist-upgrade6) To enable ADB debugging: Settings > Linux > Develop Android apps > Enable ADB debugging
7) To use microphone with Linux app: Settings > Linux > Allow Linux to access your microphone. [Remarks: Microphone setting here cannot be changed if Linux container is running. Make sure to shut down Linux container first before changing this option.]
Reference: https://support.google.com/chromebook/answer/9145439?hl=en-GB
# How to restart Linux virtual machine?
1) Right-click "Terminal" app icon on the "shelf".
2) Shut down Linux
3) Start the "Terminal" app again# Where to adjust disk size of Linux container?
Settings > Linux > Disk size > Change
To check disk storage, run:
> df -h
# Share Chrome OS Folder(s) with Linux
To access chrome os files from Linux side.
e.g. Open "Files" app, right-click "Downloads" and select "Share with Linux"
# Package management
apt:
https://github.com/eliranwong/ChromeOSLinux/blob/main/package_mx/apt.md
dpkg:
https://github.com/eliranwong/ChromeOSLinux/blob/main/package_mx/dpkg.md
flatpak [avoid flatpak if possible if you want your downloaded apps to work with fcitx]:
https://github.com/eliranwong/ChromeOSLinux/blob/main/package_mx/flatpak.md
synaptic:
https://github.com/eliranwong/ChromeOSLinux/blob/main/package_mx/synaptic.md
# Basic Tools & Libaries
To install some basic command line tools and libraries, run:
> sudo apt -y install software-properties-common dirmngr apt-transport-https lsb-release ca-certificates apt-utils build-essential cmake tree wget curl git zip unzip xz-utils nano micro w3m lynx lib32stdc++6 sqlite3 libsqlite3-dev libasound2 libnss3 libncurses5 libncurses5-dev libgl1-mesa-dev mesa-utils libglu1-mesa lsb-release binutils ffmpeg gawk opencc plocate gnome-keyring libssl-dev libffi-dev libstdc++5 libpci3 libpci-dev python3 python3-setuptools python3-pip python3-dev python3-venv zlib1g-dev libgdbm-dev libnss3-dev libreadline-dev libbz2-dev gcc xorg-dev exo-utils dex xdg-utils libavcodec-extra libportaudio2 moreutils llvm libncursesw5-dev tk-dev liblzma-dev python3-openssl libxml2-dev libxmlsec1-dev libfuse2 protobuf-compiler
# Display
Note on wayland: https://github.com/eliranwong/ChromeOSLinux/blob/main/display/wayland.md
# Input Method - fcitx
e.g. Chinese pinyin
https://github.com/eliranwong/ChromeOSLinux/blob/main/input_method/fcitx.md
# Add Fonts
To install additional fonts, e.g. ubuntu fonts:
1) Download the latest version of Ubuntu Fonts from http://font.ubuntu.com/ or run:
> wget https://assets.ubuntu.com/v1/0cef8205-ubuntu-font-family-0.83.zip2) Unzip font package:
> unzip 0cef8205-ubuntu-font-family-0.83.zip3) Create user fonts directory:
> mkdir -p ~/.fonts4) Copy ubuntu fonts to user fonts directory:
> cp -r ubuntu-font-family-0.83/ ~/.fonts5) Build fonts information cache files:
> fc-cache -f -vRemarks: font directory lists are placed in /etc/fonts/fonts.conf
# Add Fonts with font-viewer
> sudo apt install -y font-viewer font-manager-common
For example:
1. download Hebrew fonts from https://www.1001fonts.com/hebrew-fonts.html
2. unzip the downloaded zip files
3. double click a font file in pcmanfm to launch '/usr/libexec/font-manager/font-viewer'
4. press 'install font'# Text Editor
nano
> sudo apt install nano -y
Move down a page: "ctrl + v"
Move up a page: "ctrl + y"
Quick jump to the end of the file: "alt + \\"
Quick jump to the end of the file: "alt + /"
# Terminal
The built-in "Terminal" app that comes with Chrome OS is generally nice. However, it is not good for typing non-English characters, like Chinese. Chinese characters are misplaced as one type. We want a terminal app that:
* supports copy & paste operations
* supports unicode
* works with fcitx
* allow customisationWe tested different terminal app on Chrome OS. The best options we found are 'konsole' and 'rxvt-unicode'.
To install 'konsole', run:
> sudo apt install -y konsole breeze-icon-theme
To copy, press 'ctrl+shift+c'
To paste, press 'ctrl+shift+v'
To run 'konsole' as login shell by default:
Settings > Configure Konsole > Profiles > Profile 1 (Default) > Edit > General > Command > /bin/bash -l
To change 'konsole' font, e.g. to Noto Sans Mono:
Settings > Configure Konsole > Profiles > Profile 1 (Default) > Edit > Appearance > Font > Noto Sans Mono
To support fcitx when konsole is launched via desktop file:
> sudo nano /usr/share/applications/org.kde.konsole.desktop
Change from:
> Exec=konsole
to:
> Exec=env QT_IM_MODULE=fcitx5 /usr/bin/konsole
For 'rxvt-unicode', read:
https://github.com/eliranwong/ChromeOSLinux/blob/main/terminal/rxvt-unicode.md
Remarks: Gnome-terminal is a popular choice, however, it does not fully work with fcitx on chrome os.
# Browser
Microsoft Edge
Microsoft Edge work with Chrome OS built-in input methods, without the need of fcitx:
Microsoft Edge can be downloaded at (select the .deb package):
https://www.microsoft.com/en-gb/edge/download
Browsers that work with fcitx
Two examples: Firefox and Chrome. Both of these browsers work with fcitx on Chrome OS Linux.
Firefox
There are several ways to install firefox. Firefox website suggests Chrome OS users to use flatpak to install firefox. However, the firefox installed through flatpak does not work with input method fcitx.
To work with fcitx, install firefox via either of the following methods:
esr version:
> sudo apt install -y firefox-esr
To launch the installed esr version:
> firefox-esr
full version:
Download firefox package (*.tar.bz2) at:
https://www.mozilla.org/firefox/linux/?utm_medium=referral&utm_source=support.mozilla.org
Run in terminal:
> sudo apt install -y libstdc++5 libdbus-glib*
> cd ~
> tar xjf firefox-*.tar.bz2
> rm firefox-*.tar.bz2
To launch the installed firefox:
> ~/firefox/firefox
Set a shortcut:
> echo "alias firefox=$HOME/firefox/firefox" >> ~/.bashrc
Chrome
To download, install and set up:
> sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
> sudo dpkg -i google-chrome-stable_current_amd64.deb
> sudo apt install --fix-broken -y
> sudo dpkg -i google-chrome-stable_current_amd64.deb
To run:
> google-chrome
To tweak (enter in url):
> chrome://flags
> chrome://components
Tor Browser
> echo "deb http://ftp.debian.org/debian buster-backports main contrib" | sudo tee /etc/apt/sources.list.d/backports.list
> sudo apt update
> sudo apt install torbrowser-launcher -t buster-backports -y
> torbrowser-launcher
# File Manager
We prefer 'pcmanfm'
To install, run:
> sudo apt install -y pcmanfm pcmanfm-qt pcmanfm-qt-l10n libfm-qt-dev libfm-qt8
To run:
> pcmanfm
or
> pcmanfm-qt
To integrate terminal 'konsole' with 'pcmanfm':
1. Install 'konsole' by running 'sudo apt install konsole'
2. Go to Edit > Preferences > Advanced > Terminal emulator
3. Change from 'x-terminal-emulator %s' to '/usr/bin/konsole %s' or 'env QT_IM_MODULE=fcitx5 /usr/bin/konsole %s' to use fcitx5 on konsole windows, opened via 'pcmanfm'To integrate archiver manager 'file-roller' with 'pcmanfm':
1. Install 'file-roller' by running 'sudo apt install file-roller'
2. Go to Edit > Preferences > Advanced > Archiver integration
3. Select file-rollerRemarks: use 'pcmanfm' instead of 'pcmanfm-qt' on wayland, as Wayland does not support QWindow::requestActivate().
We also tested several other file managers on Chome OS:
* nautilus does not fully work with fcitx. If you want to install nautilus anyway, run:
> sudo apt install -y nautilus nautilus-admin nautilus-extension-gnome-terminal nautilus-image-converter nautilus-font-manager
* thunar and nemo does not work with clipboard
# Image Orangiser
> sudo apt install gthumb -y
> gthumb
# Access ALL Files from Linux
Chrome OS "Files" app can only read Linux home folder, but not other directories.
It is better to use 'pcmanfm' to access all Linux files as well as all chrome os + Android files.
# Access ALL Chrome OS Files from Linux
1) Launch Chrome OS "Files" app
2) Right-click "My Files" > Share folder with Linux > OK
3) Launch Linux "pcmanfm" or "pcmanfm-qt", go to /mnt/chromeos/, right-click "MyFiles" to add a bookmark, so that "My Files" appears on pcmanfm side bar.
4) To add an alias for use with commands:
> echo "alias myfiles='cd /mnt/chromeos/MyFiles'" >> ~/.bashrc
# Access Android Folders from Linux
By default, chrome OS "Files" app shows only 4 Android folders Documents, Movies, Music, Pictures. To access the rest of the folders:
1) Launch Chrome OS "Files" app
2) Click the three-vertical-dot button, located at the righter upper corner.
3) Select "Show all Play folders"
4) Right-click Folder(s) under "Play Files" > Share folder with Linux > OK
# Access USB Files
Access USB content at:
To share USB content with Linux:
1) Launch Chrome OS 'Files' app
2) Right-click USB device, appeared on side panel
3) Select 'Share with Linux'To access via Linus, run on Linux terminal:
> cd /mnt/chromeos/removable
# Office Apps - wps
We prefer WPS office. It has better compatability with Microsoft documents than libreoffice. You may read our notes about wps at:
https://github.com/eliranwong/ChromeOSLinux/blob/main/office/wps.md
# ePub Reader & Editor
Reader:
> sudo flatpak install --from https://flathub.org/repo/appstream/com.github.babluboy.bookworm.flatpakref
> echo "alias bookworm='flatpak run com.github.babluboy.bookworm &>/dev/null & disown'" >> ~/.bashrc
Editor:
> sudo apt install sigil
> echo "alias sigil='env QT_QPA_PLATFORM=xcb sigil'" >> ~/.bashrc
# Test Audio
Update to the latest Chrome OS to get audio support for Linux apps.
Test: run a espeak command:
> sudo apt install espeak -y
> espeak "testing audio"
[To install additional data for espeak: https://github.com/eliranwong/ChromeOSLinux/blob/main/multimedia/espeak.md]
Remarks: Audio is not supported in some old versions of Chrome OS.
# Media Player
> sudo apt install vlc -y
# Youtube Downloader
https://github.com/eliranwong/ChromeOSLinux/blob/main/multimedia/yt-dlp.md
# Video Editor
https://github.com/eliranwong/ChromeOSLinux/blob/main/multimedia/kdenlive.md
# Audio Editor
> sudo apt install audacity
Enable to use microphone for recording:
1) Shutdown Linux container first [right-click Terminal app icon on the shelf & select "Shut down Linux (Beta)"]
2) Enable to use microphone with Linux app: Settings > Linux > Allow Linux to access your microphone.
3) Launch Terminal app and audacity> audacity
4) Select "default: Mic:0" on microphone option
# Scaling Individual Applications
If you find the installed audacity too small on screen, you may want to scale it up.
> echo 'alias audacity="sommelier -X --scale=0.5 --dpi=120 audacity"' >> ~/.bashrc
Edit the desktop shortcut file:
> sudo nano /usr/share/applications/audacity.desktop
Change from:
> Exec=audacity %F
to:
> Exec=sommelier -X --scale=0.5 --dpi=120 audacity
Read more at: https://www.reddit.com/r/Crostini/wiki/howto/adjust-display-scaling#wiki_adjusting_display_scaling_per_application
# Development Tools
go
https://github.com/eliranwong/ChromeOSLinux/blob/main/development/go.md
Android Studio + Flutter + Dart + connecting flutter to chromebook
We found the following way is the easiest one to setup Android Studio together with flutter and dart. Overall, it is easier to first install Android Studio then flutter and dart.
https://github.com/eliranwong/ChromeOSLinux/blob/main/development/AndroidStudioFlutter.md
VS Code:
https://github.com/eliranwong/wsl2/blob/master/programming/vs_code.md
python3:
sudo apt install build-essential python3 python-setuptools python3-pip python3-dev python3-venv libssl-dev libffi-dev -y
pyenv:
> sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev curl libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
> curl https://pyenv.run | bash
> git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
> micro .bashrc
copy the following lines at the end of the file:
```
# pyenv
# Load pyenv automatically by appending
# the following to
# ~/.bash_profile if it exists, otherwise ~/.profile (for login shells)
# and ~/.bashrc (for interactive shells) :
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
# Restart your shell for the changes to take effect.
# Load pyenv-virtualenv automatically by adding
# the following to ~/.bashrc:
eval "$(pyenv virtualenv-init -)"
# shims path
export PATH="$PYENV_ROOT/shims:$PATH"
```Press "ctrl+s" & "ctrl+q" to save and close the file
More about pyenv at: https://github.com/pyenv/pyenv/wiki
More about pyenv-virtualenv at: https://github.com/pyenv/pyenv-virtualenv
More about pyenv plugins at: https://github.com/pyenv/pyenv/wiki/Plugins
nvm & node
https://github.com/eliranwong/ChromeOSLinux/blob/main/development/nvm_node.md
git
https://github.com/eliranwong/wsl2/blob/master/programming/git.md
Qt
https://github.com/eliranwong/ChromeOSLinux/blob/main/development/qt.md
sqlitebrowser
> sudo apt install sqlitebrowser
# Microsoft Teams
Download the .deb package of Microsoft Teams at: https://aka.ms/get-teams-linux
> dpkg -i [package-name]
# Signal Desktop
> wget -O- https://updates.signal.org/desktop/apt/keys.asc | sudo apt-key add -
> echo "deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main" | sudo tee -a /etc/apt/sources.list.d/signal-xenial.list
> sudo apt update && sudo apt install signal-desktop
# Bible Apps
Unique Bible App Desktop
https://github.com/eliranwong/ChromeOSLinux/blob/main/bible/UniqueBibleApp.md
Unique Bible App Hybrid
https://github.com/eliranwong/UniqueBibleAppHybrid
# Setup alias
Edit file ~/.bashrc
> nano ~/.bashrc
At the end of the file, add, for examples:
alias update='sudo apt update && sudo apt dist-upgrade && updatedb && youtube-dl -U'
alias uba='/home/eliranwong/UniqueBible/uba.py'
alias audacity='sommelier -X --scale=0.5 --dpi=120 audacity &>/dev/null & disown'
alias chrome='google-chrome-stable &>/dev/null & disown'
alias firefox='/home/eliranwong/.Applications/firefox/firefox &>/dev/null & disown'
alias studio='urxvt -e /opt/android-studio/bin/studio.sh &>/dev/null & disown'
alias bookworm='flatpak run com.github.babluboy.bookworm &>/dev/null & disown'
alias pyside2examples='source ~/UniqueBible/venv/bin/activate && cd ~/UniqueBible/venv/lib/python3.7/site-packages/PySide2/examples'
alias myfiles='cd /mnt/chromeos/MyFiles'
alias playfiles='cd /mnt/chromeos/PlayFiles'# Useful Command Line Tools
https://github.com/eliranwong/ChromeOSLinux/blob/main/cli/common.md
# More Linux softwares
https://github.com/luong-komorebi/Awesome-Linux-Software
# User Configurations
> ls ~/.config
# Assign Default Applications
Manually edit '/usr/share/applications/mimeapps.list' or '.config/mimeapps.list'
[Default Applications]
inode/directory=pcmanfm-qt.desktop
application/pdf=wps-office-pdf.desktopAlternatively, use xdg-mime command, e.g.:
> xdg-mime default pcmanfm-qt.desktop inode/directory
> xdg-mime default wps-office-pdf.desktop application/pdf
> cat .config/mimeapps.list
# Desktop Shortcuts
> ls /usr/share/applications
Desktop shortcuts created by Chrome are stored at
> ls ~/.local/share/applications
# apt-repository
/etc/apt/sources.list.d
# setup docker
https://dvillalobos.github.io/2020/How-to-install-and-run-Docker-on-a-Chromebook/
# setup webtops
https://tech.davidfield.co.uk/webtops-linux-desktop-in-a-web-browser/
To install Arch Linux webtop, where "/home/\/development/webtops/arch-xfce" specifies the local path to store webtop user home directory [change it according to your own needs]:
> sudo docker run -d --name=webtop --security-opt seccomp=unconfined -e PUID=1000 -e PGID=1000 -e TZ=Europe/London -e SUBFOLDER=/ -e KEYBOARD=en-gb-qwerty -p 3000:3000 -v /home/\/development/webtops/arch-xfce:/config -v /var/run/docker.sock:/var/run/docker.sock --shm-size="1gb" --restart unless-stopped lscr.io/linuxserver/webtop:arch-xfce
To run webtop:
> http://localhost:3000/
To setup firefox addon "video-downloadhelper" on Arch Linux webtop:
Note: Addon "video-downloadhelper" and its companion app are tested on Alpine, Ubuntu, Fedora and Arch webtop images. They work properly only on Arch without installing extra components.
1) Install addon at: https://addons.mozilla.org/en-GB/firefox/addon/video-downloadhelper/
2) "Install Companion App" is prompted, the first time when a video, e.g. a vimeo video, is downloaded. Select "Linux - 64 bits - targz other linux distributions"
3) To install the companion app, open webtop terminal (not chromeOS Linux terminal) at download folder and run:
> cd ~/Downloads
> tar xf net.downloadhelper.coapp-1.6.3-1_amd64.tar.gz -C ~
> ~/net.downloadhelper.coapp-1.6.3/bin/net.downloadhelper.coapp-linux-64 install --user
# Restart Network
> sudo /etc/init.d/networking restart
# Install Ubuntu on Pixelbook Go
https://github.com/eliranwong/ChromeOSLinux/blob/main/development/ubuntu.md