Last updated 28.January.2011
These are my ongoing notes from installing Tiny Core Linux (ver 3.4 as of January 2011) to an HP Mini 1001TU Netbook. My installation is up and running, but it is forever incomplete. These notes document my work-in-progress.
USB Boot
My original installation was of TC 2.0, ca. July 2009. I followed the tutorial at the TC wiki, though that has probably been updated to reflect newer versions of Tiny Core. I initially booted TC from a USB stick created from within Linux (Xubuntu) using the standard TC ISO and GRUB. This works well with 2.0, but no earlier TC version.
I have since tried persistent hard drive installations with each, and had the same results - only 2.0+ works. I haven't done much to investigate why as yet, but I think it has to do with my Marvell network adapter. Over time, I made and used 3 different USB Linux boot sticks on this netbook:
- Tiny Core Linux 1.4 (manually created on another Tiny Core laptop)
- Tiny Core Linux 2.0 (manually created on another Tiny Core Laptop)
- GParted (created using Unetbootin/Windows XP)
- Xubuntu Live Desktop (created using Unetbootin/Windows XP)
Repartitioning
My HP Mini came with a 60 GB hard drive. I could have shelled out another $100 for a Toshiba with 120 GB, but I really liked the overall package on the Mini (scold me if you must). Repartitioning process:
- Clear off unneeded data - down to about 8.5gb total
- BACK UP EVERYTHING (CYA)
- turn off Windows paging file (Start->Control Panel->System->Advanced, somewhere in there)
- defragment hard drive down to 0% fragmentation (for my own sanity)
- Run
chkdsk /fjust to make sure everything is stable on the hard drive, then reboot twice. - Install Gparted to USB stick (download the GParted ISO file and installed using Unetbootin on Windows. I had no trouble with this.)
- Reboot using Gparted USB boot stick
- Resize NTFS partition (I chose 12 GB for my Windows partition), then add a FAT32 partition (40GB) and a linux swap partition (2.5 GB or so).
- Reboot, all done!
Personally, I had no drama with this.
Interim: Xubuntu
Yes, this is a page regarding Tiny Core on my netbook ... but I dual-booted Xubuntu for awhile. So here's what I did. After partitioning (above), I installed the current [July 2009] Xubuntu ISO to my USB stick using Unetbootin. The process worked well (so well that that I made this Xubuntu section of this little article using the first boot off that boot stick). Networking, graphics, touchpad all worked immediately from the Xubuntu USB boot. I followed up by installing Xubuntu to hda2, and then moved on to installing TC.
Installing TC from Xubuntu partition
I decided to make a frugal TC install from the same partition as Xubuntu. For me, this was hda2. My process:
- get the TC iso
- mount the TC iso to a temporary location
- copy the iso /boot directory contents to the hard drive
- add the TC kernel to /boot/grub/menu.lst
- reboot
In the end, reasonably simple. For clarification I used:
- stock TC 2.0 iso
- placed the ISO contents into a subdirectory at /boot/tc_2.0/
- made TC my default boot (top of the menu.lst listing)
- use kernel options: quiet vga=788
So far, this works for me. It also makes it simple to upgrade TC - I simply make a new subdirectory (eg: /boot/tc_2.1) then add that stanza to GRUB's menu.lst file.
Current TC Installations
Around December 2009 I pretty well finished working out the kinks with TC on the HP Mini, and I stopped using Xubuntu and Windows. In July 2010 I completely removed Xubuntu (the one chance I had to use the dreaded sudo rm -rf ... don't try this at home, kids).
I now dual boot to Windows with:
- hda1 / NTFS, 14GB - Windows XP Home
- hda2 / EXT3, 14GB - Tiny Core + Extensions
- hda3 / Linux swap, ~5GB - swap area (but it's not quite that big ...)
- hda4 / FAT32, 25GB - common storage space
The Tiny Core 'operating system' files are really just two bits: tinycore.gz + bzImage ... that's it. I leave these in hda2/boot/tc_$VERSION/ and call them from GRUB.
Extensions
I used to store my extensions on my shared data partition (hda4, FAT32). Now I leave them on hda2, as there is never a time I need to access those from Windows. The directory is hda2/tce, and TC detects it fine. No problems.
Network Hardware
After plenty of testing/research, all works. The hardware:
- Marvell Yukon 88E8040 PCI-E Fast Ethernet Controller (physical)
- Broadcom 802.11b/g WLAN (wireless)
Vanilla TC 2.0 did not initially find and enable the network card. This was rare, but has a simple solution. The stock Marvell modules are fine - it's the card that is whiny. For a
plain-jane physical network cable connection, the Marvell card works on a warm
boot but not a cold boot. So:
- Boot TC
- plug in your network cable - no network support yet.
- reboot TC with the cable still in
- TC will detect the hardware & connection. Run Netcardconfig in the Control Panel
This works for me. I hypothesize that the Marvell card stays silent at boot because of a power-saving feature that keeps the card turned off. When I need it, I have to plug in the cable and reboot. I experimented with USB wait times, and a few other things, but no luck.
The Broadcom wireless card requires the wl extension and some firmware. The Linux Wireless page on module b43 has instructions on where/how to get firmware, and where to put it - that is the big step.
I previously had a udev rule, but I nolonger use it:
KERNEL=="eth*", ATTR{address}=="00:23:4d:87:30:e3", NAME="wifi0"
Now I just boot up with the wl extension, then run a script like:
CARD="wifi0"
killall udhcpc
ifconfig $CARD down
ifconfig $CARD up
iwconfig $CARD essid NETWORKNAME
iwconfig $CARD commit
udhcpc -i $CARD -q -n -h box
Graphics
Google tells me the HP Mini 1001TU uses an Intel GMA 950 graphics card. The 'natural' 1024x600x32 resolution of the screen requires the 915resolution extension (include it onboot). The resolution/depth can be set by using a standard Xvesa call (edit .xsession), by adding a kernel arg (xvesa=1024x600x32), by calling 915resolution from the command line, or by setting it in Xorg.
To use Xvesa, just get/load the 915extension, and add the xvesa= kernel arg. Painless.
Xorg is a much heavier option, but you gain full hardware acceleration and a few other goodies. Without acceleration, Xvesa will somtimes creep along to produce web sites with javascript graphics tricks (Lightbox, for example). As of 2.6.33.3 and TC 3.2, however, Xorg doesn't like to come out of suspend.
To use Xorg:
- get/install the Xorg and graphics-2.6.xx.x-tinycore extensions
- exit to the command prompt
- run sudo Xorg-configure. This will make configuration at /home/tc/xorg.conf-new.
- add /etc/X11/xorg.conf to /opt/filetool.lst
- Using the instructions from the xorg.tcz.info file, add ctrl-alt-bksp exiting support to your xorg.conf.new (ServerFlag, DontZap false)
- Try out the new settings from the command prompt. If you get nothing, exit with ctrl-alt-bksp. Driver errors probably need add'l extensions.
- When set up correctly, move xorg.conf.new to /etc/X11/xorg.conf.
- Add Xorg to your onboot list and reboot. The extension will alter the appropriate files and use /etc/X11/xorg.conf.
It may be useful to know that the [my] mini came with an Intel 945GME Express. Find it with:
lspci | grep VGA
In short, it works. If you need graphics accel, it's worth the trouble. I still need to work out using the Synaptics Touch Pad - mine is a bit whiny.
Audio Hardware
If you're wondering why your external microphone won't work, it is not a software problem. I was not the first to encounter that obstacle, but I did bother to write a short blurb on using the Mini's uncommon Audio Jack.
TC 2.3.1+ just needs alsa.tcz. The Mini has a built in microphone ("Front Mic") next to the web cam lens. To use the built-in microphone for Skype, Audacity, etc, you'll need to adjust settings using a volume control like alsamixer. In alsamixer v1.0.23, I use the following settings to get mic/speakers working:
- Speakers turned on (press m, then turn up the volume with arrows)
- Capture and Capture 1 turned on (tab to Capture devices, then use Space Bar to enable each)
- Capture turned up to 80 or so (Skype will auto-adjust the mic when it is working)
- Front Mic Jack Mode: Mic In
- Mic Jack Mode: Mic In
- Input Source: Line
- Input Source 1: Front Mic
As well, make sure that the Capture 0 device matches the Front Mic device. In alsamixer, I can control these in TC 3.0 and 3.1, but this was not possible (nor an issue) in 2.11 and before.
Before TC 3.0, the Mini's sound card produced an annoying click due to power saving. Thanks to Curaga's advice about this. By default, this feature is enabled, and kicked in about 5 seconds after any card twiddling. To check its status, use:
cat /sys/module/snd_hda_intel/parameters/power_save
Any value > 0 means that power-saving is enabled. To disable it, you can pass the parameter as an argument to a modprobe call. I used to add to /opt/bootlocal.sh:
sudo /sbin/modprobe -r snd-hda-intel
sudo /sbin/modprobe -i snd-hda-intel power_save=0
On stock TC 3.0+, this is a nonissue. Other problems:
- On reboot, the system speaker is muted. I have to manually reset that each time. It is possible to fix this using bootlocal.sh + alsactl. Use alsactl to save the sound card settings to a file (~/.asound.state), then reload via bootlocal.sh
- Before TC 3.0, the system speaker volume goes silent when it is set at 50/100 in alsamixer. Weird.
- Other audio extensions muck with the working ones. Installing the alsa-oss extension is particularly frustrating. I have not yet been able to get OSS working (Sept 2009). I've given up at this point, but I'm not missing it.
- The sound card sometimes goes to sleep, affecting both Linux and Windows. If I restart and switch operating systems, the card still doesn't respond. It only wakes back up after a power down. I don't yet know what makes it go to sleep, or what will bring it back up. [non-issue at September 2010, since I use Windows so rarely ... ]
Many HP Mini users (of all the different models) have had trouble getting sound working. Basically, the Mini's hardware doesn't play nice with the stock ALSA and OSS modules. I think that's odd - netbook hardware is relatively standardized stuff. Linux detects the hardware fine, though:
lspci -v
generates:
00:1b.0
Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
SD Card Slot
Works great. Just mount it as sda1.
Suspend and Hibernate
The suspend extension (suspend.tcz) works straight away. Use sudo: [code] s2ram -f --vbe_save [/code] In September 2009 or so I said:
I am still working to get hibernate set up. I had previously tried hibernate (s2disk) on my HP Evo N410c, but I haven't worked on that for this laptop. I'll sink some time into it, and see if it's worth it.
Good news - hibernate completely works. For Tiny Core, however, I don't find it useful. The stock Tiny Core boot time is ~ 10 seconds, and the hibernate wake time is identical or slightly more (~ 12 seconds). After using hibernate for 6-8 months, I decided I just don't need it.
If you'd like to get hibernate going, read the TC hibernate kit scripts at the TC forum. You will need to patch Tiny Core to include additional binaries, set up your swap drive, put all the settings in the right places, and load/use the suspend extension.
Keyboard, Keymaps, Hotkeys
Extended keys require a bit of mucking around.
To figure out the keycodes of 'inactive' keys (keys that seem to do nothing ...), I used showkey. It spits out whatever keys are being pressed. Careful - the fn key is a hardware modifier, so a key may have a different code when fn is pressed.
After much research, I settled on using actkbd to attach keypresses to suspend, volume control, and some other tidbits. My actkbd.conf is stored in ~/, and follows here:
# ~/.actkbd.conf
# for HP Mini 1001 TU
# dentonlt 11/2010
#
# The HP Mini has a few extra function keys:
#
# 142 Suspend (fn + F1)
# [ ] Switch screens (fn + F2) [ captured by BIOS? ]
# [ ] Brightness up/down (fn + f3/f4) [ captured by BIOS ]
# [125 press then 38 release] Lock (fn + f6)
# This key is kind of hopeless, because the "windows key" sends
# the same start code (125 press) but then no release. Right now I
# have no way to capture 125 and then capture the next press/release
# in a selective way ... (if 125p -> 38r, lock. if 125p then something
# else, continue). So, there is currently no lock support.
# 113 Mute (fn + f8)
# 114/115 Vol up/down (fn + f10/f11)
# 116 Front Power switch
# [ ] Front Wireless power switch [ captured by BIOS ]
# 99 Print Screen (fn + insert)
# 227 Screen Lid Switch (when user closes/opens the laptop screen)
#
# There are others, but these are the ones I tested.
#
# You'll need three instances of actkbd, since there is input coming
# from four different device entries. To catch all the extra keys:
#
# actkbd -c ~/.actkbd.conf -d /dev/input/event1 -D
# actkbd -c ~/.actkbd.conf -d /dev/input/event3 -D
# actkbd -c ~/.actkbd.conf -d /dev/input/event5 -D
# actkbd -c ~/.actkbd.conf -d /dev/input/event7 -D
# Catch suspend key (fn + f1)
# this will be captured from /dev/input/event1 only
142:key:noexec:
142:rep:noexec:
142:rel:exec,ungrab: suspend.sh
# Catch Power key (front slider/switch)
# this will be captured from /dev/input/event3 only
116:key:noexec:
116:rep:noexec:
116:rel:exec: su tc -c -l shutdown.sh
# Catch screen lid switch (close and open screen)
# this will be captured from /dev/input/event7 only
227:key:noexec:
227:rep:noexec:
227:rel:exec: suspend.sh
# Catch Volume Control Keys, PrtSc, Lock Key (fn + f6, f8, f10, f11, insert)
# these will be captured from /dev/input/event5
# handle lock key. This one is funny:
# first, capture the lock key press (fun + f6). If we grab the keyboard,
# we may make the keyboard lock up - 125 doesn't send a release, and we just
# don't know what key code is going to come next ... This solution will
# lock the keyboard (actkbd will start grabbing keys) on the Window Key press:
# 125:key:ungrabbed,grab,noexec:
# 38:rel:grabbed,ungrab,exec: su tc -c -l lock.sh
# as of 20101215, I have no solution that will let me use fn+f6 without
# problems.
# handle print screen:
99:key:exec,ungrab: make-imlib-screenshot.sh
99:rep:noexec,ungrab:
99:rel:noexec,ungrab:
113:key,rep:exec,ungrab: volume.sh mute
114:key,rep:exec,ungrab: volume.sh down
115:key,rep:exec,ungrab: volume.sh up
To call actkbd at boot, I have a short script in ~/.X.d (85 actkbd.sh):
#setup actkbd daemon. We use it to catch extended keyboard keys.
if [ "`which actkbd`" ]; then
sudo killall actkbd
sudo actkbd -c /home/tc/.actkbd.conf -d /dev/input/event1 -D
sudo actkbd -c /home/tc/.actkbd.conf -d /dev/input/event3 -D
sudo actkbd -c /home/tc/.actkbd.conf -d /dev/input/event5 -D
sudo actkbd -c /home/tc/.actkbd.conf -d /dev/input/event7 -D
fi
Also the ALT-Right key acts funny in Linux. I don't know why, but it's usually ignored by X. I've used Tiny Core's /opt/bootlocal.sh to map it to the ALT-Left keycode, and that seems to fix the problem:
#set keycode for odd Alt_R; replace it with duplicate Alt_L
/usr/bin/setkeycodes e038 56
Other projects
I'm happy to say that I compiled and continue to use the following on this Mini + TC:
- pilot-link tools + Jpilot: Stable and chipper. Originally pilot-link would crash on disconnecting from USB, but I patched that by recoding with the newest libusb.
- gtkpod + libgpod + libplist: iPod manager
- xscreensaver: eye candy
- fslint: get rid of duplicate junk
- audacity beta: for audio fun
And other random stuff as time goes on ...
Resources
Other HP Mini + Linux resources (esp 1001's):
To Do
- Xorg setup - just the touchpad








