WelcomeWelcome | FAQFAQ | DownloadsDownloads | WikiWiki

Author Topic: Core install with 32 MB RAM on 486  (Read 631 times)

Offline branpurn

  • Newbie
  • *
  • Posts: 7
Core install with 32 MB RAM on 486
« on: December 08, 2025, 02:53:39 PM »
I am looking to install Core on a system with 32 MB RAM and an Intel 486.

From the Core media,
Code: [Select]
mc base for no extensions, and
Code: [Select]
mc text for text mode, both kernel panic.

Search discussed the following steps, which seem to be out-of-date (am unable to reproduce in a VM):

Wondering what role grub would play here. Or is that just an example for any bootloader?
I expect syslinux would work, too. I just used grub in my test.

Quote
i don't know how can u run tinycore in only 24mb
Yes, Tiny Core requires 48 MB of memory to run it in the usual fashion.  Installing it into a 32MB machine is difficult, but possible if you have the technical expertise. Here is a rough sequence of steps:
1) Boot from Micro Core disc.
2) Execute "tce-load -w -i syslinux.tcz"
3) Partition the HDD and make the partition bootable.
4) Format the partition with ext2 and mount it.
5) Run extlinux to install bootloader.
6) Edit syslinux.cfg to add "root=/mnt/hda1" (assuming hda1 is partition)
7) Insert Tiny Core disc and mount CD.
8) Extract tinycore.gz from CD into /mnt/hda1
9) Copy bzImage to HDD.
10) Unmount CD and reboot.
« Last Edit: December 08, 2025, 02:59:57 PM by branpurn »

Offline branpurn

  • Newbie
  • *
  • Posts: 7
Re: Core install with 32 MB RAM on 486
« Reply #1 on: December 08, 2025, 03:27:43 PM »
Edit: This was supposed to be an edit to OP but I guess I miss-clicked

I see the grub cmdline following worked for someone on 486 in 2018, but in my VM it still kernel panics:
Code: [Select]
kernel /boot/bzImage loglevel=7 text no387 nofxsr nortc initrd /boot/core.gz

Offline Rich

  • Administrator
  • Hero Member
  • *****
  • Posts: 12355
Re: Core install with 32 MB RAM on 486
« Reply #2 on: December 08, 2025, 04:52:29 PM »
Hi branpurn
Welcome to the forum.

Edit: This was supposed to be an edit to OP but I guess I miss-clicked ...
After 30 minutes, you can no longer edit a post.

I am looking to install Core on a system with 32 MB RAM and an Intel 486. ...
syslinux versus grub should make no difference.

32 MB RAM might be doable, but it will take some work.
Read through this thread:
https://forum.tinycorelinux.net/index.php/topic,27458.0.html
I showed another user some ways to reduce memory usage.
Maybe you can build on some of the ideas found there.

Online patrikg

  • Wiki Author
  • Hero Member
  • *****
  • Posts: 806
Re: Core install with 32 MB RAM on 486
« Reply #3 on: December 08, 2025, 05:06:15 PM »
Code: [Select]
kernel /boot/bzImage loglevel=7 text no387 nofxsr nortc initrd /boot/core.gz

I would think that the bootloader syslinux/grub would load initramfs instead of you having initramfs on the command line to the kernel.

Offline CNK

  • Wiki Author
  • Sr. Member
  • *****
  • Posts: 399
Re: Core install with 32 MB RAM on 486
« Reply #4 on: December 08, 2025, 08:06:32 PM »
Note you need a 486 with a maths co-processor for the TC kernel. If you have a 468SX then you'll need a special kernel build with that enabled. Also some older TC versions had bugs with booting on 486, so are you using the latest version?

You need to add "root=" on the kernel command line to point to the root filesystem you should have unpacked to a partition (eg. /dev/sda1). That should replace "initrd".

Offline branpurn

  • Newbie
  • *
  • Posts: 7
Re: Core install with 32 MB RAM on 486
« Reply #5 on: December 08, 2025, 09:17:18 PM »
Thanks all, the laptop in question has 486DX2 or 4. I was hoping to use plop boot manager on floppy but I may be misunderstanding the utility of loadlin.

I am trying to get things operational in a VM first; was trying a potpourri of kernel cmdline options (thanks for some of these suggestions) and little else, not enough on their own under 32 MB RAM even with TC 14:

Code: [Select]
mc base norestore noswap text embed nomodeset nozswap no387 nofxsr nortc nohz=off udev.children-max=1 highres=off mitigations=off nosmp nosmt acpi=off nofstab
I will try some of the other necessary/suggested steps when time allows.

