Skip to content

Instantly share code, notes, and snippets.

@roxwize
Last active October 23, 2025 13:33
Show Gist options
  • Select an option

  • Save roxwize/4c26efb440bb7cc9e35548d35be797a2 to your computer and use it in GitHub Desktop.

Select an option

Save roxwize/4c26efb440bb7cc9e35548d35be797a2 to your computer and use it in GitHub Desktop.
TinyCore reference guide

Setting up TinyCore

Most TinyCore guides assume you're using, um, TinyCore. This is for future reference, written by myself, on how to install and use MicroCore, which doesn't come with any fancy GUI stuff. It is not assumed that you are using the default WM that comes with TinyCore, or even any display at all.

Before you read this, you should read the Key Concepts of TinyCore.

TCZ mount mode of operation

Note

should probably look into mylocale.tcz (getlocale.tcz)

Installation

Installing TinyCore differs from installing most other operating systems in that, since it loads the entirety of itself into RAM on startup, the typical hard-drive installation you're used to isn't the kind of thing you'd want to do in TinyCore (you could, but there wouldn't be a good reason to). You're probably going to want a frugal install, which stores the system in two files: vmlinuz, and core.gz, whose locations are specified by the bootloader. All user files and extensions are stored outside of the base operating system. This does mean that every system file is wiped on startup.

By default, the system will be in the default mode. This probably isn't what you want, but it's the default. It's similar to live CDs, but a bit different: TinyCore stores as much of itself in RAM as possible, with applications lasting only for the current session. The recommended mode is mount mode, which stores all applications in /tce/, located on a persistent store such as a supported disk partition.

You don't necessarily set the mode in a menu. If you want to switch over to mount mode then tell the app browser where to store extensions.

Additionally, TinyCore comes with a tool named "filetool" for saving personal settings and data. The file /opt/.filetool.lst controls which files and directories are backed up by filetool and restored on reboot. It writes this data to mydata.tgz which is in the location specified by the restore boot option (if none is specified, TinyCore will look for it in the available root directories); its name can be changed with the mydata boot option. If you want a more traditional persistent home directory, you can specify the device it's stored on with the home boot option. For example, if you have an ext4 home partition on /dev/sda2, home=sda2 will treat it as a regular, persistent home directory and mount it on startup. The same idea pretty much applies to the /opt/ directory with the opt boot option.

Individual TinyCore applications come in the form of .tcz files, which are compressed squashfs filesystems that contain their respective extension files. Running these applications requires them to first be mounted (since they are filesystems). This is why installing TinyCore applications comes in two forms: OnBoot and OnDemand. The former mounts applications on boot, whereas the latter mounts applications only when they are needed (such as when the user starts it manually from the taskbar).

With the official installer

You're gonna be in a command prompt, go ahead and open the application browser and install tc-install. After installation finishes, run sudo tc-install.sh and follow the instructions.

Optionally just run tce-load -wil tc-install.

Manually

Caution

i need to finish this

Before you do this, if you're choosing to go about this process on Core itself, you can find useful tools such as cfdisk in the "util-linux" extension.

In a "mount mode" system, as detailed above, the files stored on persistent storage are typically:

boot/
	core.gz     initrd mounted on / at boot
	vmlinuz     The Linux kernel
tce/
	optional/   Installed extensions
	mydata.tgz  Gzipped tarball of files backed up by filetool, restored into / on boot
	onboot.lst  Newline-separated list of .tcz files to mount on startup

With the addition of a bootloader in /boot/.

To install

# download the current release build
wget "http://repo.tinycorelinux.net/16.x/x86_64/CorePure64-current.iso"
sudo mount -o loop,ro --mkdir ./CorePure64-current.iso /mnt/iso/
# or (havent tested)
wget "http://repo.tinycorelinux.net/16.x/x86_64/distribution_files/corepure64.gz"
wget "http://repo.tinycorelinux.net/16.x/x86_64/distribution_files/vmlinuz64"
# and then put them in /mnt/sys/boot/ when you have access to it

