ot Beco(6-05-2006)

reiting (19)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane

Modulna poddruzhka na XFS za Red Hat Enterprise Linux i derivatite mu

Versiia 1.0 (06 mai 2006g.)

Copyright ©2006 Veselin Kolev, Sofiiski Universitet "Sv. Kliment Ohridski"

Litsenz: CC Attribution-ShareAlike


  1. Vuvedenie.
  2. Instalirane na izhodniia kod na modifitsiranoto ot Red Hat iadro.
  3. Suzdavane na durvoto s modifitsiraniia izhoden kod na iadroto.
  4. Izgrazhdane na modula xfs.ko.
  5. Kompilirane i instalirane na instrumentariuma za poddruzhka na XFS.

1. Vuvedenie.

XFS e failova sistema, originalno razrabotena ot kompaniiata Silicon Graphics za osnovna failova sistema v IRIX (UNIX distributsiia na Silicon Graphics). Otlichava se s visoka stabilnost, poddurzha golemi kato razmer dialove, golemi kato obem failove i direktorii s goliamo kolichestvo obekti (poddirektorii i failove) v tiah. Litsenzut, pod koito XFS e litsenzirana e GPL.

V Linux, XFS se sustoi ot dva komponenta: modul za iadroto i nabor instrumenti za suzdavane, upravlenie i diagnostika na veche izgradenite XFS lokalni failovi.

V ramkite distributsiiata Red Hat Enterprise Linux (tova vazhi i za derivatite, kato naprimer CentOS), paketut kernel ne sudurzha v sebe si modula fs/xfs/xfs.ko, ili kazano s drugi dumi, niama poddruzhka na XFS po podrazbirane v ramkite na distributsiiata. Edinstveniiat nachin za pribaviane na tazi poddruzhka e da se kompilira modula xfs.ko.

Pri pribavianeto na tazi poddruzhka triabva da se izpolzva samo izhodniia modifitsiran ot Red Hat kod na tekushtata versiia na iadroto. Tova triabva da e postoianna praktika pri kompilirane na moduli v ramkite na distributsiiata, za da mozhe da ne se narushavat sledstviiata ot aktualizatsiiata s nabora ot krupki, koito Red Hat prilagat kum izhodniia kod na iadroto.

Kompilatsiiata na modula xfs.ko triabva da se izvurshva za vsiaka konkretna versiia na iadroto. Primerite po-dolu sa bazirani na izpolzvaneto na versiia 2.6.9-34 na paketa kernel.

Ne se preporuchva kompilatsionniiat protses da se izvurshva vurhu sistemi v produktsiia. Za nuzhdite na kompilatsiiata e dobre da bude izpolzvan spetsialen host - "izgrazhdasht host" ("build host"). Prisustvieto na kompilator i kompiliraneto na izhoden kod vurhu sistemi v produktsiia e riskov faktor i triabva da bude izbiagvan vinagi, kogato tova e vuzmozhno.

Avtorut ne nosi otgovornost za prichineni shteti, vsledstvie na izpolzvane na opisanite tuk deistviia i tehniki.

2. Instalirane na izhodniia kod na modifitsiranoto ot Red Hat iadro.

Predi da se izvurshi instalatsiiata na izhodniia kod na modifitsiranoto ot Red Hat iadro, triabva da se proveri dali sa instalirani lokalno v sistemata paketite redhat-rpm-config i rpm-build. Tova mozhe da stane chrez komanden red ot vida:

# rpm -q redhat-rpm-config rpm-build

Rezultatut ot izpulnenieto na tozi komanden red triabva da ima vida:

# rpm -q redhat-rpm-config rpm-build
redhat-rpm-config-8.0.32.1-1
rpm-build-4.3.3-13_nonptl

ako paketite sa nalichni i instalirani v sistemata. Ako te ne sa nalichni v sistemata, triabva da budat instalirani. Tova mozhe da stane po dva nachina:

  • chrez instrumenta up2date

# up2date redhat-rpm-config rpm-build

  • chrez instrumenta yum (pri derivatite kato CentOS)

# yum install redhat-rpm-config rpm-build

Izteglianeto na izhodniia kod na aktualiziranoto ot Red Hat iadro mozhe da stane s instrumenta up2date chrez sledniia komanden red, podoben na sledniia:

# up2date --get-source kernel

Sled priklyuchvaneto na izpulnenieto na gorniia komanden red, RPM paketut s izhodniia kod na modifitsiranoto ot Red Hat iadro, se namira v direktoriia /var/spool/up2date. Instaliraneto mu mozhe da stane po sledniia nachin:

# rpm -ivh /var/spool/up2date/kernel*.src.rpm

Binarniiat paket kernel v suotvetnata versiia, spriamo koiato shte bude izgrazhdan modula xfs.ko triabva da bude instaliran, no ne e zadulzhitelno tova iadro da e rabotnoto iadro kum momenta na izgrazhdane na modula.

3. Suzdavane na durvoto s modifitsiraniia izhoden kod na iadroto.

Sled kato sa izpulneni stupkite v predishnata tochka, mozhe da se premine kum izgrazhdaneto na failovoto durvo, sudurzhashto modifitsiraniia ot Red Hat izhoden kod na iadroto:

# cd /usr/src/redhat/SPECS
# rpmbuild -bp --target=$(arch) kernel-2.6.spec

Vmesto direktnoto ukazvane chrez "--target=$(arch)" na tekushtata za izgrazhdashtiia host arhitektura, mozhe da se izpolzva konkretizatsiia, naprimer za i686, chrez ukazvane na "--target=$i686", za x86_64, chrez ukazvane na "--target=$x86_64" i t.n.

Sledstvie ot izpulnenieto na gornite komandi, e suzdavaneto na failovo durvo s modifitsiraniia ot Red Hat izhoden kod na iadroto v direktoriia /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/.

Sled zavurshvane na izgezhdaneto na failovoto durvo, vsichki konfiguratsionni failove za dadenata arhitektura se namirat v direktoriia /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/configs/. Naprimer, za arhitektura i686, tia sudurzha:

kernel-2.6.9-i686.config
kernel-2.6.9-i686-hugemem.config
kernel-2.6.9-i686-smp.config

Za da mozhe versiiata (vermagic) na modula xfs.ko da suvpada s versiiata na iadroto, za koeto toi se izgrazhda, vuv faila Makefile, koito se namira v direktoriia /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/, triabva da se napravi slednata promiana. Namira se reda, koito sudurzha:

EXTRAVERSION = -prep

i se zamenia s ekstra versiiata na iadroto, za koeto modula xfs.ko shte bude izgraden. Naprimer, za versiia na iadroto 2.6.9-34.EL, ekstra versiiata e 34.EL i sledovatelno v Makefile shte bude zadadeno:

EXTRAVERSION = -34.EL

Versiiata na iadroto mozhe da bude vidiana chrez izpulnenieto na edin ot slednite komandni redove

# rpm -q kernel

# rpm -q kernel-smp

# rpm -q kernel-hugemem

v zavisimost ot tipa na iadro.

4. Izgrazhdane na modula xfs.ko.

Purvata stupka e izgrazhdaneto na konfiguratsionen fail za kompilatsiiata na modula. Tazi konfiguratsiia zavisi ot tipa na iadroto, koeto shte bude izgrazhdano:

  • bazovo iadro

# cd /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/
# cp configs/kernel-2.6.9-i686.config .config

  • "smp" iadro

# cd /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/
# cp configs/kernel-2.6.9-i686-smp.config .config

  • "hugemem" iadro

# cd /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/
# cp configs/kernel-2.6.9-i686-hugemem.config .config

Sledva ukazvaneto na poddruzhkata na XFS v konfiguratsiiata za izgrazhdanite moduli. Za tselta se izpulniava:

# cd /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/
# make menuconfig

i sledva vlizane v menyuto za nastroiki. V nego ima sektsiia "File Systems". Tam triabva da se izbere poddruzhkata na XFS po sledniia nachin:

XFS filesystem support
[ ] Realtime support (EXPERIMENTAL)
[*] Quota support
[*] Security Label support
[*] POSIX ACL support

Sled zapazvaneto na novata konfiguratsiia sledva protsesa na kompilatsiia:

# cd /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/
# make modules_prepare
# make SUBDIRS=fs/xfs modules

Sled uspeshnoto priklyuchvane na kompilatsiiata sledva protsesa na instalatsiia:

# cd /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/
# make SUBDIRS=fs/xfs modules_install

Po tozi nachin v direktoriia /lib/modules/"kernel-version"/kernel/fs/xfs e nalichen modula xfs.ko. Poslednata stupka, koiato triabva da se izvurshi e izgrazhdaneto na zavisimostite mezhdu modulite na iadroto:

# depmod

ili konkretno za razlichnite tipove iadra (primer s kernel-2.6.9-34.EL):
  • bazovo iadro

# depmod 2.6.9-34.EL

  • "smp" iadro

# depmod 2.6.9-34.ELsmp

  • "hugemem" iadro

# depmod 2.6.9-34.ELhugemem

Za da se proveri dali modulut se zarezhda i otzarezhda uspeshno, mozhe da se izpulniat slednite komandni redove:

# modprobe xfs
# rmmod xfs

5. Kompilirane i instalirane na instrumentariuma za poddruzhka na XFS.

Instrumentariumut za poddruzhka na XFS sluzhi za izgrazhdane, redaktirane i dr. deinosti svurzani s diskovi dialove, formatirani za rabota s XFS. Toi mozhe da bude izteglen kato RPM paketi s izhoden kod ot adres:

ftp://oss.sgi.com/projects/xfs/cmd_rpms/SRPMS/

Obiknoveno v tozi direktoriia vinagi se namira tekushtata (posledna versiia) na instrumentite za poddruzha na XFS. Za primera, paketite vuv versiite im nalichni kum datata na napisvane na tozi dokument sa slednite:

acl-2.2.34-1.src.rpm
attr-2.4.28-0.src.rpm
dmapi-2.2.3-1.src.rpm
xfsdump-2.2.33-1.src.rpm
xfsprogs-2.7.11-1.src.rpm

V ramkite na Red Hat Enterprise Linux i derivatite mu ima nalichni paketi acl i attr, sledovatelno neobhodimite za iztegliane paketi s izhoden kod sa samo:

dmapi-2.2.3-1.src.rpm
xfsdump-2.2.33-1.src.rpm
xfsprogs-2.7.11-1.src.rpm

Vsichki tezi failove se kopirat na lokalniia disk v opredelena za tselta direktoriia (naprimer /home/install) i sled tova se instalirat s pomoshtta na instrumenta rpm:

# rpm -ihv /home/install/dmapi-2.2.1-1.src.rpm
# rpm -ihv /home/install/xfsdump-2.2.30-1.src.rpm
# rpm -ihv /home/install/xfsprogs-2.7.3-1.src.rpm

Purvo se kompilira izhodniia kod na xfsprogs:

# cd /usr/src/redhat/SPECS
# rpmbuild -ba xfsprogs.spec

Sled uspeshnoto priklyuchvane na kompilatsiiata i paketiraneto, initsirani ot rpmbuild po-gore, se poluchavat slednite RPM paketi:

/usr/src/redhat/RPMS/i386/xfsprogs-2.7.11-1.i386.rpm
/usr/src/redhat/RPMS/i386/xfsprogs-devel-2.7.11-1.i386.rpm
/usr/src/redhat/RPMS/i386/xfsprogs-debuginfo-2.7.11-1.i386.rpm

Za da produlzhi po-natatuk izgrazhdaneto na ostanalite paketi, se nalaga da se instalirat RPM paketite xfsprogs i xfsprogs-devel:

# rpm -ihv /usr/src/redhat/RPMS/i386/xfsprogs-2.7.11-1.i386.rpm /usr/src/redhat/RPMS/i386/xfsprogs-devel-2.7.11-1.i386.rpm

Sledva izgrazhdaneto na paketa s izhoden kod dmapi:

# cd /usr/src/redhat/SPECS
# rpmbuild -ba dmapi.spec

Kato rezultat ot kompiliraneto i paketiraneto shte se poluchat slednite RPM paketi:

/usr/src/redhat/RPMS/i386/dmapi-2.2.3-1.i386.rpm
/usr/src/redhat/RPMS/i386/dmapi-devel-2.2.3-1.i386.rpm
/usr/src/redhat/RPMS/i386/dmapi-debuginfo-2.2.3-1.i386.rpm

ot koito zadulzhitelno triabva da se instalirat paketite dmapi i dmapi-devel:

# rpm -ihv /usr/src/redhat/RPMS/i386/dmapi-devel-2.2.3-1.i386.rpm /usr/src/redhat/RPMS/i386/dmapi-2.2.3-1.i386.rpm

S tsel kompilirane na paketa s izhoden kod xfsdump, triabva da se izvurshi instalatsiiata na paketa libattr-devel:

  • chrez up2date:

# up2date libattr-devel

  • chrez yum:

# yum install libattr-devel

Sled uspeshnoto instalirane na libattr-devel, mozhe da se pristupki kum kompiliraneto na xfsdump:

# cd /usr/src/redhat/SPECS
# rpmbuild -ba xfsdump.spec

Pri uspeshno privurshvane na kompilatsiiata i paketiraneto, shte sa nalichni slednite RPM paketi:

/usr/src/redhat/RPMS/i386/xfsdump-2.2.33-1.i386.rpm
/usr/src/redhat/RPMS/i386/xfsdump-debuginfo-2.2.33-1.i386.rpm

Za ulesnenie, poluchenite paketi ot pokazanite tuk etapi na kompilatsiia, mogat da budat postaveni v yum formatno hranilishte, koeto da se izgradi s instrumenta createrepo:

# mkdir -p /home/rhel/xfs-repo
# cd /home/rhel/xfs-repo
# cp /usr/src/redhat/RPMS/i386/{dmapi*,xfs*} .
# createrepo .

RPM paketut createrepo mozhe da bude nameren v kolektsiiata ot paketi na Dag Wieers (http://apt.sw.be/).



<< CHettsi na karti na Texas Instruments | Rabota s izgledi v BIND9 >>