Edit: In addition to all the great info, this previous post from Rich is compelling, mem wound up 29 MB used,

I opened a terminal and:
Code: [Select]
tc@box:~$ sudo cache-clear
tc@box:~$ sync
tc@box:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:             52          29          12           5          11          15
Swap:           999          12         987
tc@box:~$
I also have a swap partition that's supplying some space.
« Last Edit: December 08, 2025, 09:41:58 PM by branpurn »

Offline branpurn

  • Newbie
  • *
  • Posts: 7
Re: Core install with 32 MB RAM on 486
« Reply #6 on: December 08, 2025, 10:00:29 PM »
So based on Rich's script from aforementioned post ... I do not currently have a NIC and would just want to get things up as proof of concept,

Code: [Select]
#!/bin/sh

# Fetch a fresh copy of the initrd.
wget http://repo.tinycorelinux.net/16.x/x86/release/distribution_files/core.gz

# Create a temporary workspace.
mkdir tmp
cd tmp

# Unpack the initrd
zcat ../core.gz | sudo cpio -i


# ---------------- Modify this section to match your system ---------------- #
# Remove the  net  directory (about 6 Mbytes).
sudo rm -rf lib/modules/6.12.11-tinycore/kernel/drivers/net
# ---------------------- End of modification section ----------------------- #


# Recreate modules.alias and modules.dep in lib/modules/6.12.11-tinycore/.
sudo depmod -a -b . 6.12.11-tinycore

