You are on page 1of 57

Xy Dng H iu Hnh LinuxFromScratch

published by Nofa.mous

ti : Xy Dng H iu Hnh LinuxFromScratch

MC LC
I>

Gii thiu chung .....................................................................................................................................1


Linux From Scratch ...........................................................................................................................................1
Cc phin bn.....................................................................................................................................................1
a LiveCD ........................................................................................................................................................3
Tm tt qu trnh ci t xy dng LFS .............................................................................................................4

II>Chun

b xy dng LFS .....................................................................................................................6

1. Cu hnh ci t my ch o ................................................................................................................6
2. Chun b xy dng ..................................................................................................................................8

3.

4.

2.1 Gii thiu .................................................................................................................................................8


2.2 To phn vng mi ..................................................................................................................................8
2.3 To ra h thng tp tin trn phn vng .....................................................................................................9
2.4 Kt ni cc phn vng mi.......................................................................................................................9
Chun b cc gi ci t, mi trng ci t .................................................................................10
3.1 Chun b ................................................................................................................................................. 10
3.2 Cc gi ci t ........................................................................................................................................ 11
3.3 Thm ti khon LFS ............................................................................................................................... 12
3.4 Thit lp mi trng .............................................................................................................................. 13
Xy dng h thng tm thi .................................................................................................................14
4.1 Gii thiu ............................................................................................................................................... 14
4.2 Gii nn , bin dch cc gi cn thit .....................................................................................................15
4.2.1 Cch xy dng.................................................................................................................................15
4.2.2 Danh sch cc gi cn ci t v bin dch ..................................................................................... 17

III> Xy

Dng H Thng LFS............................................................................................................20

5. Ci t phn mm cn bn ca h thng ..........................................................................................20


5.1 Gii thiu ..............................................................................................................................................20
5.2 Chun b h thng tp tin ht nhn o ca h thng ............................................................................... 20
5.2.1 To ra cc nt kt ni thit b ban u. ............................................................................................20
5.2.2 nh x v Tp Trung /dev..............................................................................................................21
5.2.3 Lp t h thng tp tin ht nhn o............................................................................................... 21
5.3 Chuyn sang mi trng chroot lm vic .......................................................................................... 22
5.4 To cc th mc .....................................................................................................................................23
5.5 To ra cc tp tin cn thit v lin kt mm ........................................................................................... 24
5.6 Ci t Cc Gi Phn Mm Ln Cui ................................................................................................... 27
5.7 Lm sch h thng ln cui .................................................................................................................... 32
6. Thit lp h thng Bootscripts .......................................................................................................34
6.1 Gii thiu ..............................................................................................................................................34
6.2 Cu hnh Script setclock......................................................................................................................... 36
6.3 To tp tin /etc/inputrc ........................................................................................................................... 37
6.4 Khi ng tp tin Bash Shell ................................................................................................................. 38
6.5 Cu hnh Script localnet ......................................................................................................................... 40
6.6 Cu hnh tp tin /etc/hosts ...................................................................................................................... 40
6.7 Cc lin kt thit b ............................................................................................................................. 41
6.7.1 Lin kt CD-ROM........................................................................................................................... 41
6.7.2 Cc thit b trng lp .......................................................................................................................41
6.7.3 To tn c nh cho giao din mng ................................................................................................41
6.7.4 To cc tp tin cu hnh Giao Din Mng .......................................................................................42
6.7.5 To tp tin /etc/resolv.conf ..............................................................................................................43
7. Lm h thng LFS khi ng ............................................................................................................ 44
7.1 Gii thiu ..............................................................................................................................................44
7.2 To tp tin /etc/fstab ............................................................................................................................... 44
7.3 Linux 2.6.16.27 ...................................................................................................................................... 45
7.4 Lm h thng LFS khi ng................................................................................................................. 47
8. Khi ng h thng LFS ..................................................................................................................... 48
9. Xy dng LFS trn thit b ri USB..52

ti : Xy Dng H iu Hnh LinuxFromScratch

I>

Gii thiu chung

Hin nay trn th gii c rt nhiu cc h iu hnh c s dng rng ri nh Windows,


Linux, Unix, MacOs Chc chn , t nhiu chng ta cng nghe ni v h iu hnh
Linux hay cc bin th ca n nh : Ubuntu, CentOs
C bao gi chng ta t hi nu mun t to nn 1 h iu hnh c nhn c c khng ?
LinuxFromScratch l 1 d n gip mi ngi tm hiu su hn cch thc hot ng ca
h iu hnh linux, v t d n ny, mi ngi u c th t mnh xy dng nn 1 h
iu hnh t cn bn cho n ty bin c nhn nng cao theo s thch ca bn thn .
Linux From Scratch (LFS) l mt d n c mc ch em li cho mi ngi nhng
cch thc xy dng mt 1 h iu hnh Linux ring cho mnh. Nhng cch thc c
trnh by trong quyn sch cng tn, c tc gi chnh l Gerard Beekmans.

Nguyn Nhn
C nhiu ngi hi: "Ti sao li i ci t c mt h iu hnh Linux bng tay t m
ngun trong khi ai cng c th ti xung nhng bn phn phi GNU/Linux c sn trn
Internet ?" C rt nhiu l do ci t mt h iu hnh theo ngh ca LFS.
Vai tr quan trng ca LFS l n ch dy cho ngi ta v cc hot ng bn trong ca h
iu hnh Linux. Khi t xy dng mt h iu hnh, nh ngh bi LFS, s ph thuc
ln nhau v s hot ng ca cc ng dng chung vi nhau trong h iu hnh s tr nn
d hiu hn. iu quan trng nht l LFS s ch dn cch xy dng mt h iu hnh ph
hp vi mong i v cn thit ca tng ngi.
LFS cng hng dn ta xy dng mt h iu hnh nh gn. Khi ci t mt bn phn
phi GNU/Linux c trn th trng, n s kt thc vi mt h iu hnh bao gm nhiu
chng trnh i km khng cn thit v lm tn dung lng a. Trong khi mt h
iu hnh xy dng theo ngh ca LFS ch chim ti a 100 MB.

http://scribd.com/muafiu

ti : Xy Dng H iu Hnh LinuxFromScratch

Cc phin bn :
Hin nay, d n Linux From Scratch c t chc thnh nhng d n con sau:

LFS (Linux From Scratch): l cun sch chnh, gip ta to nn mt phin bn


Linux hon chnh t m ngun. Cun sch ny l c s to ra thm cc cun
sch khc.

BLFS (Beyond Linux From Scratch): l cun sch con ca LSF, n gip ngi
dng c cc kin thc ngi dng c th ty bin LFS theo ca h.

ALFS (Automated Linux From Scratch): cung cp nhng cng c qun l v t


ng ha vic xy dng LFS v BLFS.

CLFS (Cross Linux From Scratch): Mt phin bng nng cao ca LFS. Ngoi vic
dy cho ngi dng cch to ra Linux, n cn gip ngi dng hiu thm v to ra
mt LFS da trn cross-complier (bin dch cho)

HLFS: (Hardened Linux From Scratch) tp trung vo vic xy dng mt h thng


LFS vi tnh an ninh cao.

Hints: D n Hints l tp hp ca nhng ti liu, kin bn ngoi cc quyn sch


LFS v BLFS vi mc ch lm cch no tng cng h thng LFS.

Patches: D n Patches cung cp cc bn v cho ngi dng LFS.

LiveCD: D n LiveCD cung cp mt a CD vi mi trng dng xy dng


mt LFS hoc nh mt a CD cu h ni chung. LiveCD khng th dng to
ra LFS t phin bn 7.0 tr ln

Linux From Scratch l g?


Linux From Scratch (LFS ) l mt d n cung cp cho bn hng dn tng bc xy
dng h thng Linux ty chnh ca ring bn hon ton t m ngun .
Ti sao ti mun mt h thng LFS ?
Nhiu ngi t hi ti sao h phi i qua nhng rc ri ca vic xy dng mt h thng
Linux t u khi n gin h c th ti v mt trong rt nhiu bn phn phi Linux hin
c. Tuy nhin , vic xy dng LFS c rt nhiu li ch sau y :
LFS dy ngi ta cch mt h thng Linux hot ng ni b nh th no
Xy dng LFS dy cho bn v tt c nhng g lm cho nh du vo Linux , lm th no
m chng lm vic vi nhau v ph thuc ln nhau . V quan trng nht , lm th no
ty chnh n theo s thch v nhu cu ca ring bn.

http://scribd.com/muafiu

ti : Xy Dng H iu Hnh LinuxFromScratch