# partitions (MBR):
# Device     Boot  Size  Type
# /dev/sda1  *     1G    Linux
# /dev/sda2        5G    Linux

# filesystems
tce-load -wil dosfstools
mkfs.vfat -F 32 /dev/sda1
mkfs.ext4 /dev/sda2

tce-load -wil syslinux
syslinux --directory syslinux --install /dev/sda1
dd bs=440 conv=notrunc count=1 if=/usr/local/share/syslinux/mbr.bin of=/dev/sda

sudo mount --mkdir /dev/sda2 /mnt/sys/
sudo mount --mkdir /dev/sda1 /mnt/sys/boot/
cp /mnt/iso/boot/corepure64.gz /mnt/sys/boot/
cp /mnt/iso/boot/vmlinuz64 /mnt/sys/boot/
tce-setdrive -s /mnt/sys/
# now edit /mnt/sys/boot/syslinux.cfg

Minimal syslinux.cfg:

default core
prompt 0

label core
	kernel ../vmlinuz64
	initrd ../corepure64.gz
	append root=/dev/sda2

Command usage

Most of these are self-written but they are formatted to appear like manpages.

ondemand

Usage: ondemand [-celrt] [appname]

Manage OnDemand items.
	-c    [/etc/sysconfig/tcedir/ondemand/*]
	-e    Execute an entry
	-l    List entries
	-r    Remove an entry
	-t    (TCZ=1 TYPE="tcz")

tce-ab

tce-ab is short for TinyCore Extension Application Browser. It allows you to install .tcz packages, and its usage is fairly self-explanatory.

You can list all of your installed extensions by running ls /usr/local/tce.installed/ in the terminal.

tce-load

Usage: tce-load [options] extensions

Download and/or load one or more TCZ extensions.
Options:
	-c
		When used with -i, force a one-time copy to the filesystem.
	-i
		Mount an extension onto the filesystem and create symlinks so that it can be used normally.
		When used with -w, additionally adds the extension to onboot.lst.
	-l
		When used with -i, mount the extension as usual, but without creating an entry in onboot.lst or ondemand/.
	-o
		When used with -w, create an entry in $TCEDIR/ondemand/. Use this for software or libraries you want to have access to from your PATH but without the loading of them slowing down startup significantly. OnDemand entries can be created and launched manually with the `ondemand` command.
	-s
		Suppress OK message used by apps GUI.
	-w 
		Download the tcz file from the repository mirror chosen to $TCEDIR/optional/.
Example usage:
	Load local extension:
		tce-load -i ./nano.tcz
	Download into tce/optional directory, updates OnBoot and installs:
		tce-load -wi nano
	Download only into tce/optional directory:
		tce-load -w nano

The .tcz file extension at the end of remote extensions can be omitted (e.g. tce-load -wi util-linux). When loading a local extension, if it resides in $TCEDIR the path can be omitted as well.

Use -wi to download and install an extension, loading (mounting) it immediately and adding it to your OnBoot list. Use -wil to do the same without affecting either OnBoot or OnDemand; that is, it will just download and install it and do nothing else to your tce/ directory besides placing the installed extensions in tce/optional/. -wil is effectively the same as running the command with -w and -i separately, as the -i flag does not also create OnBoot entries unless it is provided alongside -w.

A list of extensions can be found at http://repo.tinycorelinux.net/16.x/x86[_64]/tcz/. To access an extension, just append its filename as shown in the list to the end of the URL. Information for each extension can be found by appending .info, and a list of dependencies can be found by appending .dep.

tce-setdrive

Usage: tce-setdrive { -l | -s [drive] }

Set up persistent storage for extensions.
	-l    Fetch drive list
	-s    Setup selected drive

Running this command with the -s option pointing to a mounted drive will populate it with a tce/ directory containing an empty optional/ directory and an empty mydata.tgz file.

tce-status

Usage: tce-status -i | -u | -o

	-i    List installed extensions
	-o    Something about standby checking for tcz files??
	-u    List unmounted extensions?

Display systems

Wayland

To do the bare minimum with Wayland, you really only need to download Weston, which is effectively its equivalent of twm. Before you invoke it from the terminal, you need to start seatd and point XDG_RUNTIME_DIR to the directory inside of /run/user/ belonging to your UID (which can be obtained by invoking id -u).

seatd is a minimal seat management daemon which manages the provision of shared devices (such as graphics and input) among "seats" representing an individual user accessing a computer. Although multi-seat sessions are uncommon, seat management comes with the benefit of allowing you to grant applications access to a seat's devices without needing superuser access—meaning that so long as you run the daemon as root and point it to whatever group or user you have control of, a Wayland compositor can be started without needing elevated access. To start the daemon, first make sure you have it installed – it is included as a dependency for Weston, so you usually don't have to download it yourself – then run:

sudo seatd -g staff -n /run/seatd.sock

This starts the daemon with the seatd socket in /run/seatd.sock owned by the staff group, which the non-root account tc (or whatever kernel parameter user= is set to) is a part of.

From here, make sure your XDG_RUNTIME_DIR is pointing in the right place. Your ~/.profile script usually takes care of this for you, but if it doesn't:

XDG_RUNTIME_DIR=/run/user/$(id -u)

Now run Weston or whatever and you'll be fine.

X

If you want to run X11 on Core while keeping things lightweight, you should use TinyX Xvesa. This is the version of X that comes with TinyCore (the version of Core that has a desktop environment included). TinyX has multiple differences compared to regular X, such as being generally smaller and including no support for Xkb, Xinput, Xinerama, and OpenGL.

If you want to install TinyX, it can be found in the application browser as Xvesa. Note that it is not available in 64-bit builds; you will have to use ordinary X instead.

If Xvesa isn't what you want and you want regular Xorg then you can install that too, as Xorg-7.7.tcz. If you need a size comparison, Xorg is 19.72 MB whereas Xvesa is 5.09 MB.

Boot options

Boot options can be changed post-installation by editing the bootloader config file.

Boot option Description
base Do not load any extensions
blacklist=ssb Blacklist a single module
desktop=yyy Specify alternate window manager
home={hda1|sda1} Specify persistent home directory
host=xxxx Set hostname to xxxx
iso=sdb1 Boot directly from iso file at sdb1
kmap=us US only unless kmaps.tcz is installed
lst=yyy.lst Load alternate static yyy.lst on boot
lang=en C only unless getlocale.tcz is installed
laptop Force load laptop related modules
mydata=yyy Specify alternate backup file name
multivt Allows for multiple virtual terminals
norestore Turn off the automatic restore
noicons Do not display icons
noicons=ondemand Do not display ondemand icons
noswap Do not use swap partition
nodhcp Skip the dhcp request at boot
noutc BIOS is using localtime
noautologin Skip automatic login
noembed Unpack initramfs to tmpfs
nozswap Skip compressed swap in ram
opt={hda1|sda1} Specify persistent opt directory
pause Pause at completion of boot messages
protect Password encrypted backup
restore={hda1|sda1|floppy} Specify saved configuration location
swapfile{=hda1} Scan or specify swapfile
safebackup Saves a backup copy (mydatabk.tgz)
showapps Display application names when booting
superuser Textmode as user root
secure Set password
tce={hda1|sda1} Specify restore TCE apps directory
text Textmode
tz=GMT+8 Timezone tz=PST+8PDT,M3.2.0/2,M11.1.0/2
user=abc Specify alternate user
vga=7xx Accepts either 'normal' or a value from this table
waitusb=X Wait X seconds for slow USB devices
xsetup Prompt user for Xvesa setup
xvesa=800x600x32 Set Xvesa default screen resolution
{cron|syslog} Start various daemons at boot

VGA values

Color Bits 640x480 800x600 1024x768 1280x1024
256 8 bit 769 771 773 775
32000 15 bit 784 787 790 793
65000 16 bit 785 788 791 794
16.7M 24 bit 786 789 792 795
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment