intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Biên dịch nhân Linux part 8

Chia sẻ: Ashfjshd Askfaj | Ngày: | Loại File: PDF | Số trang:5

111
lượt xem
29
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Vào thời điểm này, dự án GNU đã hoàn thành nhiều cấu thành thiết yếu cho một hệ điều hành tự do, tuy nhiên phần hạt nhân (lõi - Linux Kernel) GNU Hurd của hệ điều hành này vẫn chưa được hoàn thành. Ngoài ra hệ điều hành BSD vẫn chưa được tự do hóa do các trở ngại về mặt pháp lý. Những điều này đã tạo ra một chỗ đứng thuận lợi cho hạt nhân Linux, nó nhanh chóng giành được sự quan tâm của các nhà phát triển cũng như người dùng. Trước đây, các hacker của...

Chủ đề:
Lưu

Nội dung Text: Biên dịch nhân Linux part 8

  1. image=/boot/vmlinuz-2.4.20 initrd=/boot/initrd-2.4.20.img root=/dev/hda1 label=linux-2.4.20 read-only image=/boot/vmlinuz initrd=/boot/initrd-2.4.26.img root=/dev/hda1 label=linux read-only Sau khi đã lưu tr (save) c u hình c a /etc/lilo.conf trên, ch y l nh: # /sbin/lilo đ đăng ký nhân m i cho LILO. Đ i v i gi i pháp đ phòng trư ng h p không th dùng LILO đ kh i đ ng vào nhân m i, xem chi ti t ph n 9.1.2 trên. 10 Kh i đ ng l i máy và ch nh lý n u g p tr c tr c T i đây, b n c n kh i đ ng l i máy v i nhân m i. N u không có gì tr ng i, máy s kh i đ ng vào Linux bình thư ng. B n có th ki m l i xem nhân mình đang ch y có đúng phiên b n v a đư c biên d ch hay không b ng cách ch y: $ uname -r ho c, $ cat /proc/version N u k t qu báo phiên b n nhân cũ thì có nghĩa trình kh i đ ng (LILO ho c GRUB) đã không kh i đ ng nhân v a đư c biên d ch. B n nên ki m tra l i các file c u hình (lilo.conf ho c grub.conf) cho đúng theo chi ti t đã nêu trên. 10.1 B treo khi kh i đ ng vào linux Tr ng i trong giai đo n kh i đ ng vào Linux thông thư ng do c u hình trình kh i đ ng không đúng và trình kh i đ ng đư c cài lên không đúng phân vùng kh i đ ng 31 ho c 31 boot partition – 35 –
  2. MBR b h ng (hi m th y trong quá trình biên d ch l i và cài nhân m i n u th c hi n đúng quy cách). Trong trư ng h p này, b n ph i: dùng đ n đĩa m m "c p c u" đư c t o ph n ?? đ kh i đ ng vào Linux • Đ n giai đo n này b n h n ph i bi t v trí c a phân vùng g c 32 (/) trên đĩa c ng đ • k t n i phân vùng 33 c a đĩa c ng: # mount /dev/hdXy /mount/point/somewhere trong đó X là ví trí đĩa c ng trên máy, y là v trí phân vùng g c trên đĩa c ng này. đ i root (chroot) tr thành phân vùng g c c a đĩa c ng: • # chroot /mount/point/somewhere trong đó /mount/point/somewhere là nơi đĩa c ng c a b n đư c k t n i 34. ki m tra l i c u hình c a trình kh i đ ng và cài đ t l i cho máy (xem ph n 9.1.1 ho c • tùy theo trình kh i đ ng b n dùng là GRUB hay LILO). Đi m c n chú ý đây 9.1.2 cho GRUB là b n ph i ch y l nh: # /sbin/grub-install /dev/hdX trong đó /dev/hdX là tên thi t b đĩa ch a MBR cho h th ng (thư ng là đĩa đ u tiên trên máy 35). L nh trên s thi t l p l i b n ghi kh i đ ng 36 và lo i b các trư ng h p MBR b h ng. Tương t cho LILO, b n ph i ch y l nh: # /sbin/lilo. 10.2 B treo trong quá trình nhân đư c load N u b n vư ng vào các tr ng i trong giai đo n nhân đư c t i lên thông thư ng là do các drivers t i c n thi t đ mount filesystems trên máy b thi u. Gi s b n dùng ext3 cho phân vùng g c 37 (/) ch a nhân. Đ có th k t n i phân vùng g c 38 này, modul ext3 ph i đư c biên d ch và initrd ph i t i module này lên. Tương t ng d ng cho các trư ng h p dùng filesystem khác và cũng thi u module. 32 root partition 33 mount partition 34 mount 35 Primary Master 36 boot record 37 root partition 38 mount root partition – 36 –
  3. Trong trư ng h p này, b n c n ghi ph n l i đư c báo trong khi kh i đ ng vào nhân m i đ xác đ nh l i này thu c ph n nào c a c u hình biên d ch nhân Linux và t đó đi u ch nh l i và biên d ch l i cho thích ng. Nói m t cách t ng quát, b n ph i: kh i đ ng l i máy vào phiên b n cũ c a kernel (ho c kh i đ ng vào phiên b n cũ c a • nhân n u b n dùng bi n pháp d phòng đã đư c đ c p ph n 9.1.1 và 9.1.2 trên) ch n l a và ch nh đ nh c u hình biên d ch nhân Linux l i (xem ph n 7.2.2 đ tránh l p • l i bư c l a ch n c u hình m t cách không c n thi t). th c hi n l i các bư c đã nêu ra trong ph n 8 và 9 trên • 11 Vá và biên d ch nhân Mã ngu n c a nhân Linux thư ng đư c "vá" r i biên d ch l i nhi u hơn là đư c biên d ch t tr n b mã ngu n t i v t http://sources.redhat.com/bzip2/kernel n u b n đã quen thu c v i quy trình tái biên d ch ho c b n có nhu c u ph i c p nh p kernel c a máy thư ng xuyên. T i sao l i c n "vá"? Mã ngu n c a Linux kernel c n đư c vá vì các lý do thư ng g p như sau: mã ngu n c a nhân Linux kernel c p nh t. B n đã có s n mã ngu n c a nhân Linux • (cũ hơn) trên máy. Mu n nâng c p phiên b n nhân c a Linux, b n ch c n t i các "mi ng vá 39" v đ vá (thay vì ph i t i tr n b mã ngu n c a nhân Linux cho phiên b n m i). m t s "drivers" đư c c p nh t. Đ x d ng các driver m i này (và các drivers này • c n đư c biên d ch đ n i v i các thư vi n hi n hành trên máy), b n ch c n t i các "mi ng vá" c a nh ng drivers này đ vá nhân Linux và biên d ch l i chúng. 11.1 Các đi m quan tr ng trư c khi vá Tương t như ph n 6.2, 6.3 và 6.4 trên, quy trình t i các mi ng vá cho nhân Linux y h t như t i tr n b gói mã ngu n c a nhân Linux. Đi m khác bi t là b n ph i t i các h sơ kh i đ u b ng patch và ch n cho đúng các "mi ng vá" c n thi t cho nhân c n đư c vá. Đi m t i y u c n ghi nh là khi vá mã ngu n c a nhân Linux, b n ph i vá đúng th t và đ y đ các mi ng vá cho đ n đúng phiên b n c n có. Ví d , b n đang có phiên b n nhân là 2.4.20 trên máy và b n mu n biên d ch l i phiên b n kernel c a máy tr thành 2.4.26. Thay vì t i tr n b mã ngu n c a nhân 2.4.26 và biên d ch l i (như đã trình bày trong su t bài vi t này), b n có th t i các b n vá 2.4.21, 2.4.22, 2.4.23, 2.4.24, 2.4.25 và 2.4.26 v máy. T ng c ng dung lư ng các b n vá này ch là m t ph n r t nh so v i tr n b gói mã ngu n 2.4.26. T t nhiên b n đã có mã ngu n c a kernel 2.4.20 trên máy. 39 patches – 37 –
  4. 11.2 T i, x và vá Các mi ng vá thư ng đư c nén hai d ng: .gz ho c .bz2 như gói mã ngu n. B n có th tùy ch n và có th t i các mi ng vá này v b t c nơi nào trên máy. Sau khi t i chúng v , b n có th th c hi n quy trình tương t như sau: Gi đ nh các b n vá đư c nén d ng .bz2, nơi ch a mã ngu n c a nhân Linux /usr/src và th c tính c a các mi ng vá này đã đư c ki m tra. Trong ví d này, gi đ nh phiên b n đang dùng trên máy là 2.4.20 và phiên b n c n đư c vá s là 2.4.26. Chuy n vào thư m c /usr/src: $ cd /usr/src x nén các mi ng vá d ng .bz2 vào thư m c /usr/src. L p l i cho đ n khi x h t các mi ng vá: $ tar xfvj /path/to/patch/patch-x.xx.xx ./ D n d p s ch s mã ngu n nhân hi n có trên máy, gi đ nh phiên b n mã ngu n hi n có là 2.4.20: $ cd ./kernel-2.4.20 $ make mrproper Lưu m t b n mã ngu n kernel 2.4.20 trong thư m c /usr/src đ phòng cho s c trong quá trình vá (n u b n không lưu m t b n mã ngu n nguyên th y c a nhân 2.4.20 trên máy, ho c b n mã ngu n 2.4.20 này cũng đã đư c vá trư c đây). $ tar cvf ../linux-2.4.20.tar ./ Vá các mi ng vá theo đúng th t và theo dõi b t c l i nào đư c báo: $ patch -p1 < ../patch-2.4.21 $ patch -p1 < ../patch-2.4.22 $ patch -p1 < ../patch-2.4.23 $ patch -p1 < ../patch-2.4.24 $ patch -p1 < ../patch-2.4.25 $ patch -p1 < ../patch-2.4.26 ho c th c hi n ki u "lư i" như sau: t o m t bi n môi trư ng PATCH 40 t m th i ch a tên các mi ng vá theo đúng th t , tách r i b ng kho ng tr ng 41: 40 vi c đ nh nghĩa bi n PATCH trong 2 dòng ch là thu n ti n khi dàn trang, tác gi dùng duy nh t 1 hàng. K t qu hoàn toàn như nhau. 41 space – 38 –
  5. $ export PATCH="patch-2.4.21 patch-2.4.22 patch-2.4.23 " $ export PATCH="$PATCH patch-2.4.24 patch-2.4.25 patch-2.4.26" Ch y vòng l p: $ for item in $PATCH; do patch -p1 < ../$item; done N u trong khi vá không có gì tr ng i, b n s th y các thông tin tương t : patching file xxx patching file yyy .... cho đ n khi k t thúc. N u trong khi vá b báo l i, b n ph i ngưng bư c vá (Ctrl-C) và ki m tra xem b n có dùng đúng b n vá và th c hi n các b n vá đúng th t phiên b n hay không. Không nên ti p t c v i bư c vá khi g p l i vì ch c ch n b n s g p tr ng i trong giai đo n biên d ch sau này. Đ tránh các tr ng i v sau, n u b báo l i trong khi vá, cách t t nh t b n nên xoá tr n b thư m c ch a mã ngu n c a nhân Linux (đang đư c vá và b l i) và x gói mã ngu n nguyên th y ho c gói b n v a lưu tr trên r i th l i. Xoá thư m c ch a mã ngu n v a vá và b tr c tr c, thư m c linux-2.4.20 đư c dùng như m t ví d đây: $ cd /usr/src $ rm -rf ./linux-2.4.20 X gói mã ngu n đư c lưu tr trên: $ tar xvf linux-2.4.20 $ cd ./linux-2.4.20 và sau đó l p l i bư c vá theo đúng th t các mi ng vá. Sau khi vá thành công, b n nên th c hi n hai bư c k ti p như sau trư c khi b t tay vào vi c chu n b c u hình biên d ch mã ngu n nhân Linux: Đ i tên thư m c ch a mã ngu n cho đúng phiên b n đã đư c vá (giúp b n nh n di n phiên b n c a mã ngu n đang có trên máy đã đư c vá t i phiên b n nào): $ cd /usr/src $ mv ./linux-2.4.20 ./linux-2.4.26 ch nh giá tr "VERSION" trong file Makefile chính c a mã ngu n Linux. Thư m c ch a mã ngu n lúc này đã đư c đ i tên thành linux-2.4.26: – 39 –
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2