Skip to content

Instantly share code, notes, and snippets.

View supechicken's full-sized avatar

SupeChicken666 supechicken

View GitHub Profile
@supechicken
supechicken / crosh-su
Last active March 6, 2024 12:08
A simple `su` client/daemon script for ChromeOS crosh shell
#!/usr/bin/env ruby
# CroshSU: "Fix" sudo in crosh by redirecting all sudo calls to VT-2 shell, inspired by root solutions on Android
#
# Usage: put this script into /usr/local/bin, run `crosh-su --daemon` in VT-2 and run
# some command with `crosh-su --client <command you want to run with root>` in crosh
#
require 'io/console'
require 'socket'
require 'pty'
require 'fileutils'
@supechicken
supechicken / root_mi_box_s_2nd_gen.md
Last active April 16, 2025 16:13
A tutorial for rooting Xiaomi TV Box S 2nd Gen (jaws) without UART/teardown

Rooting Xiaomi TV Box S 2nd Gen (jaws) without UART/teardown

Table of contents

  • Prerequisites
  • Step 1: Download the stock ROM for Xiaomi TV Box S 2nd Gen
  • Step 2: Extract boot image from the OTA archive
  • Step 3: Update the system with downloaded OTA archive
  • Step 4: Patch boot image with Magisk
  • Step 5: Unlock bootloader with fastboot
  • Step 6: Reboot to system and complete setup
@supechicken
supechicken / root_chromeos_arcvm.md
Last active January 13, 2024 12:46
[Tutorial] Root your ChromeOS Android subsystem w/ KernelSU (Android 11+)

Root your ChromeOS Android subsystem w/ KernelSU (Android 11+)

Note

This tutorial is also available on Reddit

Table of Contents

  • Overview

  • Notes

@supechicken
supechicken / build-termina-kernel.sh
Created March 3, 2024 17:35
Script snippet for building ChromeOS Crostini/Termina kernel
RELEASE=release-R123-15786.B-chromeos-6.1
LLVM_VERSION=18
curl -L https://apt.llvm.org/llvm.sh | sudo bash -s "${LLVM_VERSION}"
for f in clang clang++ ld.lld llvm-objdump llvm-ar llvm-nm llvm-strip llvm-objcopy llvm-readelf; do
sudo ln -sf $f-$LLVM_VERSION /usr/bin/$f
done
git clone https://chromium.googlesource.com/chromiumos/third_party/kernel.git -b ${RELEASE} --depth=1
@supechicken
supechicken / autologin-chromeos.md
Last active May 18, 2024 19:32
[Tutorial] Auto sign-in on ChromeOS startup

Auto sign-in on ChromeOS startup

Overview

In some scenarios, it is inconvenient/unnecessary to login with a password, for example, when using Chromebook as a home server or kiosk.

However, ChromeOS doesn't provide any way to enable auto-login or to disable the sign-in password (there was such a feature on macOS many years ago). And Google have no interest in adding this functionality also.

Recently I installed ChromeOS on my HTPC, planning to use it as a TV box (and the same trouble annoyed me). So I created a program to do it for me.

@supechicken
supechicken / privileged-crostini.md
Last active December 3, 2024 20:15
[Guide] Obtain full access to the underlying VM inside Crostini containers

Obtain full access to the underlying VM inside Crostini containers

Overview

As you might know, all Crostini containers are running under the "unprivileged container" mode and are kind of restricted, which means:

  • Unable to load any kernel modules
  • Unable to mount any disk/loopback images natively (although you could use FUSE to achieve a similar result, that's complicated to use)
  • Unable to setup device mappers

So what's the solution? This guide will cover things below:

@supechicken
supechicken / x11-fullscreen-hack.c
Created March 30, 2025 18:46
A simple utility written in C for forcing any X11 application getting into fullscreen
#include <stdio.h>
#include <stdlib.h>
#include <X11/Xlib.h>
#include <X11/Xatom.h>
int main(int argc, char** argv) {
Window win = strtoul(argv[1], NULL, 16);
Display *display = XOpenDisplay(getenv("ORIGDISP"));
XEvent ev;
@supechicken
supechicken / crostini-waydroid.md
Last active April 9, 2025 08:14
[Guide] Bringing Android functionality to ChromeOS Flex with Waydroid

Bringing Android functionality to ChromeOS Flex with Waydroid

Note

Check here for video demonstration

Note

This guide works on Chromebooks with Android subsystem support (ARC++/ARCVM)

Tested on ChromeOS Flex v134.0.6998.130

@supechicken
supechicken / edit_distance.sh
Created April 16, 2025 16:18
Snippet to find edit distance in Bash
#!/bin/bash
function get_coord_index() {
local array_width=$1
local i=$2
local j=$3
echo "$(((i * $array_width) + j))"
}