Stille PC door de harde schijf uit te zetten

Page 1

Een stille PC

Deze handleiding gaat over hoe je linux kan installeren op een low-end PC, waar het er om gaat dat de PC absoluut onhoorbaar is. Low-end betekent hier dat de processor passief gekoeld moet kunnen worden, dus zonder ventilator erop. Dit kan tot een Pentium 200 ofzo. Bij een Pentium 300 hoef je niet direct een ventilator op je CPU te hebben als je er een in je kast hebt die het een beetje goed doet en vanaf een Pentium 500 moet je echt een goede heatsink hebben wil dat lukken. Er zijn ook mensen die hun 2 Ghz processor passief koelen, maar daar heb je wel een grote heatsink voor nodig.

Voor de rest moet je ook je grafische kaart passief koelen, je voeding, bladiebladiebla, oftewel alles in je PC wat ook maar een beetje warmte produceert. Wees creatief: ik besloot dat ik mijn voeding goed genoeg gekoeld had nadat ik de bovenkant eraf had gehaald.
Dan houd je nog één onderdeel over wat een heleboel herrie produceert en dat is de harde schijf. In de rest van dit tekstje zal dan ook gaan over je harde schijf uit zetten ofwel verwijderen.

Het systeem waarop ik het een en ander geprobeerd heb is een Pentium 200 MMX met 500 MB harde schijf, een floppy drive, een S3 Virge grafische kaart en een 3C509 (Etherlink III, ISA) netwerkkaartje. Een ander systeem waar ik mijn experimenten op kon doen was een 486-80DX, met een reusachtige grafische kaart en bovenstaande harde schijf, floppy drive en netwerkkaart. Niet alle onderdelen zijn in elke stap aanwezig, maar dit zijn in ieder geval de onderdelen die ik gebruikt heb.

Page 2

De harde schijf onnodig maken

Om de harde schijf uit te zetten of zelfs te kunnen verwijderen moet je zorgen dat er niet naar de harde schijf geschreven hoeft te worden. Er zijn twee mogelijke oplossingen:

  1. Geen harde schijf - start op van een floppy, vanaf het netwerk en laad alle nodige bestanden in het geheugen. Een minder ideaal alternatief is gewoon een floppy gebruiken om naar te schrijven en van te lezen. Dit maakt natuurlijk nog steeds herrie, maar een floppy hoeft niet de hele tijd te draaien (zoals een harde schijf wel doet) en daarom is de herrie minder als er weinig gebruik gemaakt wordt van de diskette.
  2. Harde schijf uit zetten - start op vanaf de harde schijf, laadt wat dingen in het geheugen en zet de harde schijf uit. Nog een optie is een CD-ROM, die moet je ook uit zetten tegen de herrie en hoort dus een beetje hierbij.

In beide gevallen zie je dat er dingen in het geheugen moeten worden geladen om schijfactiviteit onnodig te maken. Dit gebeurt met een RAM disk. Een RAM disk is meestal 4 MB groot (aan te passen met kernelopties) en kan je gebruiken als een bestandssysteem. Natuurlijk moet je het een en ander in je kernel gecompileerd hebben (CONFIG_BLK_DEV_RAM). Dit gaat als volgt:

server:~# mke2fs /dev/ram0
mke2fs 1.30-WIP (30-Sep-2002)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1024 inodes, 4096 blocks
204 blocks (4.98%) reserved for the super user
First data block=1
1 block group
8192 blocks per group, 8192 fragments per group
1024 inodes per group

Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 23 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

server:~# mount /dev/ram0 ramdisk
server:~#

Natuurlijk kan je net zo goed een XFS, ReiserFS, Minix FS, UMSDOS FS of wat voor bestandssysteem dan ook in je RAM proppen. Verder kan /dev/ram0 verschillen per systeem. Sommige systemen hebben ook een link /dev/ramdisk ofzo.

In de directory ramdisk kun je nu allerlei leuke bestanden zetten en je kan er zelfs een hele root in zetten (met /bin, /lib, etc). Zo werken bootdisks. De root staat dan ingepakt (gzip) op de diskette en wordt uitgepakt in het geheugen geladen.

Een leuk detail over geheugen: zodra je je computer opnieuw opstart, of gewoon de stroom uit zet, raakt je geheugen leeg. Een nare gebeurtenis als je belangrijke dingen in je RAM disk hebt staan. Zorg dus dat dit op de een of andere manier op een schijf komt te staan, of zorg er voor dat de stroom nooit uitvalt en dat je computer nooit uit hoeft.

