Hello all!
Ok well I guess this is a little bit of an unsual request -- but I'm guessing it is possible. What I am trying to do is to run slackware 14 directly from a USB device in just 32MB of ram.
First of all though I should say I can't unfortunatly upgrade that 32MB of RAM. Though the PC(s) I am trying to run this on are just normal boring average desktop PCs if rather old (think Celeron 466 and a 6GB IDE HDD!). Some have cd rom drives, other don't, one has a bad cd rom drive. They all however have 2 USB ports and a floppy drive.
The reason I'm wanting to do this is so I can back up the contents of the computers onto a USB stick. The computers in question are not mine but ones I use at work. That's why I cannot make any upgrades, not allowed to "open up" the systems.
After trying several ideas (e.g. bootable CD though not all have working or have CD rom drives), old versions of debian, puppy and soforth (none of which worked because 32MB is too small!) I decided to try to revive an old idea I tried a long time ago.
That idea was to run slackware directly off a USB stick. Note not install slackware off a USB stick or run the installer off a USB stick but actually run an install directly straight off a USB stick.
So that makes it twice has hard -- both to have a modern day slackware run in 32 MB *and* off USB!
I know that the first part can be done -- modern (slackware 14) in just 32MB because of
this thread.
I followed the instructions and used the .config from that thread on that page in the link above and it worked. On a virtual machine (virtualbox) I managed to boot Slackware 14 with just 32MB of ram and no swapfile. Actually I had about 5MB free - !
The second part however -- booting and running directly from USB appears to be a lot harder. I've tried this before but it was a good long time ago -- back in 2011 to be precise and a lot has changed in slackware or so I'd wadger by now (2014).
Here is an old thread about using labels I made, for example.
Another thread with a similar idea (run+boot off USB) but a little older, this time 2010.
My question then unfortunatly is still the same. Using a combination of lilo, mkinitrd, LABEL= and rootdelay= or the sleep command is it possible to boot and run slackware straight off a USB stick?
From memory, a setup might run as follows (boot direct off USB);
- Install slackware 14 to a USB device (e.g. with virtualbox or qemu)
- Label the partition, e.g.
Code:
e2label /dev/sda1 TEST
- Make an initial ramdisk with
Code:
mkinitrd -c -k 3.2.9 -m ext4:ohci-hcd:ehci-hcd
- Modify /etc/fstab to read
Code:
LABEL=TEST / ext4 defaults 1 1
- A LILO config file;
Code:
# LILO configuration file
# generated by 'liloconfig'
#
# Start LILO global section
# Append any additional kernel parameters:
append=" vt.default_utf8=0 root=LABEL=TEST"
boot = /dev/sda
# Boot BMP Image.
# Bitmap in BMP format: 640x480x8
bitmap = /boot/slack.bmp
# Menu colors (foreground, background, shadow, highlighted
# foreground, highlighted background, highlighted shadow):
bmp-colors = 255,0,255,0,255,0
# Location of the option table: location x, location y, number of
# columns, lines per column (max 15), "spill" (this is how many
# entries must be in the first column before the next begins to
# be used. We don't specify it here, as there's just one column.
bmp-table = 60,6,1,16
# Timer location x, timer location y, foreground color,
# background color, shadow color.
bmp-timer = 65,27,0,255
# Standard menu.
# Or, you can comment out the bitmap menu above and
# use a boot message with the standard menu:
#message = /boot/boot_message.txt
# Wait until the timeout to boot (if commented out, boot the
# first entry immediately):
prompt
# Timeout before the first entry boots.
# This is given in tenths of a second, so 600 for every minute:
timeout = 1200
# Override dangerous defaults that rewrite the partition table:
change-rules
reset
# Normal VGA console
vga = normal
# Ask for video mode at boot (time out to normal in 30s)
#vga = ask
# VESA framebuffer console @ 1024x768x64k
#vga=791
# VESA framebuffer console @ 1024x768x32k
#vga=790
# VESA framebuffer console @ 1024x768x256
#vga=773
# VESA framebuffer console @ 800x600x64k
#vga=788
# VESA framebuffer console @ 800x600x32k
#vga=787
# VESA framebuffer console @ 800x600x256
#vga=771
# VESA framebuffer console @ 640x480x64k
#vga=785
# VESA framebuffer console @ 640x480x32k
#vga=784
# VESA framebuffer console @ 640x480x256
#vga=769
# End LILO global section
# Linux bootable partition config begins
image = /boot/vmlinuz
root=/dev/sda1
label = Linux
read-only
image = /boot/vmlinuz-test
initrd = /boot/initrd.gz
label = test
read-only
# Linux bootable partition config end
(BTW I have used the above examples/files though it didn't work; I even tried adding rootdelay=30 to the lilo.conf append line above, but no success in fact it was ignored!).
If I can get this part working then (in theroy - !) the idea would be to use the kernel made above (so that it will run in 32MB) and then boot the whole thing right off USB.
Or has a lot changed? Do I still need to use labels or do labels not work now? Or should I only use UUIDs? It's weird, y'know. Is anyone else running slackware off a USB stick or USB hard drive at all? How do you get around the problem of different drives and the kernel detecting which drive contains the OS correctly?
ljones