Xy dng LFS to ra mt h thng Linux rt nh gn
Khi bn ci t mt bn phn phi linux sn c, bn thng kt thc vic ci t vi rt
nhiu chng trnh m bn c l s khng bao gi s dng .Khng gian cng b lng
ph. N khng kh c c mt h thng LFS ci t di 100 MB .Bn c th xy
dng c 1 h thng LFS vi dung lng rt nh . Chng ta ci t mt h thng m ch
chy cc my ch web Apache, tng s s dng khng gian a c khong 8
MB . Thm ch, c th c a xung 5 MB hoc t hn. iu ny l hon ton khng
th vi cc bn phn phi linux khc.
LFS l cc k linh hot
Xy dng LFS c th c so snh vi hon thnh 1 ngi nh . LFS ny s cung cp cho
bn nhng thnh phn b khung ca mt ngi nh , nhng n thuc vo bn ci t h
thng ng nc , cm in , nh bp , phng tm , mi nh , vv Bn c kh nng bin
n thnh bt k loi h thng bn cn, v hon chnh n theo nhu cu, s thch c nhn
ca ring bn
LFS cung cp cho bn s an ton tuyt i v bo mt
Bn s bin dch ton b h thng t ngun , do cho php bn thc hin kim sot tt
c mi th , nu bn mun lm nh vy , v p dng tt c cc bn v li bo mt m bn
mun hoc cn phi c p dng. Bn khng cn phi ch i cc gi v li t cc nh
pht hnh . Thng thng, bn khng bao gi thc s bit mt l hng bo mt l c nh
hay khng tr khi bn lm iu cho mnh .
a LFS Live CD l g ?
1 a LiveCD l 1 a CD c kh nng khi ng h thng ca bn trc tip, lm vic
nh 1 h iu hnh , v hon ton khng nh hng g n cng. Vi a CD, bn c 1
h thng ton b nhng th cn thit , bn c th lm bt c iu g trn h thng ring
bit ny m khng phi lo lng v cc vn pht sinh ngoi.
LFS LiveCD cung cp 1 h thng my ch ng tin cy v an ton cho mc ch xy
dng
LinuxFromScratch. Do , n khng th cung cp hon ho v y nh 1 h thng
Linux trn cng. Tuy nhin , LFS LiveCD m bo hon ton vic cung cp y cho
nhng g bn cn , mun v sn c bn xy dng LFS .
Ti sao nn s dng a LFS LiveCD thay v s dng h iu hnh ch bn ngoi?
LFS LiveCD cung cp 1 my ch tt v mc ch xy dng LinuxFromScratch. Vic s
dng h iu hnh bn ngoi xy dng LFS s tr nn kh khn hn v trong qu trnh
xy dng c th pht sinh cc li ngoi mun. a LiveCD c kim tra k lng
v m bo 1 mi trng my ch tt xy dng thnh cng LFS 1 cch ti u nht .
a LiveCD cng cung cp cc gi ci t sn c trong qu trnh xy dng, iu ny lm
cho mi th tr nn ng b v hot ng tt hn.

http://scribd.com/muafiu

ti : Xy Dng H iu Hnh LinuxFromScratch

Loi b cc hn ch v my ch, phn cng v cc iu kin khc


Xy dng LFS , bn cn phi c mt h thng Linux my ch vi cc cng c pht trin .
Trong trng hp ny , cc a CD l h thng my ch . iu ny cho php bn xy
dng LFS vo my trng cha c h iu hnh nu bn mun.

a CD l 1 a cu h trc tip
i khi h iu hnh trn cng ca bn b li v bn khng th khi ng n, lc ny
bn cn phi c a CD khi ng vo my ch v sa cc li sau c th khi ng
li 1 cch an ton nhanh chng.
a LiveCD bao gm cc gi ci t v ti liu LFS. Gip bn tit kim c thi
gian thay v phi ti tng gi bin dch, ti liu.

Tm Tt Qu Trnh Ci t Xy Dng LFS


Thng thng th qu trnh ci t mt h iu hnh Linux From Scratch cn c mt
cng c chia ra nhiu phn (partition) v mt h iu hnh GNU/Linux c ci
sng dng bin dch cc gi m ngun. Nhng khi dng da Linux From Scratch
LiveCD th h iu hnh GNU/Linux ci sn trn cng khng cn thit. V da CD
cha ng tt c cc gi m ngun cn thit, quyn sch LFS, mt h thng bin dch t
ng, v mt mi trng lm vic ha XFCE.
Trc ht th h thng bin dch ca LFS cn c bin dch bng cch dng h thng
GNU/Linux c sn. Mt mi trng bin dch chng trnh y trn h thng
GNU/Linux bao gm: GCC, glibc, binutils v mt vi cng c cn thit khc. Sau th
th mc gc (root directory) ca h thng GNU/Linux dng bin dch cc gi m
ngun LFS cn c chuyn sang phn a cng mi bng cch dng lnh chroot. Sau
khi di th mc gc qua phn a cng mi th phn cn li ca h thng LFS mi
c bin dch tip.

http://scribd.com/muafiu

ti : Xy Dng H iu Hnh LinuxFromScratch

iu Kin
Vic xy dng LFS khng phi l 1 qu trnh n gin, n i hi ngi xy dng phi
c 1 kin thc cn bn nht nh v Linux , v a s cc lnh thao tc c thc hin
bng cc dng lnh shell.
V kh nng v thi gian gii hn , nn bi bo co ny s ch hng dn v gii thiu
mc cn bn cc thao tc v din bin qu trnh xy dng LFS 1 cch ngn gn v d
hiu nht . T c th pht trin ln cc mc khc phc tp hn .
Chun b :
-My tnh c CPU li n 2.0 Ghz Ram 512Mb v cng 8G . My cha c ci bt
k h iu hnh Linux no .
-1 H iu hnh ch , vic xy dng LFS s c tin hnh trn mi trng ny ( chy
trn LFS Live CD)
-1 a LFS LiveCD 6.2 , a ny s lm nhim v cung cp 1 h iu hnh ch xy
dng LFS v cung cp cc gi ci t sn c trong CD .
-1 file ti liu hng dn xy dng LFS 6.2 t a ch :
http://www.linuxfromscratch.org/lfs/downloads/6.2/LFS-BOOK-6.2.pdf.bz2
-Cc gi ci t cn thit ( c sn trong LiveCD)
- a LFS LiveCD 6.2 c th ti ti trang ch LFS : http://ftp.osuosl.org/pub/lfs-livecd/
-Trong bo co ny , s dng phin bn : lfslivecd-x86-6.2-3.iso
-Qu trnh xy dng s c thc hin trn phn mm my o: VM Ware v Virtual Box.

http://scribd.com/muafiu

ti : Xy Dng H iu Hnh LinuxFromScratch

II> Chun B Xy dng LFS


1. Cu hnh ci t my ch o
xy dng LFS , vic u tin cn phi c l 1 h iu hnh ch lm mi trng trung
gian xy dng , qu trnh xy dng s c thc hin trn mi trng ny.
Sau khi ti xong file lfslivecd-x86-6.2-3.iso t trang ch , chng ta tin hnh to 1 my
ch o cha c ci bt c h iu hnh no , chng ta s tin hnh boot vo h iu
hnh linux t a CD .

Sau khi chn xong, chng ta tin hnh khi ng my tnh v boot vo CD. Mn hnh s
hin ra thng bo v phin bn a LiveCD 6.2 , nhn Enter vo.

Vic ci t ny din ra nhanh chng n gin, phn Time, chn Default v Locale ,
chn en_US

http://scribd.com/muafiu

ti : Xy Dng H iu Hnh LinuxFromScratch

Sau nhn enter , chng ta s truy cp trc tip vo quyn root . s dng mi trng
ha xfce4 cho d dng hn, chng ta dng lnh: startxfce4

Lc ny chng ta c 1 h iu hnh ch chy trc tip trn a CD v 1 cng cn


trng . y l giao din ca mi trng ha xfce4

Vic thc hin xy dng LFS hu ht tin hnh bng dng lnh shell , vic thao tc trn
mi trng ha s gip chng ta d dng theo di c s thay i ca cc tp tin
bng giao din ha 1 cch trc din hn.

http://scribd.com/muafiu

ti : Xy Dng H iu Hnh LinuxFromScratch

2. Chun b xy dng
2.1 Gii thiu
Trong phn ny , vic phn vng ca h thng LFS c chun b. Chng ta s to ra cc
phn vng ring trn a , to ra mt h thng tp tin, v gn kt n li vi nhau.
2.2 To phn vng mi
Chng ta ang c 1 cng trng 8G v hon ton cha c phn vng cng nh nh
dng .
Vic u tin l chng ta m Terminal tin hnh kim tra a bng lnh:
fdisk l
Chng ta s thy a hon ton cha c nh dng

tin hnh to phn vng v nh dng dng lnh:


fdisk /dev/hda ( Ty vo chun ca cng , v tr m c th khc nhau nh : hdb,
sda,sdb)
Chng ta s to 2 phn vng primary ( phn vng chy os )
Hda1 s c dung lng 6G
Hda2 c dung lng 512M v c phn vng theo swap lu cc file tm trong qu
trnh build .
Sau khi phn chia v nh dng xong, chng ta tin hnh write a lm sch . Vic
phn vng Swap nh hng ti /etc/fstab sau ny .
Tp tin ny cha nhng mountpoint ca cc phn vng (v tr ca phn vng trong
cu trc h tp tin), mount cc phn vng vo nh th no, vi nhng ty chn c
bit g (mount t ng hay khng, ngi dng bnh thng c th mount hay khng,
v.v..)

