CRUX-ARM : Home

Home :: Documentation :: Download :: Development :: Community :: Packages :: Bugs :: Links :: About :: Donors

Supported Devices


Samsung Chromebook

CPU Information

processor : 0
model name : ARMv7 Processor rev 4 (v7l)
BogoMIPS : 48.00
Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc0f
CPU revision : 4
processor : 1
model name : ARMv7 Processor rev 4 (v7l)
BogoMIPS : 48.00
Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc0f
CPU revision : 4
Hardware : SAMSUNG EXYNOS5 (Flattened Device Tree)
Revision : 0000
Serial : 0000000000000000

boot.log

About this device

The Samsung Chromebook XE303C12 is an ultraportable ARM-based laptop originally designed for Chrome OS, powered by a Samsung Exynos 5 Dual 5250 processor and a Mali-T604 GPU. CRUX-ARM provides dedicated support and optimized root filesystems for this device, enabling a lightweight and flexible Linux experience.

Needed stuff

Preparation

Partitioning the Storage Device

We can do the install into a usb device (sdX) or into a SD card (mmcblk1). Let's manage it as $DEVICE$. You need to change this for your selection.

First we need to umount all devices

umount /dev/$DEVICE$*

Create a GPT partition table:

fdisk /dev/$DEVICE$
# Create an empty GTP partition table:
Type: g
# Save changes:
Type: w

Partition the $DEVICE$

cgpt create /dev/$DEVICE$

Add the kernel partition

cgpt add -i 1 -t kernel -b 8192 -s 32768 -l Kernel -S 1 -T 5 -P 10 /dev/$DEVICE$

To create the rootfs partition, we first need to calculate how big to make the partition using information from cgpt show. Look for the number under the start column for Sec GPT table which is 15633375 in this example: We need to know where to create the second partition. We need to select the start point of the SEC GTP table. We can know this with this command (cgpt show /dev/$DEVICE$):

localhost / # cgpt show /dev/$DEVICE$
       start        size    part  contents
           0           1          PMBR
           1           1          Pri GPT header
           2          32          Pri GPT table
        8192       32768       1  Label: "Kernel"
                                  Type: ChromeOS kernel
                                  UUID: B26B3F11-0DCE-3B40-A5B6-747A8B87AC2F
                                  Attr: priority=10 tries=5 successful=1 
   124735455          32          Sec GPT table
   124735487           1          Sec GPT header

Replace the XXX in this command with the number from above (in our case 124735455):

cgpt add -i 2 -t data -b 40960 -s `expr XXX - 40960` -l Root /dev/$DEVICE$

Refresh the partitions:

partx -a /dev/$DEVICE$

Format the rootfs partition (look that we are using now the second partition of the $DEVICE$:

mkfs.ext4 /dev/$DEVICE$2

Deploying CRUX-ARM root filesystem and Kernel

Download and install CRUX-ARM in the second partition:

cd /tmp
# Get sources
curl -LO https://git.crux.nu/system/crux-rootfs/releases/download/3.8/crux-3.8-armhf-samsung-chromebook-rootfs.tar.xz
curl -LO https://git.crux.nu/system/crux-rootfs/releases/download/3.8/crux-3.8-armhf-samsung-chromebook-rootfs.tar.xz.sha256
curl -LO https://resources.crux-arm.nu/files/devices/samsung-chromebook/3.8/kernel/6.14.8/modules-6.14.8.tar.xz
curl -LO https://resources.crux-arm.nu/files/devices/samsung-chromebook3.8/kernel/6.14.8/headers-6.14.8.tar.xz
# Check the checksum
sha256sum crux-3.8-armhf-samsung-chromebook-rootfs.tar.xz
# Create the mount point
mkdir rootfs
mount /dev/$DEVICE$2 rootfs
tar -xf crux-3.8-armhf-samsung-chromebook-rootfs.tar.xz -C rootfs
tar -xf modules-6.14.8.tar.xz -C rootfs
tar -xf headers-6.14.8.tar.xz -C rootfs
umount rootfs

Write the prebuilt kernel to the kernel partition:

curl -LO https://resources.crux-arm.nu/files/devices/samsung-chromebook/3.8/kernel/6.14.8/uImage.kpart
dd if=uImage.kpart of=/dev/$DEVICE$1

Configuration

We should setup all the important files: inittab, securetty, fstab, rc.conf, net ...

Udev Rules

Add these values to /etc/udev/rules.d/50-mali.rules

KERNEL=="mali", MODE="0660", GROUP="video"

Xorg Files

Put these files into /etc/X11/xorg.conf.d/
10-evdev.conf
10-keyboard.conf
10-monitor.conf
10-quirks.conf
10-synaptics.conf
50-touchpad.conf

Links

https://archlinuxarm.org/platforms/armv7/samsung/samsung-chromebook
https://git.tu-berlin.de/markus.v/maltabbuildroot_fpga/-/blob/mathworks_psp_socsharedmem_R1.1.0/board/chromebook/snow/mksd.sh