Page 3

Geen harde schijf

Er zijn een paar manieren om te booten zonder harde schijf. Ten eerste kan je een boot-floppy gebruiken. Er zijn verschillende mini-distributies op diskette. Ik gebruikte eerst cramdisk en ik heb ook mu-linux geprobeerd, maar allebei ondersteunden ze mijn netwerkkaart niet. Een optie is om een eigen bootdisk te maken. Aangezien ik mijn netwerkkaart niet aan de praat kreeg met de standaard bootflops en geen zin had om zelf een bootdisk te maken, heb ik uiteindelijk de harde schijf uit mijn 486 gehaald en de 486 op de rommelhoop gegooid.

Ok, verder met de floppy manier. Een boot-floppy maakt zelf vaak al een ramdisk aan, waar je dan allerlei leuke dingen mee kan doen. Verder kan je zelf gewoon extra ramdisks aanmaken, er van uit gaande dat je genoeg geheugen hebt om zulke dingen te doen. Kopieer nu het programma wat je wilt draaien (in mijn geval dnetc, de distributed.net client) naar het geheugen. Als dat niet past, of als je dingen niet wilt opslaan in het geheugen omdat dat binnen een seconde weg kan zijn (stroom uit = weg inhoud geheugen) kun je een mooi floppy maken en die gebruiken voor zulk soort dingen. Het boot-floppy heb je niet meer nodig, want die is in ieder geval in het geheugen geladen en als dat niet het geval is bij normale programma's (/bin/ls bijvoorbeeld) dan kan je ermee weg komen zolang je geen programma's start.

Ik draaide dus dnetc vanaf een floppy, wat het voordeel had dat alle dingen die hij wilde opslaan gewoon vastlagen. Ik kon dan het floppy uit de machine halen, de bestandjes die hij geschreven had kopieren op een andere computer en nieuwe bestandjes op de diskette zetten. Toch was dit nog niet automatisch genoeg voor me en ik ging naar optie 2.

Page 4

Harde schijf uit zetten

Het voordeel van een harde schijf is dat je allerlei programma's tot je beschikking hebt en gewoon programma's kan installeren, zolang je ze maar niet gebruikt nadat je je schijf uit hebt gezet. Niet meer moeilijk doen met diskettes en uitvinden welke bestanden je moet installeren, gewoon de hele harde schijf vol zetten.

Er zit geen knopje op een harde schijf om hem uit te zetten, maar gelukkig kan het via speciale software. Deze software heet hdparm. Gelukkig had ik Debian geinstalleerd en kon ik gewoon doen:

server:~# apt-get install hdparm

Je kan vervolgens de harde schijf uit zetten met:

server:~# hdparm -Y /dev/hda

...of iets dergelijks. Zie man hdparm voor details. Je zal merken dat je harde schijf langzaam in slaap valt, maar na een paar seconden weer opstart. Dat was bij mij in ieder geval zo, het hoeft niet bij elk systeem zo te zijn. Omdat dit systeem verder niets nodig had en vooral niet naar de schijf moest schrijven werd ik moordlustig:

server:~# killall cron syslogd atd bladiebla
bladiebla: no process killed

Dit hielp nog niet. De harde schijf bleef maar weer aan gaan. De oplossing was de harde schijf in read-only te mounten:

server:~# mount -o ro,remount /dev/hda2

Natuurlijk kan hda2 verschillen per systeem. Het kan ook helpen om je swap uit te zetten in een poging de harde schijf tot rust te laten komen.

Het was dus uiteindelijk gelukt om de harde schijf in een diepe winterslaap te brengen. Vervolgens heb ik een scriptje gemaakt wat dit allemaal automatiseerde en dit is het resultaat:

#!/bin/sh
#
# start/stop dnetc.
# use like ``dnetc start'' or ``dnetc stop''

case "$1" in
  start)
    mke2fs /dev/ram0
    mount /dev/ram0 /root/ramdisk
    cp -aR /root/dnetc/* /root/ramdisk
    cd /root/ramdisk
    ./dnetc > /dev/tty4 &
    sync
    mount -o ro,remount /dev/hda2
    hdparm -Y /dev/hda2

  stop)
    killall dnetc
    sleep 1
    mount -o rw,remount /dev/hda2
    cp -aR /root/ramdisk/* /root/dnetc
    cd /root
    umount /root/ramdisk
    ;;
esac

exit 0

Einde