Blog literacki, portal erotyczny - seks i humor nie z tej ziemi


SWAP dla Linuxa i w95 mini-HOWTO
Seweryn Sobieszek sniff@alpha.net.pl
v1.2, 20 sierpnia 1999


Jak zrobi swap dla windowsa i Linuxa na jednej partycji? Opis zna-
jdziesz tutaj. Opisywany dalej sposb jest mojego autorstwa. Moliwe, e
kto ju wczeniej wpad na ten pomys, ale ja wymyliem go sam. Zaznaczam,
e nie przeczytaem tego w adnym FAQ. Brak takowego dokumentu jest gwn
przyczyn powstania tego pliku. Chc pomc wszystkim, ktry maj podobny
problem do mojego tzn. zbyt may twardy dysk, by sobie pozwoli na luk-
sus dwch oddzielnych swapw. Dokument ten zosta napisany w standardzie
ISO-8859-2. Wersja oryginalna znajduje si na serwerze JTZ: .
______________________________________________________________________

Spis treci


1. Wstp

1.1 Krtki opis metody
1.2 Historia dokumentu
1.2.1 Zmiany w wersji 1.1
1.2.2 Zmiany w wersji 1.2

2. Przygotowanie dysku i softu

2.1 Podzia dysku na partycje
2.2 Przygotowanie Windows95
2.3 Przygotowanie Linuxa
2.3.1 Debian
2.3.2 RedHat
2.3.3 Slackware

3. Sedno sprawy

3.1 Debian
3.1.1 Plik
3.1.2 Plik
3.2 RedHat
3.2.1 Zmiany w pliku
3.2.2 Zmiany w pliku
3.3 Slackware
3.3.1 Zmiany w pliku
3.3.2 Zmiany w pliku

4. Od autora



______________________________________________________________________

11.. WWssttpp

11..11.. KKrrttkkii ooppiiss mmeettooddyy

Mj sposb na wsplnego swapa Linuxa i w95 jest do prosty. Zmuszamy wina
do korzystania ze staego swapa na naszej partycji wymiany, a potem w
Linuksie korzystamy z tej samej partycji co windows. Tylko, e potem ta
partycja ju nie moe by odczytana przez windowsa - ma inny filesystem i
nie ma windowsowego swapa (plik win386.swp). Musimy wic przywrci na
niej flesystem dosowy i odtworzy brakujcy plik. Potem znw pracujemy w
Linuksie, on sobie swapuje na nasza partycj, przy koczeniu pracy znw
zamienia partycj na format dosowy. Proste prawda? Ale jakie skuteczne.
Jest to najszybsza metoda, ze wszystkich jakie do tej pory testowaem.
Zreszt co bd gada - sami przeczytajcie i sprawdcie.
11..22.. HHiissttoorriiaa ddookkuummeennttuu

Dotychczas zostay upublicznione nastpujce wersje tego dokumentu:


+o v1.01, 22 listopada 1998

+o v1.1, 28 marca 1999 (patrz rozdzia ``Zmiany w wersji 1.1'')

+o v1.2, 20 sierpnia 1999 (patrz rozdzia ``Zmiany w wersji 1.2'')


11..22..11.. ZZmmiiaannyy ww wweerrssjjii 11..11

Dokument zosta oglnie przebudowany, oprcz opisu dla dystrybucji Redhat
zosta dodany opis postpowania z dystrybucj Slackware.

Poprawiem literwki (mam nadziej) oraz uprociem troch zagmatwany opis.


11..22..22.. ZZmmiiaannyy ww wweerrssjjii 11..22

Dodany opis postpowania z dystrybucj Debian (teraz s a trzy! :)
(Debian, RedHat, Slackware)).

Wreszcie powstaa wersja SGML tego dokumentu, bo dotychczas (a wstyd si
przyzna :( ) pisaem to w HTML-u, ale tak, eby wygldao, e byo
konwertowane z SGML...


22.. PPrrzzyyggoottoowwaanniiee ddyysskkuu ii ssooffttuu

22..11.. PPooddzziiaa ddyysskkuu nnaa ppaarrttyyccjjee

Musisz mie co najmniej trzy partycje. Jedn z Linuxem, drug z w95 i
jeszcze trzecia na plik wymiany. Istnieje niepisana zasada, e swap
powinien by dwa razy wikszy od iloci RAM-u w Twoim komputerze. U mnie,
przy 540 MB (prosz bez miechw ;) ) dysku wyglda to tak:



