You are on page 1of 5

Hng dn thc hnh H iu hnh

Bin dch v ci t Nachos

BIN DCH V CI T NACHOS


Khuyn co: nn s dng phin bn Linux: Redhat 9 hoc Fedora core 3 1. Gii thiu Nachos Nachos l mt phn mm m ngun m (open-source) gi lp mt my tnh o v mt s thnh phn c bn ca h iu hnh chy trn my tnh o ny nhm gip cho vic tm hiu v xy dng cc thnh phn phc tp hn ca h iu hnh + My o c gi lp c kin trc MIPS vi hu ht cc thnh phn v chc nng ca mt my tht nh: thanh ghi, b nh, b x l, b lnh, chu k thc thi lnh, c ch ngt, chu k ng h, + H iu hnh Nachos chy trn my o Nachos hin l mt h iu hnh n chng Ti y, tm thi cha quan tm ti hot ng ca Nachos, xem n nh mt hp en. Nhim v u tin l ci t thnh cng Nachos v chy c mt s chng trnh v d sn c (trong th mc code/test). + Lm sao bin dch Nachos? bin dch Nachos (hay bt k chng trnh C no khc) trn Linux, s dng trnh bin dch gcc. Mt im cn lu y l cc kin trc my khc nhau (x86, MIPS,) s dng cc trnh bin dch gcc khc nhau (ngoi ra cn khc nhau vi tng bn phn phi (distro) ca Linux (Fedora core, Ubuntu,), thm ch tng phin bn trong cng 1 bn phn phi). + Lm sao bin dch cc chng trnh C (cc v d km theo trong th mc code/test v cc chng trnh s vit sau ny) trn Nachos? Cn lu l cc chng trnh ny c bin dch chy trn h iu hnh Nachos cho kin trc my MIPS ch khng phi trn h iu hnh Linux cho kin trc my x86. Nh vy, khng th dng trnh bin dch gcc trn h iu hnh Linux ca my tht (x86) c m cn phi to ra mt trnh bin dch gi l Cross-compiler thc hin bin dch cc chng trnh C trn h iu hnh Nachos cho kin trc my MIPS. 2. Ci t Cross-compiler a. Cross-compiler l g? Tham kho http://en.wikipedia.org/wiki/Cross-compiler b. Vai tr ca Cross-compiler khi s dng Nachos Cross-compiler c dng bin dch cc chng trnh C thnh cc chng trnh thc thi trn h iu hnh Linux cho kin trc my MIPS (COFF). Cng c coff2noff (c vit sn trong phn mm Nachos) c dng chuyn i nh dng COFF thnh nh dng NOFF, nh dng chy trn h iu hnh Nachos cho kin trc my MIPS. Khoa CNTT H Khoa Hc T Nhin
1

Hng dn thc hnh H iu hnh

Bin dch v ci t Nachos

c. Ci t Cross-compiler i. Yu cu: ci t gcc-3.x trn h iu hnh Linux ii. Cc bc thc hin Gi s ang lm vic ti th mc /root To th mc lu bi tp h iu hnh % mkdir hdh Copy cc tp tin sau vo th mc hdh (c th dng WinSCP) binutils-2.11.2.tar.gz gcc-2.95.3.tar.gz Vo th mc hdh, gii nn cc tp tin ny % cd hdh % tar -xzvf binutils-2.11.2.tar.gz % tar xzvf gcc-2.95.3.tar.gz To th mc cha Cross-compiler s c ci t % mkdir cross-compiler Bin dch binutils trc % cd binutils-2.11.2/ % ./configure --host=i686-pc-linux-gnu --target=decstationultrix --prefix=/root/hdh/cross-compiler % make % make install Ci t binutils thnh cng s to cc file sau trong th mc /root/hdh/cross-compiler/decstation-ultrix/bin/: ar as ld nm ranlib strip Lu , khng nn bin dch gcc ngay trong th mc cha m ngun (gcc-2.95.3). Do , trc khi tin hnh bin dch gcc, cn to th mc cha kt qu bin dch (th mc ny nn t cng cp vi th mc cross-compiler to trn).: % cd .. % mkdir gcc-obj V to th mc gi system-include % mkdir cross-compiler/decstation-ultrix/sys-include Vo th mc gcc-obj, thc hin cu hnh gcc % cd gcc-obj Khoa CNTT H Khoa Hc T Nhin
2 To Cross-compiler cho kin trc my MIPS