http://scribd.com/muafiu

ti : Xy Dng H iu Hnh LinuxFromScratch


2.3 To ra h thng tp tin trn phn vng
H thng linux hot ng tt trn nh dng .ext2 , tuy nhin .ext3 h tr tt hn trong
vic lu cc file tp tin . to ra mt h thng tp tin ext3 trn phn vng LFS, chy
sau y:
mke2fs -jv /dev/hda1
Tip tc khi to phn vng Swap to bng lnh:
mkswap /dev/hda2
kim tra li, dng lnh blkid

Chng ra s thy hda1 c nh dng ext3 v hda2 c nh dng theo swap


2.4 Kt ni cc phn vng mi
By gi cc file h thng c to, phn vng cn truy cp c , v th cn phi kt
ni phn vng vi cc im c chn. Chng ta s tin hnh kt ni ti th mc /mnt/lfs
gn vi mi trng LFS :
export LFS=/mnt/lfs
To 1 th mc mi vi tn l mnt v gn kt vi h thng LFS :
mkdir -pv $LFS
mount -v -t ext3 /dev/hda1 $LFS
kch hot phn vng swapon g lnh:
/sbin/swapon -v /dev/hda2
kim tra xem cc th mc, file h thng c gn kt cha, dng lnh mount
xem

By gi chng ta c bn hon thnh to xong 1 khu vc xy dng . Chng ta c th


hiu n gin l tm xong 1 mnh t v hon tt vic nh hnh cc khu vc:
phng khch , phng ng s xy u. Vic cn lm tip theo l chng ta phi c cc
gi ci t trong qu trnh xy dng LFS , tng t nh cc vt liu nh gch, xi mng ,
st, thp tin hnh xy nh .
http://scribd.com/muafiu

ti : Xy Dng H iu Hnh LinuxFromScratch