/dev/hda1 #partycja z w95 (256 MB)
/dev/hda2 #partycja z Linuxem (227 MB)
/dev/hda3 #partycja wymiany (32 MB)





Do podziau na partycje uyj najlepiej linuxowego programu fdisk, nie
jest moe najwygodniejszy w uyciu, ale za to najlepszy. Partycji do
swapu nadaj identyfikator odpowidajcy typowi FAT16 (id 4 lub 6 w
zalenoci od wielkoci), a nie Linux Swap (id 82). Identyfikator
partycji ustawia opcja t menu fdisk-a.



22..22.. PPrrzzyyggoottoowwaanniiee WWiinnddoowwss9955

Tu nie bdziesz si musia duo natrudzi, zreszt pod Linuxem te nie. W
Panelu Sterowania ustaw jako plik wymiany plik o wielkoci minimalnej 0
i maksymalnej rwnej wielkoci partycji przeznaczonej na swapa. Zamknij
windowsy i odpal Linuxa.



22..33.. PPrrzzyyggoottoowwaanniiee LLiinnuuxxaa

Tak, to nie art. Linuxa te musisz przygotowa. Jak bym tego nie opisa
to Microsoft wytoczyby mi spraw w sdzie. ;) No to zaczynajmy.
Oczywicie musisz mie zainstalowanego Linuxa. Zbytnich wymaga co do
jdra i wersji chyba nie ma, bo wydaje mi si, e ten sposb bdzie dziaa
na kadym Linuksie. Osobicie testowaem to na Debianie, Redhacie, Slacku
i jdrach od 2.0.35 do 2.2.9 (rne kombinacje, ale jdra 2.2.x ju tylko
na Debianie).

Z narzdzi potrzebne bd nam:


+o /bin/dd

+o /sbin/mkdosfs (aka. /sbin/mkfs.msdos)

+o /sbin/mkswap

+o /bin/mount

+o /sbin/swapon

+o /sbin/swapoff (ktry jest linkiem do /sbin/swapon)

+o /bin/umount

+o oraz twj ulubiony edytor i packet manager (chybae chcesz wszystko
kompilowa)

Wszystkie te programy (oprcz mkdosfs) to standard i powinny znajdowa
si w kadej, nawet najbardziej okrojonej, instalacji. mkdosfs mona
skompilowa majc rda, lub (co jest znacznie wygodniejsze) zainstalowa z
pakietu, zwaszcza, e chyba kada dystrybucja posiada pakiet zawierajcy
mkdosfs.


22..33..11.. DDeebbiiaann

W Debianie mkdosfs znajduje si w pakiecie: dosfstools. Oprcz mkdosfs w
pakiecie tym znajduje si jeszcze narzdzie do sprawdzania i naprawiania
dosowego filesystemu - dosfsck. Pakiet moesz zainstalowa np. tak:


dpkg -i dosfstools_wersja.deb




Jeli nie masz instalki Debiana to pakiet moesz cign z tego adresu
ror/ftp.debian.org/pub/debian/dists/slink/main/binary-i386/oth-
erosfs/dosfstools_1.0-15.deb>.


22..33..22.. RReeddHHaatt

Dokadna nazwa pakietu zawierajcego mkdosfs brzmi np: mkdosfs-
ygg-0.3b-5.i386.rpm. Znajd go na na pytce instalacyjnej RedHata,
katalogu z instalk lub na jakim serwerze FTP, np. tutaj
redhat/redhat-5.2/i386/RedHat/RPMS/mkdosfs-ygg-0.3b-8.i386.rpm>.
Zainstaluj ten pakiet, np. w ten sposb:



rpm --install mkdosfs-ygg-0.3b-8.i386.rpm




Po tej operacji moesz ju przystpi do sedna sprawy. :)


22..33..33.. SSllaacckkwwaarree

W Slackware standardowo jest zainstalowany mkdosfs. A gdyby nie byo
/sbin/mkdosfs, to znajduje si on w pakiecie bin.tgz w podkatalogu a3
dystrybucji. Zainstaluj ten pakiet, wraz z nim otrzymasz jeszcze mas
poytecznych narzdzi. Moesz uy pkgtool lub installpkg. Pierwszy
poprowadzi Ci za rk, a drugi wystarczy wywoa w ten sposb:


installpkg bin.tgz




i pakiet jest ju zainstalowany. Teraz moesz przej do nastpnej czci.


33.. SSeeddnnoo sspprraawwyy

Wszystkie opisane poniej zmiany w plikach konfiguracyjnych dotycz
dystrybucji, ktre s tu wymienione: Debian, RedHat, Slackware. Jeli
posiadasz inn dystrybucj, poszukaj w plikach startowych podobnych
komend i poprbuj. Pamitaj jednak, e moesz zrobi sobie, a waciwie
partycjom krzywd, wic jeli nie do koca wiesz co robisz nie rb tego.
Skorzystaj z pomocy bardziej dowiadczonego kolegi, lub napisz do mnie
- wsplnie na pewno co poradzimy.

Acha, jeszcze jedna sprawa. Opisy zamieszczone tutaj dotycz:

+o Debian GNU Linux 2.1 (slink)

+o RedHat Linux 5.1 Manhattan

+o Slackware 3.6

Prawdopodobnie w innych wersjach tych dystrybucji pliki
konfiguracyjne wygldaj tak samo, a co najmniej podobnie, wic nie
powinno by problemw.


NNoottkkaa:: Czytajc dalej zapewne zauwaysz, e przy wywoaniach
swapon i swapoff polecam zamieni parametr -a na nazw
konkretnej partycji. Jest to waciwie niepotrzebne, ale pisz
tak by byo dokadnie wiadomo, o ktr partycj chodzi (u mnie
/dev/hda3). Czytajc man swapon zobaczysz, e opcja -a pozwala
na ma automatyzacj w zarzdzaniu partycjami wymiany. Jeli
chcesz z niej korzysta nic nie stoi temu na przeszkodzie. Po
prostu nie zmieniaj tego parametru. We tylko pod uwag, e
komenda mkswap nie posiada takiej opcji i tu bdziesz musia
wpisa dokadne nazwy partycji, bo mkswap nie przeczyta sobie
ich z /etc/fstab. Zamiast "brakujcej" opcji moesz uzy petli
shell'a, ale to ju temat na inn bajk. Jeli Ci to interesuje
- mail me.


Powodzenia...


33..11.. DDeebbiiaann

Zajmiemy si tylko dwoma skryptami startowymi: checkroot.sh i umountfs.
W pierwszym z tych plikw SWAP jest wczany podczas startu Linuxa, a w
drugim wyczany przed zamkniciem systemu.


33..11..11.. PPlliikk //eettcc//iinniitt..dd//cchheecckkrroooott..sshh

Na samym pocztku tego pliku znajdziesz co takiego:


if [ -x /sbin/swapon ]
then
[ "$VERBOSE" != no ] && echo "Activating swap..."
swapon -a
fi




Jak si pewnie domylasz sekwencja ta powoduje wczenie wszystkich swapw
zdefiniowanych w /etc/fstab. No i dobrze, bo my chcemy wczy te swapy.
Tylko, e jak na razie nasza partycja wcale nie ma formatu Linux Swap
(id 82) tylko DOS16. I co z tym fantem zrobi? Potraktowa mkswapem.
Zobacz efekt moich zmian:


if [ -x /sbin/swapon ]
then
[ "$VERBOSE" != no ] && echo "Activating swap..."
mkswap /dev/hda3
swapon /dev/hda3
fi





33..11..22.. PPlliikk //eettcc//iinniitt..dd//uummoouunnttffss

Plik ten jest wykonywany podczas zamykania systemu, wycza partycje
wymiany, odmontowuje partycje inne ni root i przemontowuje partycj
root jako read-only. W pliku tym jest co takiego:


echo -n "Deactivating swap... "
swapoff -a
echo "done."




Cig tych polece wycza pliki wymiany i wywietla na konsoli info. Zmien-
imy tylko parametr -a polecenia swapoff na /dev/hda3 lub jaki tam
macie, przeformatowujemy partycj na DOS16 i koniec.

A jednak nie.

DDllaacczzeeggoo ttoo jjeesszzcczzee nniiee kkoonniieecc??

Nie koniec, bo nie ma pliku win386.swp na naszej wieo sformatowanej
partycji. Windows (ale chyba tylko 95) sam powinien sobie utworzy
brakujcy plik, ale nie zawsze si tak dzieje. Wic moe mu pomoemy. Sami
utworzymy brakujcy plik. Potrzebny do tego bdzie katalog do
podmontowania wieo uwtorzonej partycji dosowej (najlpepiej pusty, ale
niekoniecznie, bo z moich dowiadcze wynika, e mona podmontowa
filesystem take w niepustym katalogu). Fragment tego pliku po
wszelkich przerbkach powinien wyglda mniej wicej tak:


echo -n "Deactivating swap... "
swapoff /dev/hda3
mkdosfs -n SWAP_SPACE /dev/hda3
mount -t msdos -o rw /dev/hda3 /katalog/w/ktorym/montujemy
dd if=/dev/zero of=/katalog/w/ktorym/montujemy/win386.swp bs=1k count=0
umount /dev/hda3
echo "done."




Przetestuj to jeszcze i ciesz si! :)))


33..22.. RReeddHHaatt

33..22..11.. ZZmmiiaannyy ww pplliikkuu //eettcc//rrcc..dd//rrcc..ssyyssiinniitt

Poszukaj w pliku /etc/rc.d/rc.sysinit (gdzie na pocztku) linii
wygladajcej mniej wicej tak:


# Start up swapping.
echo "Activating swap partitions"
swapon -a




Aktywuje ona partycje wymiany na wszystkich partycjach oznaczonych w
pliku /etc/fstab jako swap. My potrzebujemy uaktywni tylko jedn
partycj, moemy zmieni parametr -a na konkretn warto u mnie to
/dev/hda3). Ponadto musimy jeszcze wczesniej z naszej partycji wymiany
windowsa zrobic swapa linuxowego. Suy do tego polecenie mmkksswwaapp. Po
modyfikacji ta cz pliku powinna wyglda mniej wicej tak:


# Start up swapping.
echo "Activating swap partitions"
mkswap /dev/hda3
swapon /dev/hda3




W tej czci pliku ju koniec ze zmianami, teraz przenosimy si bliej koca
/etc/rc.d/rc.sysinit. Tam szukamy czego podobnego do:


# Right, now turn on swap in case we swap to files.
echo "Enabling swap space."
swapon -a 2>&1 | grep -v "busy"




Tutaj te parametr -a zmie na oznaczenie swojej partycji wymiany (np.
/dev/hda3).
I to ju wszystkie zmiany w tym pliku, przejdmy do nastpnego.


33..22..22.. ZZmmiiaannyy ww pplliikkuu //eettcc//rrcc..dd//iinniitt..dd//hhaalltt

Ten plik jest wykonywany w czasie zatrzymania lub restartu systemu,
czyli po wydaniu polecenia shutdown z odpowiednimi parametrami lub po
naciniciu trzech 'magicznych' klawiszy (tzn. Ctrl+Alt+Del). Zanim
zaczniesz cokolwiek zmienia, chcc unikn bdw musisz najpierw mie
zainstalowany pakiet mmkkddoossffss. Pisaem wczeniej jak to zrobi.

No to zaczynamy. W tym pliku (tzn. /etc/rc.d/init.d/halt) nie bdziesz
musia duo zmienia. Znajd co podobnego do tego:


# Turn off swap, then unmount file systems.
echo "Turning off swap"
swapoff -a




Tutaj jak wszdzie zmieniamy parametr -a na konkretne oznaczenie
partycji wymiany i wywoanie polecenia ma posta, np. swapoff /dev/hda3.
Teraz musimy jeszcze nada partycji wymiany format dosowy, po to, aby
windows mg z niej skorzysta. Robimy to poleceniem mkdosfs. Ta cz pliku
ju po wszelkich zmianach wyglda u mnie nastpujco:


# Turn off swap, then unmount file systems.
echo "Turning off swap"
swapoff /dev/hda3
mkdosfs -n SWAP_SPACE /dev/hda3




Parametr -n z wartoci SWAP_SPACE nadaje tworzonej partycji dosowej
etykiet SWAP_SPACE. I to byoby ju prawie wszystko, pozostao tylko
odtworzy brakujcy plik wymiany windowsa win386.swp (tu moesz zobaczy
``dlaczego'').


A teraz poka jak. Po komendzie mkdosfs dopisz jeszcze to:


mount -t msdos -o rw /dev/hda3 /katalog/w/ktorym/montujemy
dd if=/dev/zero of=/katalog/w/ktorym/montujemy/win386.swp bs=1k count=0
umount /dev/hda3




Ju moesz rozkoszowa si swoim dzieem... :)))


33..33.. SSllaacckkwwaarree

W Slacku te musisz poprawi tylko dwa pliki, w zasadzie zrobi to samo
co z RedHatem i Debianem, tylko e w innych plikach... Opisywany tu
przykad pochodzi ze Slackware 3.6, ale z pewnoci w innych wersjach
jest tak samo.


33..33..11.. ZZmmiiaannyy ww pplliikkuu //eettcc//rrcc..dd//rrcc..SS

Plik /etc/rc.d/rc.S jest wykonywany podczas inicjalizacji systemu. Za
kadym razem, gdy system wstaje, plik ten jest analizowany i wykonywane
s zawarte w nim polecenia. Nam chodzi o to, eby nasza partycja
(/dev/hda3) zostaa "przerobiona" na swapa dla Linuxa. Na samym pocztku
pliku znajdziecie co takiego:


# enable swapping
/sbin/mkswap -a
/sbin/swapon -a




Polecenia te uruchamiaj jako swap wszystkie partycje, ktre s oznaczone
w pliku /etc/fstab jako przeznaczone do swapowania. Zamie parametr -a
na konkretn partycj (eby uywa tej jednej), albo we wspomnianym pliku
opisz j jako miejsce na swap. Po operacji plik /etc/rc.d/rc.6 powinien
wyglda np. tak:


# enable swapping
/sbin/mkswap /dev/hda3
/sbin/swapon /dev/hda3




albo niech pozostanie w oryginalnej postaci, a w /etc/fstab powinno
pojawi si co takiego:


/dev/hda3 swap swap defaults 0 0





33..33..22.. ZZmmiiaannyy ww pplliikkuu //eettcc//rrcc..dd//rrcc..66

Ten pliczek jest z kolei wykonywany przy zamykaniu systemu. To tutaj
musimy zawrze linijki odpowiadajce za przywrcenie windzie straconego
swapa. Poszukaj czego takiego:


# Turn off swap, then unmount local file systems.
echo "Turning off swap."
swapoff -a




Tutaj zmiany nie bd polegay ju tylko na prostej kosmetyce. Opcj -a
tradycyjnie przemianowujemy na oznaczenie partycji wymiany oraz musimy
zrobi co jeszcze. Mianowicie utowrzy na teje partycji filesystem
dosowy i odtworzy swapa pani windzie. Pierwsze zaatwiamy uywajc
narzdzia mkdosfs, a konkretniej:


mkdosfs -n SWAP_SPACE /dev/hda3




Teraz wystarczy ju tylko odtworzy plik win386.swp na nowiutkim
filesystemie. (Chcesz wiedzie po co? - kliknij ``tutaj''!) Aby tego
dokona musisz dysponowa katalogiem do podmontowania filesystemu przed
chwil utworzonego (no, oczywicie moesz zapisywa bezporednio na par-
tycj, ale nie polecam :))). Najprociej chyba tak:
mount -t msdos -o rw /dev/hda3 /katalog/w/ktorym/montujemy
dd if=/dev/zero of=/katalog/w/ktorym/montujemy/win386.swp bs=1k count=0
umount /dev/hda3




To utworzy brakujcy plik i ju po kopocie. Bdzie to plik pusty o rozmi-
arze 0, ale taki wanie powinien by.

Sprawd co zdziaae/a i odpocznij troch :)))


44.. OOdd aauuttoorraa

Mam nadziej, e cho troch pomogem paru osobom. Wszelkie pytania
dotyczce tego dokumentu prosz kierowa na adres: sniff@alpha.net.pl.
Krytyka wszelkiego rodzaju mile widziana. Prosibym o kontakt
uytkownikw dystrybucji innych ni trzy opisane, aby w przyszoci
rozbudowa ten dokument.

Moe znajdzie si osoba, ktra prbowaa przenie to mini-JTZ w realia
win98. Prosz niech opisze wraenia i przele mi, bo moja edukacje w
wiecie windowsw skoczya sie na 95 i to nie OSR2.

Dzikuj za uwag.







































  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • qualintaka.pev.pl
  •