# We don't need the symbols file.
sudo rm -f lib/modules/6.12.11-tinycore/*symbols

# Re-pack the initrd.
sudo find . | sudo cpio -o -H newc | gzip > ../core16Stripped.gz

# Back to our starting directory.
cd ..

# Clean up.
sudo rm -rf tmp
rm -f core.gz

echo "Your new initrd is called core16Stripped.gz"

What exactly should the partitioning look like? I see multiple UUID's defined so not just one big ext2 I would assume; /home /opt mountpoints, what are some good sizes on a 32 GB drive? ... Removed waitUSB as no USB present. What other kernel cmdline params should/might make it in? (RE: mc base norestore noswap text embed nomodeset nozswap no387 nofxsr nortc nohz=off udev.children-max=1 highres=off mitigations=off nosmp nosmt acpi=off nofstab)

Code: [Select]
menuentry "*** Core-16-x86" {
search --no-floppy --fs-uuid --set=root 2bd65bbc-d71a-48be-8e35-f72f81453a15
linux /tce/Core16/vmlinuz udev.children-max=1 nodhcp nozswap norestore:UUID="2bd65bbc-d71a-48be-8e35-f72f81453a15" tce=UUID="2bd65bbc-d71a-48be-8e35-f72f81453a15"  home=UUID="2bd65bbc-d71a-48be-8e35-f72f81453a15" opt=UUID="2bd65bbc-d71a-48be-8e35-f72f81453a15"
initrd /tce/Core16/core16Stripped.gz
}

Offline Rich

  • Administrator
  • Hero Member
  • *****
  • Posts: 12355
Re: Core install with 32 MB RAM on 486
« Reply #7 on: December 09, 2025, 01:00:05 AM »
Hi branpurn
... What exactly should the partitioning look like? ...
A single partition anywhere between 2 and 4 gig should be adequate.

Quote
... I see multiple UUID's defined so not just one big ext2 ...
Look again. You see the same UUID specified multiple times. That's how Tinycore knows
where to find those directories. I prefer to keep these directories on the same partition.
That way I can install multiple versions of Tinycore with their own directories and keep
them separated. You can create multiple partitions if you wish, but this is simpler.
To get the uuid of a partition:
Code: [Select]
tc@E310:~$ blkid /dev/sda2
/dev/sda2: LABEL="TC10_backup" UUID="22559ae7-7e12-4a3b-9efa-6f8c8a9a8a6a" TYPE="ext4" PARTUUID="594f4868-02"
You'll want the one called UUID=.

Quote
... What other kernel cmdline params should/might make it in? ...
I would start with these:
Code: [Select]
nozswap no387 udev.children-max=1 mem=nopentiumThe  mem=nopentium  code disables use of 4MB pages for kernel memory
so it should lighten the memory demand.

The remaining kernel parameters you added either don't look like they would
save any memory, or are not valid kernel parameters.

Instead of trying core.gz for the initrd, see if it using rootfs.gz gets you to a command line.

Offline branpurn

  • Newbie
  • *
  • Posts: 7
Re: Core install with 32 MB RAM on 486
« Reply #8 on: December 09, 2025, 10:21:37 AM »
Thanks-- So if I extract rootfs directly to the 4 gig ext2 partition, I don't immediately have GRUB to edit with UUIDs, etc.,

So I replaced core.gz with rootfs.gz on the Core ISO, and attempted to boot. I am bad at understanding what the "boot:" prompt wants. I tried a series of things without luck, ex., "initrd /boot/rootfs.gz (...)"

Replaced core.gz with rootfs.gz on the TinyCore ISO, and attempted to boot from GRUB with:
Code: [Select]
/boot/vmlinuz loglevel=3 initrd=/boot/rootfs.gz noswap no387 udev.children-max=1 mem=nopentium
Kernel panic on VM, but that was TinyCore not Core media

Offline Rich

  • Administrator
  • Hero Member
  • *****
  • Posts: 12355
Re: Core install with 32 MB RAM on 486
« Reply #9 on: December 09, 2025, 11:05:49 AM »
Hi branpurn
That should be  nozswap  not  noswap.
Without  nozswap , the system will allocate 25% of your RAM to compressed swap space.

Rereading the posts, I see you have a 486DX which I believe does have a math co-processor.
So remove the  no387  parameter.

Thanks-- So if I extract rootfs directly to the 4 gig ext2 partition, ...
There's no need to extract anything. Assuming you are using TC16, you can download rootfs.gz
from here:
http://tinycorelinux.net/16.x/x86/release/distribution_files/

Quote
... So I replaced core.gz with rootfs.gz on the Core ISO, and attempted to boot. ...
How did you do that? Did you build a new ISO using mkisofs?

Quote
... and attempted to boot from GRUB with:
Code: [Select]
/boot/vmlinuz loglevel=3 initrd=/boot/rootfs.gz noswap no387 udev.children-max=1 mem=nopentium ...
Since you said GRUB and not GRUB2, a typical entry looks like:
Code: [Select]
title TC10.1_32bit
root (hd0,0)
kernel /boot/vmlinuz quiet tce=UUID="543cac60-3224-4cab-b1d5-008407dd9ce8" home=UUID="543cac60-3224-4cab-b1d5-008407dd9ce8" opt=UUID="543cac60-3224-4cab-b1d5-008407dd9ce8" printk.time=1 syslog nodhcp vmalloc=256MB noisapnp nozswap
initrd /boot/core.gz

Offline branpurn

  • Newbie
  • *
  • Posts: 7
Re: Core install with 32 MB RAM on 486
« Reply #10 on: December 09, 2025, 11:13:14 AM »
Thanks!-- my main PC is Windows, so I opened the ISO with AnyBurn, removed core.gz and added rootfs.gz in the same folder. Should be similar result to mkisofs. I grabbed rootfs.gz from the /distribution_files/ similarly;

The GRUB (likely GRUB2) I tried is the one that comes up on the TC ISO (TAB to edit, having dropped rootfs.gz on the ISO) but it looks like maybe I should have GRUB on a drive already (maybe install a throwaway TC install), and point it with the UUIDs.; will give this all a go later



Offline CNK

  • Wiki Author
  • Sr. Member
  • *****
  • Posts: 399
Re: Core install with 32 MB RAM on 486
« Reply #11 on: December 09, 2025, 08:23:49 PM »
If you want to do a HDD install (which uses minimum RAM) like in the guide you were following at the start, use root=[parition where you unpacked core.gz] and remove "initrd=/boot/rootfs.gz" on the kernel command line.

Else if you want to try and make the initramfs small enough to fit in 32MB like Rich suggests, don't unpack it to a partition. In fact it doesn't even know it's there without the "root=" bit.

The first option works for me on my 486 PCs with less than 32MB RAM, but it doesn't follow Tiny Core's unique design. With Rich's way, note that TC copies the contents of initramfs into tmpfs during boot (see the /init script) so you really need twice the space in RAM at that stage. Also I'm not sure how much extra RAM is required for decompressing the gzip-compressed initramfs file during start-up.

Offline branpurn

  • Newbie
  • *
  • Posts: 7
Re: Core install with 32 MB RAM on 486
« Reply #12 on: December 09, 2025, 08:38:57 PM »
I guess what I was hoping with extracting to disk is that there’d still be a way to load into RAM without the overhead of decompressing anything at boot, but doesn’t seem it will work that way