3. Chun b cc gi ci t, mi trng ci t
3.1 Chun b
Chng ny s gii thiu cc gi v cc bn v li cn c ti v xy dng c 1 h
thng Linux c bn. Cc gi ti v v cc bn v li s c tm thy ti
http://www.linuxfromscratch.org/lfs/packages.html . Hoc cng c th tm thy t cc
cng c tm kim nh Google, Bing..
Cc gi ti v v cc bn v li s c lu tr chung ti 1 ni c to sn v thun tin
khi cn trong sut qu trnh xy dng. Th mc duy nht s m bo vic gii nn v
xy dng khng b li pht sinh.
$LFS/sources s l ni lu tr v hot ng ca cc gi ci t tar v cc bn v li.
Vic s dng th mc ny, cc yu t cn thit s nm trn phn vng LFS v c mt
trong tt c cc giai on ca qu trnh xy dng.
Vic u tin l phi to 1 th mc ,thc hin lnh sau di quyn root:
mkdir -v $LFS/{tools,sources}
Lm cho th mc va to c th ghi v nh sticky . ( Sticky c ngha l ngay c khi
nhiu ngi c quyn ghi trn th mc, ch c ngi s hu ca file mi c quyn xa
file c gn trong th mc sticky ). Lnh sau s kch hot ch ghi v nh sticky.
chmod -v a+wt $LFS/sources
-ng dn $LFS/tools
Tt c cc chng trnh bin dch trong phn 4 s c ci t di ng dn
$LFS/tools gi chng ring bit vi cc chng trnh bin dch phn cn li. Cc
chng trnh bin dch y l nhng cng c tm thi . Vic s dng ng dn ring
s gip loi b d dng cc chng trnh sau khi s dng.
Vic to th mc tools s c thc hin chung vi th mc sources trn.
Sau khi to xong th mc tools , chng ta phi to ra lin kt h thng d dng lm
vic bng lnh :
To 1 lin kt tools ti th mc cha cc gi ci t sn bng lnh :
ln sv $LFS/tools /
Cui cng, sao chp ton b d liu t th mc lfs-sources sang th mc va to trn.
cp v lfs-sources/* $LFS/sources

http://scribd.com/muafiu

10

ti : Xy Dng H iu Hnh LinuxFromScratch

3.2 Cc gi ci t
Ton b cc gi ci t v bn v s c trong th mc lfs/sources va to bc
trn. - kim tra xem th mc mi c cc gi ci t cha , dng lnh :
cd $LFS/sources
lit k cc gi ci t trong th mc dng lnh
ls

chng ta s thy danh sch ton b cc gi ci t cn thit cho qu trnh xy dng LFS .
ngha ca $LFS
Ton b cc bin mi trng s c s dng nhiu ln . Chnh v vy cc bin ny phi
c thit lp gn vi phn vng LFS . chc chn LFS gn vi phn vng
/mnt/lfs , g lnh:
echo $LFS
Nu ng, s bo ra a ch ca ng dn $LFS: /mnt/lfs

http://scribd.com/muafiu

11

ti : Xy Dng H iu Hnh LinuxFromScratch


3.3 Thm ti khon LFS
S khng an ton nu xy dng bng ti khon root, ch cn 1 li nh cng c th nh
hng n ton h thng, v vy phi to thm 1 ti khon ring bit d dng thit lp
1 mi trng lm vic mi 1 cch c lp .Chng ta c th set quyn root cho thnh vin
ny.
Lnh thm ngi dng mi: ( thm user: lfs thuc group: lfs )
group add lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs
Sau khi to xong user lfs , cp mt khu cho user lfs
passwd lfs

i quyn s dng cc th mc $LFS/sources v $LFS/tools bng lnh:


chown -v lfs $LFS/tools
chown -v lfs $LFS/sources
Tip theo, ng nhp di user lfs vi lnh:
su lfs

http://scribd.com/muafiu

12

ti : Xy Dng H iu Hnh LinuxFromScratch


3.4 Thit Lp Mi Trng
Thit lp mi trng lm vic bng cch to ra hai tp tin khi ng mi cho bash shell.
Lc ny, chng ta ang ng nhp vi user lfs, g lnh to ra 1 bash_profile mi:
cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF

Khi ng nhp vi user lfs , lp v (shell) ban u ch l qu trnh ng nhp v c


/etc/profile ca my ch. Lnh trn s gip cho mi trng chy mi hon ton trng
rng, m bo an ton trong qu trnh xy dng.
mi trng xy dng hon ton sch. Ta phi to ra cc tp tin .bashrc :
cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL PATH
EOF

Lnh h+ tt chc nng hash ca bash.


Thit lp umask m bo cc tp tin mi c to ra v th mc ch c th ghi bi chnh
ch s hu nhng c th c v thc thi bi bt c ai . ( Cc tp tin mi s kt thc vi
ch cho php 644 v th mc ch 755 ).
Bin LC_ALL kim sot qu trnh hot ng bn trong ca cc chng trnh . Thit lp
vi ni dung POSIX m bo mi th s lm vic trong mi trng chroot
Cui cng, c 1 mi trng chun b y cho vic xy dng cc cng c tm thi,
to ra ngun thng tin user vi lnh:
source ~/.bash_profile
Lc ny chng ta chuyn sang quyn user lfs vi profile ring .

http://scribd.com/muafiu

13

ti : Xy Dng H iu Hnh LinuxFromScratch

4. Xy Dng H Thng Tm Thi


4.1 Gii thiu
Phn ny s hng dn cch bin dch v ci t 1 h thng Linux ti thiu. H thng ny
s ch cha cc cng c bt u xy dng h thng LFS . Ti y, chng ta s lm vic
trn mi trng ca user s gip cho vic xy dng thun tin hn .
S c 2 bc xy dng 1 h thng ti thiu ny .
-Bc u tin l xy dng 1 my ch mi hon ton v c cc cng c c lp ( bin
dch, lp rp , cc th vin, lin kt v tin ch ).
-Bc th 2 : s dng cc cng c c lp ny xy dng cc cng c cn thit khc .
Cc tp tin c bin dch trong phn ny s c ci t ti ng dn $LFS/tools
gi chng tch bit vi cc tp tin s ci t nhng bc tip theo v cc ng dn
ca host.
Cc gi c bin dch ti y u l tm thi, v th khng c cc gi ny nh
hng ti h thng LFS sau ny.
Lu : i vi ton b tt c cc gi ci t u c nn li , chnh v th phi gii
nn trc khi mun bin dch.
Cc th mc s c to khi thc hin gii nn 1 gi ci t, sau c xy dng bng
cc cu lnh bash shell.
Sau khi ci t xong tng gi, phi xa m ngun v th mc ca gi va s dng.
Cui cng, lm cc bc tip theo , chng ta kim tra xem bin mi trng LFS
c thit lp ng ch cha :
echo $LFS

ng dn n gn kt cc phn vng LFS l: /mnt/lfs


Truy cp vo th mc cha cc gi ci t chun b tin hnh, ton b qu trnh gii
nn ca cc gi s c bt u t y .
cd $LFS/sources
http://scribd.com/muafiu

14

ti : Xy Dng H iu Hnh LinuxFromScratch


4.2 Gii nn , bin dch cc gi cn thit
4.2.1 Cch xy dng
Vic ci t v bin dch l cc gi l cn thit cho h thng LFS sau ny , cc gi ny s
ng vai tr trung gian, cung cp cc cng c cn thit to nn h thng LFS .
Cc bc ci t s c thc hin theo tng bc hng dn trong ti liu ti v . Bt
u t chng 5.3 trang 34 ca ti liu LFS 6.2 . Chng ta ch cn lm theo cn thn tng
bc v nh nhng bc cn thit sau y :
- Gii nn cc gi ti a ch ngun ( $LFS/sources )
-Vic bin dch tng gi sau khi gii nn s c thc hin ti th mc c to sau khi
gii nn ca gi ci t ( s dng lnh cd vo th mc tng gi gii nn )
- Sau khi bin dch thnh cng , phi g b th mc ci t v cc m ngun lin quan
ca gi va c bin dch .
-Sau khi m bo g b , tip tc gii nn v bin dch cc gi tip theo.

M hnh sau c th gii thch n gin cho vic xy dng cc gi tm thi :

http://scribd.com/muafiu

15

ti : Xy Dng H iu Hnh LinuxFromScratch


Lu : xem chnh xc danh sch tn cc gi ci t , chng ta dng lnh ls xem .
Chng ta tin hnh vi gi u tin l gi Binutils-2.16.1
Gi binutils bao gm 1 lin kt, cc mi lp rp v cc cng c x l i tng ca
cc tp tin.
Binutils l gi u tin c bin dch bi v c Glibc v GCC thc hin cc vic kim
tra khc nhau trn cc mi lin kt c sn v lp rp chng xc nh tng tnh nng
ring cho php ph thuc vo tng i tng.
Vic u tin l chng ta gii nn gi Binutils-2.16.1
tar xvf binutils-2.16.1.tar.bz2

Sau khi gii nn xong, vo th mc va gii nn ca gi tin hnh bin dch

Lc ny chng ta tin hnh bin dch gi bng cc lnh shell nh trong ti liu
mkdir -v ../binutils-build
cd ../binutils-build
../binutils-2.16.1/configure --prefix=/tools --disable-nls
make && make install
make -C ld clean
make -C ld LIB_PATH=/tools/lib
cp -v ld/ld-new /tools/bin
Sau khi tin hnh bin dch xong, tr v th mc gc , tin hnh g b th mc cng m
ngun lin quan ca gi va bin dch .
cd ..
rm rfv binutils-2.16.1 binutils-build

i vi cc gi cn li u tin hnh tng t . ( Tham kho theo Ti liu t chng 5.3


trang 33 n trang 72 sch xy dng LFS 6.2 )

http://scribd.com/muafiu

16

ti : Xy Dng H iu Hnh LinuxFromScratch


4.2.2 Danh sch cc gi cn ci t v bin dch :
Binutils-2.16.1 ( ci trn )
GCC-4.0.3 ln 1
Gi GCC cha cc b su tp trnh bin dch GNU, trong bao gm C v C + + trnh
bin dch
Linux-Libc-Headers-2.6.12.0
Cc gi Linux-Libc-Headers bao gm cc tiu ca ht nhn
Glibc-2.3.6
Gi Glibc cha cc th vin C chnh. Th vin ny cung cp 1 trnh t c bn cp pht
b nh, tm kim th mc, m v ng cc tp tin , c v vit cc tp tin, x l chui,
kt hp m hnh, s hc ..vv..
Ty chnh ToolChain ( Chng 5.7 trong ti liu )
Tcl-8.4.13
Gi Tcl bao gm cc cng c lnh v ngn ng
Expect-5.43.0
Gi Expect bao gm 1 chng trnh thc hin trung gian di chuyn cu lnh vi cc
chng trnh tng tc khc
DejaGNU-1.4.4
Gi DejaGNU bao gm 1 th vin th nghim cc chng trnh khc
GCC-4.0.3 ln 2 ( ci t li )
Gi GCC bao gm b su tp trnh bin dch GNU, trong c C v C++
Binutils-2.16.1 ln 2
Gii nn v bin dch li 1 ln na .
Ncurses-5.5
Gi Ncurses cha cc th vin x l thit b u cui c lp ca mn hnh ngi
dng
Bash-3.1
Gi Bash cha cc lnh Bourne-Again
Bzip2-1.0.3
Cc gi phn mm bzip2 cha cc chng trnh nn v gii nn file. Bzip2 thng nn
tt hn nhiu so vi kiu nn gzip
Coreutils-5.96
Gi coreutils cha cc tin ch hin th v thit lp cc c tnh ca h thng c bn
http://scribd.com/muafiu

17

ti : Xy Dng H iu Hnh LinuxFromScratch


Diffutils-2.8.1
Gi diffutils cha cc chng trnh cho thy s khc bit gia cc tp tin hoc th mc
Findutils-4.2.27
Gi findutils cha cc chng trnh tm cc tp tin. Cc chng trnh ny c cung
cp cho quy tm kim thng qua 1 cy th mc , to ra, duy tr, v tm kim 1 c s d
liu.
Gawk-3.1.5
Gi Gawk cha cc chng trnh cho vic thao tc cc tp tin vn bn
Gettext-0.14.5
Gi gettext cha cc tin ch ca cc vng quc t v a phng. iu ny cho php
chng trnh c bin dch vi NLS ( Native Language support - h tr ngn ng bn
a), cho php s dng ngn ng a phng ca ngi dng.
Grep-2.5.1a
Gi Grep cha cc chng trnh tm kim thng tin qua cc tp tin
Gzip-1.3.5
Gi Gzip cha chng trnh nn v gii nn tp tin
M4-1.4.4
Gi M4 cha 1 b x l ln
Make-3.80
Gi Make cha 1 chng trnh bin dch cc gi
Patch-2.5.4
Gi Patch cha 1 chng trnh cho php sa, to ra cc tp tin bng cch p dng 1
"patch" ca 1 tp tin thng c to ra bi cc chng trnh khc
Perl-5.8.8
Gi Perl cha cc thng tin v Khai bo thc hnh v bo co ngn ng
Sed-4.1.5
Gi Sed cha 1 trnh son tho
Tar-1.15.1
Gi Tar c cha 1 chng trnh lu tr
Texinfo-4.8
Gi Textinfo cha cc chng trnh c, vit, v chuyn i cc trang thng tin

http://scribd.com/muafiu

18

ti : Xy Dng H iu Hnh LinuxFromScratch


Util-linux-2.12r
Gi util-linux cha h thng miscellance, bn giao tip, phn vng, v tin nhn
Stripping ( Tip tc ca gi Util-linux2.12r)
Bc ny l bc tip theo ca bc trn .Sau khi thc hin xong, tin hnh g b gi
va bin dch

i quyn s hu
Tm thi, lin kt $LFS/tools c s hu bi user lfs - user duy nht ang tn ti trn
my ch. Nu lin kt $LFS/tools c gi nh l cc tp tin c s hu bi 1 ID ngi
dng no m ko c ti khon tng ng, iu ny s rt nguy him, bi v 1 ti khon
ngi dng c to ra sau c th nhn c cng 1 ID ngi s dng ny v s s hu
$LFS/tools , vic ny c th dn n h thng khng an ton .
trnh vn ny xy ra, ta thm ngi dng lfs vo h thng mi LFS sau khi to ra
tp tin /etc/passwd . Gn cho n cng 1 ngi dng v nhm nh trn cc h thng .
u tin chng ta thot khi user lfs vi lnh : exit
chuyn quyn ngi dng root, chy lnh sau y :
chown -R root:root $LFS/tools

Vic bin dch cc gi tm xong, tip theo l n bc xy dng h thng LFS.

http://scribd.com/muafiu

19

ti : Xy Dng H iu Hnh LinuxFromScratch

III> Xy Dng H Thng LFS


5. Ci t Phn Mm Cn Bn Ca H Thng
5.1 Gii Thiu
Trong phn ny, cng vic xy dng LFS s tr nn phc tp hn . C ngha l chng ta
s dng quyn root truy cp vo h thng linux nh tm thi, thc hin cc bc chun b
cui cng v sau ci t cc gi .
Vic ci t cc phn mm ny khng phc tp tuy nhin trong cc bc phi cn thn v
tun th theo tng bc ca ti liu tham kho . Th t ci t cc gi cng phi c
thc hin 1 cch chnh xc m bo h thng LFS s hot ng . Ti phn ny, cng
vic thc hin s tng t vi chng 6 trang 74 ca ti liu hng dn . Cc thao tc
tng bc theo nh trong ti liu s c lt qua 1 cch ngn gn v d hiu nht .

5.2 Chun b h thng tp tin ht nhn o ca h thng


H thng tp tin khc nhau c xut ra t ht nhn c s dng giao tip n v i
trong ht nhn. Nhng tp tin h thng ny l h thng o khng chim b nh a m
chim trong b nh Ram .
Bt u bng vic to th mc tp tin h thng c nh x vo:
mkdir -pv $LFS/{dev,proc,sys}
5.2.1 To ra cc nt kt ni thit b ban u.
Khi khi ng ht nhn ca h thng, n s yu cu c h tr vi thit b, c bit l giao
din iu khin v cc thit b khc ( bn phm, mn hnh...) . Cc nt thit b s c to
ra trn a cng lun sn sng trc khi trnh iu khin udev c bt u, khi
Linux bt u vi init=/bin/bash . to ra cc nt thit b vi lnh sau :
mknod -m 600 $LFS/dev/console c 5 1
mknod -m 666 $LFS/dev/null c 1 3

http://scribd.com/muafiu

20

ti : Xy Dng H iu Hnh LinuxFromScratch

5.2.2. nh x v Tp Trung /dev


Vic tp trung th mc /dev vi cc thit b l gn kt 1 h thng tp tin o v th mc
thc /dev .Vic ny cho php cc thit b c t ng to ra trn h thng tp tin o mi
khi c pht hin v truy cp.
H thng mi ny cha c dev v cha th khi ng, v th phi kt ni v tp trung
/dev 1 cch th cng.
Rng buc gn kt cho php bn to ra nh o ca 1 th mc hoc im gn cho 1 s v
tr . lm iu ny, s dng lnh :
mount --bind /dev $LFS/dev
5.2.3 Lp t h thng tp tin ht nhn o
By gi gn kt cc h thng tp tin ht nhn o cn li :
mount -vt devpts devpts $LFS/dev/pts
mount -vt tmpfs shm $LFS/dev/shm
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys

http://scribd.com/muafiu

21

ti : Xy Dng H iu Hnh LinuxFromScratch

5.3 Chuyn sang mi trng chroot lm vic


n bc ny , mi trng chroot sn sng bt u cho vic xy dng v ci t h
thng LFS. S dng ti khon root v chy lnh sau:
chroot "$LFS" /tools/bin/env -i \
HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
/tools/bin/bash --login +h
T thi im ny , cc bin LFS s ko cn thit na, cc cng vic s c thc hin
trong h thng tp tin LFS. Bi v by gi cu lnh bash shell c ch nh $LFS s l
th mc gc .
Th mc /tools/bin s l ng dn cui cng . Cc cng c tm thi s khng c s
dng na .
Ti y , du nhc cu lnh bash shell s khng c tn v cc file /etc/passwd hin khng
c khi to .

http://scribd.com/muafiu

22

ti : Xy Dng H iu Hnh LinuxFromScratch


5.4 To Cc Th Mc
Lc ny, cn phi to ra cc cu trc ca h thng tp tin LFS . To ra 1 cy th mc tiu
chun vi cc lnh sau:
mkdir -pv /{bin,boot,etc/opt,home,lib,mnt,opt}
mkdir -pv /{media/{floppy,cdrom},sbin,srv,var}
install -dv -m 0750 /root
install -dv -m 1777 /tmp /var/tmp
mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src}
mkdir -pv /usr/{,local/}share/{doc,info,locale,man}
mkdir -v /usr/{,local/}share/{misc,terminfo,zoneinfo}
mkdir -pv /usr/{,local/}share/man/man{1..8}
for dir in /usr /usr/local; do
ln -sv share/{man,doc,info} $dir
done
mkdir -v /var/{lock,log,mail,run,spool}
mkdir -pv /var/{opt,cache,lib/{misc,locate},local}

Cc th mc ny theo mc nh c theo ch 755

(hnh minh ha)

http://scribd.com/muafiu

23

ti : Xy Dng H iu Hnh LinuxFromScratch


5.5 To ra cc tp tin cn thit v lin kt mm
1 s chng trnh s dng ng dn c nh khng tn ti, v th phi to ra 1 s lin
kt tng trng c thay th bng cc tp tin thc t trong qu trnh ci t cc phn
mm.
ln -sv /tools/bin/{bash,cat,grep,pwd,stty} /bin
ln -sv /tools/bin/perl /usr/bin
ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
ln -sv bash /bin/sh

Mt h thng Linux thch hp vi vic duy tr 1 danh sch cc tp tin h thng c gn


trong tp tin /etc/mtab .
Thng thng tp tin ny s c to ra khi ta gn kt 1 tp tin h thng mi. Vic gn
kt 1 h thng mi vo mi trng chroot l khng th, v th chng ta to ra 1 tp tin
rng tin ch hin th trong /etc/mtab
touch /etc/mtab
ngi dng root c th ng nhp vi tn root, phi to ra s lin quan vi tp tin
/etc/passwd v /etc/group . To ra tp tin /etc/passwd bng lnh sau:
cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
EOF
Mt khu cho root s c thit lp sau .

http://scribd.com/muafiu

24

ti : Xy Dng H iu Hnh LinuxFromScratch

Tip tc to ra tp tin /etc/group bng lnh:


cat > /etc/group << "EOF"
root:x:0:
bin:x:1:
sys:x:2:
kmem:x:3:
tty:x:4:
tape:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
EOF

http://scribd.com/muafiu

25

ti : Xy Dng H iu Hnh LinuxFromScratch

loi b vic ng nhp di " I have no name!" v bt u bng 1 shell mi . phn


4, chng ta to ra 1 Glibc y vi tp tin /etc/passwd v /etc/group , vic cn lm
by gi l s dng cc tp tin ny.
exec /tools/bin/bash --login +h
Lc ny tn ti khon ng nhp s thnh root .
Khi to cc tp tin ng nhp v cung cp quyn thch hp bng cc cu lnh :
touch /var/run/utmp /var/log/{btmp,lastlog,wtmp}
chgrp -v utmp /var/run/utmp /var/log/lastlog
chmod -v 664 /var/run/utmp /var/log/lastlog

Tp tin /var/run/utmp s lu li thng tin ti khon ng nhp.


Tp tin /var/log ghi li thng tin ng nhp v thot ra h thng.
Tp tin /varlog/lastlog ghi li ln ng nhp cui cng ca ti khon gn nht .
Tp tin /var/log/btmp ghi li nhng ln ng nhp li.

http://scribd.com/muafiu

26

ti : Xy Dng H iu Hnh LinuxFromScratch


5.6 Ci t Cc Gi Phn Mm Ln Cui
Ti phn ny , cc gi phn mm s c gii nn v bin dch li ln cui cng, mi
thao tc v cch gii nn , bin dch v g b ngun tng t nh phn 4. Tuy nhin s
khc bit l mi trng bin dch .
Chng ta tin hnh vo th mc sources cha cc gi tin hnh gii nn v bin dch.
cd ..
cd sources
Gi u tin chng ta s l gii nn gi : Linux-libc-headers-2.16.12.0

Sau khi gii nn xong, chng ta vo th mc gii nn v tin hnh bin dch.
Thm tiu khng gian ca ngi dng v h tr tnh nng syscall trong cc ht nhn
Linux mi hn:
patch -Np1 -i ../linux-libc-headers-2.6.12.0-inotify-3.patch

http://scribd.com/muafiu

27

ti : Xy Dng H iu Hnh LinuxFromScratch

Ci t tp tin phn u
install -dv /usr/include/asm
cp -Rv include/asm-i386/* /usr/include/asm
cp -Rv include/linux /usr/include

t quyn root cho cc tp tin ny :


chown -Rv root:root /usr/include/{asm,linux}

Phn quyn cho cc user c th c c cc tp tin ny :


find /usr/include/{asm,linux} -type d -exec chmod -v 755 {} \;
find /usr/include/{asm,linux} -type f -exec chmod -v 644 {} \;

Sau khi bin dch xong, tr v th mc gc v tin hnh g b th mc va bin dch.

i vi cc gi cn li, tin hnh tng t theo ti liu hng dn ( Bt u t chng


6.7 trang 83 n trang 195 sch LFS )
Cc lnh shell bin dch ti phn ny s khc vi phn 4 lm, v vy phi tht cn thn
khi g tng lnh shell.

http://scribd.com/muafiu

28

ti : Xy Dng H iu Hnh LinuxFromScratch


Danh sch cc gi s ci t v bin dch :
i vi cc gi bin dch phn 4 s khng c nhc li , nhng gi mi s c
m t khi qut v chc nng .
Linux-Libc-Headers-2.6.12.0 ( ci t trn - Chng 6.7 trang 83- sch ti
liu LFS )
Man-pages-2.34
Glibc-2.3.6
Re-adjusting the Toolchain
Binutils-2.16.1
GCC-4.0.3
Berkeley DB-4.4.20
Gi BD Berkeley c cha cc chng trnh v cc tin ch c s dng bi cc ng
dng lin quan ti chc nng c s d liu.
Coreutils-5.96
Iana-Etc-2.10
Gi Iana-Etc cung cp d liu cho cc dch v v giao thc mng.
M4-1.4.4
Bison-2.2
Gi Bison cha 1 chng trnh phn tch dng lnh.
Ncurses-5.5
Procps-3.2.6
Gi Procps cha cc chng trnh gim st tin trnh.
Sed-4.1.5
Libtool-1.5.22
Gi Libtool cha cc th vin h tr GNU.
Perl-5.8.8
Readline-5.1
Gi Readline l 1 tp hp cc th vin cung cp chnh sa dng lnh v kim sot lch s
dng lnh.
Zlib-1.2.3
Gi Zlib bao gm cc gi nh tuyn nn v gii nn dng bi 1 s chng trnh.
Autoconf-2.59
Gi Autoconf cha cc chng trnh sn xut cc lnh shell t ng cu hnh m ngun.

http://scribd.com/muafiu

29

ti : Xy Dng H iu Hnh LinuxFromScratch


Automake-1.9.6
Gi Automake cha chng trnh to ra Makefiles s dng vi autoconf.

Bash-3.1
Bzip2-1.0.3
Diffutils-2.8.1
E2fsprogs-1.39

Gi E2fsprogs cha cc tin ch x l th thng tp tin ext2. ng thi cng h tr ghi


nht k h thng tp tin ext3.
File-4.17
Gi File bao gm cc tin ch xc nh loi tp tin nht nh.
Findutils-4.2.27
Flex-2.5.33
Cc gi phn mm Flex cha 1 tin ch to ra cch chng trnh nhn dng mu vn
bn.
GRUB-0.97
Gi GRUB Cha h thng Bootloader.

Gawk-3.1.5
Gettext-0.14.5
Grep-2.5.1a
Groff-1.18.1.1

Gi Groff bao gm cc chng trnh x l nh dng vn bn.


Gzip-1.3.5
Inetutils-1.4.2
Gi Inetutils cha cc chng trnh mng c bn.
IPRoute2-2.6.16-060323
Gi IProute2 bao gm cc chng trnh cho mng IPv4 cn bn v nng cao.
Kbd-1.12
Gi Kbd cha cc tp tin v phm tt v tin ch bn phm.
Less-394
Gi Less cha phn mm c vn bn.
Make-3.80
Man-DB-2.4.3
Gi Man-DB bao gm cc chng trnh cho vic tm kim v xem man pages.

http://scribd.com/muafiu

30

ti : Xy Dng H iu Hnh LinuxFromScratch


Mktemp-1.5
Gi Mktemp bao gm cc chng trnh dng to ra cc tp tin tm thi an ton trong
mi trng shell.
Module-Init-Tools-3.2.2
Gi Module-Init-Tools cha cc chng trnh x l cc modules ht nhn trong ht nhn
Linux t phin bn 2.5.47 tr i .
Patch-2.5.4
Psmisc-22.2
Gi Psmisc cha chng trnh hin th thng tin v cc tin trnh ang chy.
Shadow-4.0.15
Gi Shadow cha cc chng trnh x l mt khu 1 cch an ton.
Sysklogd-1.4.1
Gi Sysklogd cha cc chng trnh tin nhn ng nhp h thng ( c a ra t ht
nhn) khi c s c xy ra .
Sysvinit-2.86
Gi Sysvinit cha cc chng trnh kim sot khi ng, chy v tt my ca h thng.
Tar-1.15.1
Texinfo-4.8
Udev-096
Gi Udev cha cc chng trnh t ng to cc nt kt ni thit b.
Util-linux-2.12r
Vim-7.0
Gi Vim cha 1 trnh son tho vn bn.
Sau khi ci t xong gi Vim, thot ra ngoi th mc gc v tin hnh g b th mc m
ngun c lin quan.

http://scribd.com/muafiu

31

ti : Xy Dng H iu Hnh LinuxFromScratch


5.7 Lm sch h thng ln cui
n y , cng vic xy dng LFS c 2/3 qung ng , c th hnh dung ngi nh
c xy dng xong phn th , cng vic tip s l dn dp, v sinh sch s cc th
khng cn thit na . ( y s l cc li pht sinh trong qu trnh bin dch c cho
php )
Lu : Sao lu li h thng trc khi lm thao tc ny
G li cc biu tng
Hu ht cc chng trnh v th vin theo nh mc nh, khi bin dch bao gm nhng
li c sn .
Vic cc li pht sinh s lm cho chng trnh hoc th vin b tng kch thc .
Kch thc c th thay i ty vo trnh bin dch v th vin C s dng. tit kim
khng gian a v cho h thng gn gng hn , chng ta c th g b cc li ny .
Kch thc h thng c th gim c khong 90Mb dung lng bng cch loi b cc k
hiu g li t m nh phn v th vin.
u tin thot ra khi mi trng chroot:
Logout
Kim tra li ng dn $LFS 1 ln na xem a ch c ng l : /mnt/lfs bng lnh:
echo $LFS
Tip tc vo li mi trng chroot bng cch lnh sau :
chroot $LFS /tools/bin/env -i \
HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin \
/tools/bin/bash login

By gi , chng ta c th g b cc chng trnh v th vin tha 1 cch an ton bng


dng lnh :
/tools/bin/find /{,usr/}{bin,lib,sbin} -type f \
-exec /tools/bin/strip --strip-debug '{}' ';'

http://scribd.com/muafiu

32

ti : Xy Dng H iu Hnh LinuxFromScratch

Mt s lng ln cc tp tin s c bo co sai nh dng khi chy. Thng bo ny l


chuyn bnh thng nn khng c g phi lo lng .

Lm sch h thng
Thot ra mi trng chroot 1 ln na :
logout
ng nhp li vo mi trng chroot bng lnh mi di y :
chroot "$LFS" /usr/bin/env -i \
HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin \
/bin/bash login

Gii thch cho vic ny l v cc chng trnh trong th mc /tools khng cn thit na.
K t by gi, chng ta c th xa th mc /tools nu mun .
Lu : Cc tp tin tm ca cc gi Tcl, Exprt v DejaGNU s vn c s dng kim
tra cc chng trnh nhng ln bin dch khc, v th nu xa b th mc /tools , sau
ny nu cn s dng li cc gi , chng ta phi bin dch v ci t li .

http://scribd.com/muafiu

33

ti : Xy Dng H iu Hnh LinuxFromScratch

6. Thit lp h thng Bootscripts


6.1 Gii thiu.
Ti phn ny, chng ta s ci t v cu hnh cc gi LFS-Bootscripts.
Gi LFS-Bootscripts cha 1 b cng c bt u hoc dng h thng LFS ti lc khi
ng hoc tt my.
Vo th mc gc bng lnh cd tin hnh ci t gi

Sau khi gii nn gi , vo th mc ca gi va gii nn v tin hnh bin dch vi lnh:


make install

http://scribd.com/muafiu

34

ti : Xy Dng H iu Hnh LinuxFromScratch


Cch lm vic ca Bootscripts
Linux s dng 1 thit b khi ng c bit c tn SysVinit da trn khi nim chy theo
tng cp . N c th khc nhau theo mi h thng.
SysVinit (init) lm vic da trn 1 chng trnh chy theo cp .
C by ( 0 ~ 6 ) cp chy v mi mt cp tng ng vi hot ng ca my tnh .
Mc nh chy l cp 3. Di y l nhng m t cc cp khc nhau chy trn my
tnh:

Cp
0
1
2
3
4
5
6

Ngha
Ngn chn my tnh
Ch n ngi dng
Ch a ngi dng khng c mng
Ch a ngi dng c mng
Ch ty bin, gn ging cp 3
Tng t cp 4, s dng giao din ng nhp
Khi ng li my tnh

Dng cc lnh c th thay i cc cp chy cho my tnh .


Cc lnh c lu ti /etc/rc.d/init.d

http://scribd.com/muafiu

35

ti : Xy Dng H iu Hnh LinuxFromScratch


6.2 Cu hnh Script setclock
Script setclock c thng tin thi gian t ng h phn cng, cn c gi l Bios hoc
ng h CMOS (Complementary Metal Oxide Semiconductor) .
ng h phn cng s dng thi gian a phng ti tp tin /etc/loclatime ( mi gi
ngi s dng ) .
Vic cu hnh ny phi set bng th cng, v phn cng khng th t nhn bit c thi
gian chnh xc.
xem thi gian hin ti ca h thng, dng lnh:
--localtime --show
To ra 1 tp tin mi /etc/sysconfig/clock bng cch chy dng lnh:

http://scribd.com/muafiu

36

ti : Xy Dng H iu Hnh LinuxFromScratch


6.3 To tp tin /etc/inputrc
Cc tp tin inputrc x l nhp bn phm cho cc tnh hung c th. Tp tin ny c khi
ng v s dng bi th vin Readline- th vin lin quan u vo- c dng bi Bash
v hu ht cc shells khc.
To ra tp tin bng cch s dng lnh sau y:

http://scribd.com/muafiu

37

ti : Xy Dng H iu Hnh LinuxFromScratch


6.4 Khi ng tp tin Bash Shell
Cc chng trnh shell /bin/bash ( gi l " the shell") dng 1 b su tp cc tp tin khi
ng to ra 1 mi trng chy trong . Mi tp tin u c 1 cch dng ring v c
th nh hng khc nhau n mi trng ng nhp v tng tc.
Cc tp tin trong th mc /etc cung cp cc thit lp v global . Nu 1 tp tin tn ti trong
th mc gc, n c th ghi ln cc thit lp global.
Mt shel ng nhp tng tc c bt u sau khi ng nhp thnh cng, s dng
/bin/login v c tp tin /etc/passwd.
Cc tp tin .etc.profile v ~/.Bash_profile c c khi c tng tc ng nhp shell.
Tp tin .etc.profile t ra 1 s bin mi trng cn thit h tr ngn ng bn a.
Danh sc cc vng min c h tr bi Glibc c lit k bng cch chy dng lnh
sau:
locale -a
Sau khi chn chun 1 vng min a phng - vic ny cng nh hng ti font ch sau
ny , chy lnh thit lp vng min :
LC_ALL=<locale name> locale charmap
Trong <locale name> l vng tng ng .
Trong y , chng ta chn vng en_US , sau khi chy xong s hin thng bo l:
ISO-8859-1

Tip tc thit lp cc min a phng bng cch s dng kim tra trc khi thm vo
tp tin khi ng Bash vi cc lnh :
LC_ALL=en_US locale language
LC_ALL=en_US locale charmap
LC_ALL=en_US locale int_curr_symbol
LC_ALL=en_US locale int_prefix

http://scribd.com/muafiu

38

ti : Xy Dng H iu Hnh LinuxFromScratch


y, locale name s c set l en_US , cc locale name ny phi trng nhau h
thng c th ng b.

Tip tc thit lp li xc thc xem dng ng chun k t cha

y vng en_US dng chun ISO-8859-1


Sau khi thit lp min a phng thch hp c xc nh, to tp tin /etc/profile:

Trong gi tr ti Lang=<ll>_<CC>.<charmap> s c set l :


Lang=en_US.ISO-8859-1

Ti y , tp tin /etc/profile c cu hnh v to xong.

http://scribd.com/muafiu

39

ti : Xy Dng H iu Hnh LinuxFromScratch


6.5 Cu hnh Script localnet
Cng vic ti y l phi thit lp h thng tn my cho Script localnet.
Vic ny s c cu hnh trong tp tin /etc/sysconfig/network
To 1 tp tin /etc/sysconfig/network v nhp tn my(hostname) bng cch chy lnh:
echo "HOSTNAME=<lfs>" /etc/sysconfig/network

6.6 Cu hnh tp tin /etc/hosts


Nu my c sn card mng, chng ta phi cu hnh a ch IP, tn min y v cc b
danh aliases c th dng trong tp tin /etc/hosts
cat > /etc/hosts << "EOF"
# Begin /etc/hosts (network card version)
127.0.0.1 localhost
<192.168.1.1> <HOSTNAME.example.org> [alias1] [alias2 ...]
# End /etc/hosts (phin bn c card mng)
EOF
The <192.168.1.1> and <HOSTNAME.example.org> l gi tr cn phi thay i cho
ngi dng c th ( gn a ch IP ca 1 mng/ qun tr my tnh kt ni )
Do card mng cha sn sng c cu hnh, v th chng ta s to ra file /etc/hosts bng
cch chy lnh:
cat > /etc/hosts << "EOF"
# Begin /etc/hosts
127.0.0.1 localhost
# End /etc/hosts
EOF

http://scribd.com/muafiu

40

ti : Xy Dng H iu Hnh LinuxFromScratch

6.7 Cc lin kt thit b


6.7.1 Lin kt CD-ROM
ci t 1 s phn mm sau ny, bt buc phi c cc tp tin lin kt /dev/cdrom v
/dev/dvd . Ngoi ra cng d dng lin kt n /etc/fstab
To ra 1 tp tin bng lnh nh sau :
cat >/etc/udev/rules.d/82-cdrom.rules << EOF
#no
EOF

6.7.2 Cc thit b trng lp


Nhiu khi cc thit b ngoi vi s trng lp sau mi ln khi ng li .
C th khc phc bng cch to ra qui tc udev lin kt cc ty chn.
Chy lnh sau:
cat >/etc/udev/rules.d/83-duplicate_devs.rules << EOF
#no
EOF
i vi cc gi tr, chng ta s set thnh #no v cc thnh phn ny l ty chn v ti u
dung lng h thng.
6.7.3 To tn c nh cho giao din mng
Vic to tn ph thuc vo s lng card mng ca my ch.
i vi cc my c nhiu card mng, vic trng tn l iu d gp.
VD: 1 my tnh c 2 card mng : intel v realtek , 2 card mng ny c th tr thnh eth01
v eth02 v c th b o ngc li th t nu h thng khi ng li .
trnh iu ny th ta to ra cc qui tc udev ch nh tn c nh cho card mng da
trn a ch MAC .
Tm card mng thng qua a ch MAC bng cu lnh:
grep -H . /sys/class/net/*/address
V my ch ang c duy nht 1 card mng, nn gi tr ca qui tc dev s thnh: #none
chy cu lnh sau to ra qui tc udev:
http://scribd.com/muafiu