Hng dn thc hnh H iu hnh

Bin dch v ci t Nachos

% ../gcc-2.95.3/configure --host=i686-pc-linux-gnu -target=decstation-ultrix --prefix=/root/hdh/cross-compiler --with-gnu-as --with-gnu-ld --with-as=/root/hdh/crosscompiler/decstation-ultrix/bin/as --with-ld=/root/hdh/crosscompiler/decstation-ultrix/bin/ld --enable-languages=c --disablemultilib --disable-libgcj Bin dch gcc % make Nu qu trnh bin dch c li to libgcc2.a th c thc hin tip ci t
(v Nachos khng ph thuc vo bt k th vin no)

% make -k install Ci t gcc thnh cng s to thm file gcc trong th mc /root/hdh/cross-compiler/decstation-ultrix/bin/ 3. Bin dch v ci t Nachos a. Yu cu ci t gcc-2.x hoc gcc-3.x trn Linux ci t thnh cng Cross-compiler b. Cc bc thc hin: Copy tp tin sau vo th mc hdh (c th dng WinSCP) nachos-3.4.tar.gz Gi s ang lm vic ti th mc /root Vo th mc hdh, gii nn cc tp tin ny % cd hdh % tar -xzvf nachos-3.4.tar.gz Trc khi bin dch Nachos, cn sa li trong file ~/nachos/code/test/Makefile ng dn ca Cross-compiler (GCCDIR) ti th mc cha Cross-compiler ci t thnh cng bc trn (/root/hdh/cross-compiler/decstation-ultrix/bin/). Hon ton c th copy th mc cross-compiler/decstation-ultrix/ v th mc cha m ngun Nachos nachos-3.4 ti my khc bin dch Nachos m khng cn bin dch li Cross-compiler. Thng 2 th mc ny cng cp vi nhau nn khi chnh ng dn ti Crosscompiler c th ng dn tng i nh sau: # if you are cross-compiling, you need to point to the right # executables and change the flags to ld and the build Khoa CNTT H Khoa Hc T Nhin
3

Hng dn thc hnh H iu hnh # procedure for as

Bin dch v ci t Nachos

GCCDIR = ../../../cross-compiler/decstation-ultrix/bin/ LDFLAGS = -T script -N ASFLAGS = -mips2 CPPFLAGS = $(INCDIR) # if you aren't cross-compiling: # GCCDIR = # LDFLAGS = -N -T 0 # ASFLAGS = # CPPFLAGS = -P $(INCDIR) PATH = $(GCCDIR):/lib:/usr/bin:/bin CC = $(GCCDIR)gcc -B../../../cross-compiler/ AS = $(GCCDIR)as LD = $(GCCDIR)ld CPP = gcc -E INCDIR =-I../userprog -I../threads CFLAGS = -G 0 -c $(INCDIR) Bin dch Nachos % cd nachos-3.4/code % gmake all 4. Chy th chng trnh trn Nachos % ./userprog/nachos rs 1023 x ./test/halt Kt qu nhn c: Machine halting! Ticks: total 42 idle 0, system 30, user 12 Disk I/O: reads 0, writes 0 Console I/O: reads 0, writes 0 Paging: faults 0 Network I/O: packets received 0, sent 0 Cleaning up Nu chy ra kt qu nh trn, ngha l thnh cng qu trnh ci t Nachos trn Linux

Khoa CNTT H Khoa Hc T Nhin

Hng dn thc hnh H iu hnh

Bin dch v ci t Nachos

....Nhim v tip theo: Tm hiu hoat ng ca Nachos c th thm cc system call vo h iu hnh Nachos Tm hiu cc thnh phn c bn ca h iu hnh Nachos c xy dng xy dng cc thnh phn phc tp hn

Khoa CNTT H Khoa Hc T Nhin

You might also like