41

ti : Xy Dng H iu Hnh LinuxFromScratch


cat > /etc/udev/rules.d/26-network.rules << EOF
#none
EOF

6.7.4 To cc tp tin cu hnh Giao Din Mng


Cc giao din c a ln v h xung mng ph thuc vo cc cu lnh trong tp tin
v th mc phn cp /etc/sysconfig/network-devices .
Th mc ny s cha 1 th mc con cho mi giao din c cu hnh, v d nh
ifconfig.xyz, trong "zyx" l 1 tn giao din mng.
Trong th mc ny, tc tp tin nh ngha cc thuc tnh cho giao din ( IP , subnet
mask ..)
Lnh sau y s to ra 1 giao din mu IPv4 cho thit b eth0
cd /etc/sysconfig/network-devices &&
mkdir -v ifconfig.eth0 &&
cat > ifconfig.eth0/ipv4 << "EOF"
ONBOOT=yes
SERVICE=ipv4-static
IP=192.168.1.1
GATEWAY=192.168.1.2
PREFIX=24
BROADCAST=192.168.1.255
EOF
Thng bo giao din card mng eth0 c to .
Lc ny chng ta ang lm vic ti th mc /etc/sysconfig/network-devices

http://scribd.com/muafiu

42

ti : Xy Dng H iu Hnh LinuxFromScratch

6.7.5 To tp tin /etc/resolv.conf


Nu h thng c kt ni n Internet, cn phi c dch v phn gii tn min ( DNS)
To tp tin theo lnh sau :
cat > /etc/resolv.conf << "EOF"
# Begin /etc/resolv.conf
domain {<Your Domain Name>}
nameserver <IP address of your primary nameserver>
nameserver <IP address of your secondary nameserver>
# End /etc/resolv.conf
EOF
Thay th a ch <IP server > vi a ch ip ca DNS thch hp .
Hin ti h thng my khng kt ni internet nn cc thng s domain, nameserver s
c 1 tn bt k thnh mng ni b.
Ti y, thng s domain v nameserver s c t l linux

http://scribd.com/muafiu

43

ti : Xy Dng H iu Hnh LinuxFromScratch

7. Lm h thng LFS khi ng


7.1 Gii thiu
n y chng ta gn nh hon thin c 80% cng vic xy dng h thng LFS , c
th ni cn nh chng ta xy dng gn nh hon tt, tuy nhin chng ta phi gn cc
thit b in, nc ...
Ti phn ny, chng ta s to ra 1 tp tin fstab, xy dng 1 ht nhn h thng LFS mi,
sau ci t b no khi ng GRUB h thng LFS c th c ty chn bt u
khi ng.
7.2 To tp tin /etc/fstab
Tp tin /etc/fstab c dng bi 1 s chng trnh xc nh ni h thng tp tin c
gn kt theo mc nh, c th t v c kim tra trc khi gn kt.
to ra 1 h thng tp tin mi, lm 1 bng lnh shell sau y :

Thay gi tr ca h thng vo ta c nh trong hnh :

http://scribd.com/muafiu

44

ti : Xy Dng H iu Hnh LinuxFromScratch


7.3 Linux 2.6.16.27
y chnh l cc gi c cha ht nhn Linux
Thot ra ngoi th mc gc sources v gii nn gi linux-2.6.16.27.tar.bz2

Sau khi gii nn xong, vo th mc va gii nn tin hnh ci t


Ci t ht nhn
Xy dng ht nhn lin quan n cc bc cu hnh, bin son v ci t.Theo mc nh,
cc ht nhn Linux to ra chui sai byte khi phm cht c dng di ch UTF-8 .
sa cha vn ny, ci t bn v sau :
patch -Np1 -i ../linux-2.6.16.27-utf8_input-1.patch
Chun b cho bin son bng cch chy lnh sau :
make mrproper
Vo menu cu hnh ht nhn bng lnh:
make menuconfig

Nu chng ta bin dch thnh cng, mn hnh shell s hin ln menu ci t ca ht nhn
kernel di giao din ha nh sau :

http://scribd.com/muafiu

45

ti : Xy Dng H iu Hnh LinuxFromScratch


Chng ta c th xem s qua v cc thnh phn ca ht nhn , sau exit tip tc.
Bin dch ht nhn v modules :
make
Ci t cc modules v cu hnh s dng modules
make modules_install
n y chng ta i vic bin dch v ci t trong 1 khong thi gian .
Sau khi bin dch ht nhn hon tt, cc bc b sung cn thit hon thnh vic ci
t.
Mt s tp tin cn c sao chp vo th mc /boot
ng dn n tp tin ht nhn c th ph thuc vo nn tng s dng . Hin my ch
ang s dng kin trc 32bit x86:
cp -v arch/i386/boot/bzImage /boot/lfskernel-2.6.16.27
System.map l 1 tp tin biu tng cho cc ht nhn. N c nhim v ch ng tham gia
ca cc chc nng trong ht nhn API, cng nh a ch cc cu trc d liu ht nhn
ang chy .
ci t tp tin bn , chy lnh sau:
cp -v System.map /boot/System.map-2.6.16.27
Cc tp tin cu hnh ht nhn c thc hin bc menuconfig trn cha tt c cc
la chn cu hnh cho ht nhn c bin dch.
cp -v .config /boot/config-2.6.16.27
Ci t cc ti liu cho ht nhn linux:
install -d /usr/share/doc/linux-2.6.16.27 &&
cp -r Documentation/* /usr/share/doc/linux-2.6.16.27

http://scribd.com/muafiu

46

ti : Xy Dng H iu Hnh LinuxFromScratch


7.4 Lm h thng LFS khi ng
H thng LFS gn nh c xy dng xong, iu cn lm l m bo h thng c th t
khi ng ng cch.
nhng phn trc , chng ta bin son v ci t cc phn mm khi ng GRUB
loader chun b cho bc ny .
GRUB s dng cu trc t tn ring cho cc a v phn vng trong dng (hdn,m)
trong n l s lng cng v m l s phn vng, c 2 s bt u t s 0 .
khng chc s lng , chng ta c th s dng cc con s kim tra chnh xc cu
trc .
G lnh vo GRUB:
grub
Ti y chng ta c hd(0,0)
Gn cho GRUB ci t GRUB vo MBR ca hda
setup (hd0)
Nu mi vic tt p, GRUB s bo co vic tm kim cc file ca n trong /boot/grub.
Thot khi grub shell :
quit

To menu khi ng "danh sch menu" tp tin khi ng GRUB

http://scribd.com/muafiu

47

ti : Xy Dng H iu Hnh LinuxFromScratch


Thay cc gi tr hin ti ca my ch vo
root (hd0,0)
root=/dev/hda1
tittle DeTaiLFS6.2-NDoan
Ta s c nh hnh

8. Khi ng h thng
By gi tt c cc phn mm c ci t. H thng cng sn sng khi ng.
Tuy nhin, h thng hin ti vn cn lin kt vi nhiu tp tin, ng dn khc v cha
th hot ng c lp, lm iu .
Chng ta thot ra khi mi trng chroot:
logout
Sau tho gn kt cc h thng tp tin o s dng :
umount -v $LFS/dev/pts
umount -v $LFS/dev/shm
umount -v $LFS/dev
umount -v $LFS/proc
umount -v $LFS/sys
Tho gn kt chnh h thng tp tin LFS:
umount -v $LFS

http://scribd.com/muafiu

48

ti : Xy Dng H iu Hnh LinuxFromScratch


Nu c nhiu phn vng to ra, g gn kt cc phn vng khc trc khi g phn vng
chnh ra:
umount -v $LFS/usr
umount -v $LFS/home
umount -v $LFS
Cui cng chng ta khi ng li h thng :
shutdown

-r

no

H thng LFS xy dng xong v ch i c khi ng t cng.

http://scribd.com/muafiu

49

ti : Xy Dng H iu Hnh LinuxFromScratch


Sau khi khi ng li , lc ny h thng LFS t ng boot t cng, chng ta s thy
giao din ty chn boot ca LFS 6.2

Nhn Enter vo , LFS s hin ra mn hnh ng nhp :


G tn ti khon: root v mt khu truy cp

http://scribd.com/muafiu

50

ti : Xy Dng H iu Hnh LinuxFromScratch


y chnh l giao din cn bn s khai ca Linux khi cha c giao din ha

kim tra chc n li 1 ln na, chng ta tin hnh khi ng li my tnh v nhn F12
chn ch boot . Lc ny chng ta s thy, mc nh, my tnh boot t cng.

Nh vy , chng ta xy dng xong 1 h iu hnh Linux mc cn bn, chng ta c


th t linux cn bn m xy dng , ci t thm cc giao din ha, ty bin ring cho
h iu hnh linux c nhn t LFS 6.2 ny .

http://scribd.com/muafiu

51

ti : Xy Dng H iu Hnh LinuxFromScratch

9. Xy dng LFS trn thit b USB

Vic xy dng LFS trn cng c hon thnh, tuy nhin , hn ch l xy dng trn
cng th LFS ch c th hot ng c nh v khng linh hot.
tin li v linh hot , cng nh d dng s dng bt k h thng my ch no ,
chng ta phi xy dng LFS trn USB .
C th hiu n gin l trong qu trnh xy dng LFS, chng ta s gn thm 1 usb vo
di 1 hnh thc cng ty chn, v sau khi xy dng xong LFS, c th chuyn ton b
tp tin h thng LFS sang phn vng to trn USB.
Cc bc LFS c th hot ng v khi ng trn USB c th tm tt nh sau :
Bc 1:
Chun b sn 1 thit b USB , tin hnh format v phn vng cho usb, chn nh dng s
phn vng l ext2.
Bc 2:
Gn kt usb vi my ch . gn kt usb, trc ht phi to 1 th mc nh x usb c
th nhn din .
VD: /mnt/usb
Bc 3:
Sao chp cc tp tin h thng LFS t cng sang USB . C th dng Live CD hoc 1 h
iu hnh ch khc . Khng nn sao chp trc tip h thng LFS nu ang chy di mi
trng /dev/ ( mi trng ca chnh LFS ) . S dng cu lnh:
rsync -var < a ch ngun LFS /*> < a ch gn kt USB >
hoc
cp -var < a ch ngun LFS /*> < a ch gn kt USB >
VD:
rsync -var /mnt/lfs/* /mnt/usb
hoc
cp -var /mnt/lfs/* /mnt/usb

http://scribd.com/muafiu

52

ti : Xy Dng H iu Hnh LinuxFromScratch


Bc 4 : Ci t Grub
To 1 tp tin c tn menu.lst v sao chp n th mc /boot/grub/
Ni dng tp tin menu.lst
# Config file for GRUB - The GNU GRand Unified Bootloader
# /boot/grub/menu.lst
timeout 5
default 0
color light-blue/black light-cyan/blue
title LFS 6.2 - USB
root (hd0,0)
kernel /boot/lfskernel-2.6.30.2
root=/dev/disk/by-uuid/03e82132-a199-4601-a20e-106c444a2c5a ro quite
# EOF
Theo nh h thng LFS xy dng trn, root s (hd0,0) l a ch usb s boot.
( Chng ta c th thay i a ch ny ty vo a ch cng)
ht nhn khi ng tt , s dng ch disk-by uuid
tm m uuid , dng lnh sau ti terminal :
blkid /dev/sdx ( sdx l ni usb c gn )
VD: blkid /dev/sdd1
/dev/sdd1: UUID="03e82132-a199-4601-a20e-106c444a2c5a" TYPE="ext2"
Tip tc g dng lnh:
grub
root (hdx,x)
setup (hdx)
Lnh root s thay i root n thit b USB l /dev/sdd1( VD trn) thnh (hd3,0), setup
(hd3)

http://scribd.com/muafiu

53

ti : Xy Dng H iu Hnh LinuxFromScratch


Bc 5: sa tp tin /etc/fstab
y l tp tin /etc/fstab nu xy dng LFS trn cng

h thng LFS c th khi ng t USB, chng ta phi chnh sa thm tp tin ny nh


sau :

y , thng tin uuid l thng tin ly c cc bc trc .


Sau khi chnh sa xong tp tin .
Qu trnh sao chp h thng LFS ln thit b USB hon tt .
Tin hnh g kt ni USB ra v khi ng li bng USB.

http://scribd.com/muafiu

54

ti : Xy Dng H iu Hnh LinuxFromScratch

Ti Liu Tham Kho


http://linuxfromscratch.org/
http://www.linuxquestions.org/
http://vi.wikipedia.org/wiki/Linux_From_Scratch
http://distro.ibiblio.org/tinycorelinux/
http://lfs.sourceforge.net/

http://scribd.com/muafiu

55

You might also like