This page is READ-ONLY. It is generated from the old site.
All timestamps are relative to 2013 (when this page is generated).
If you are looking for TeX support, please go to VietTUG.org

microcore linux: phần 3: tạo một gói của bạn

còn gì khó hơn đây?
Added by about 3 years ago  »  Votes: 2/2

Phần 2: cài đặt, thêm gói

Trong phần 2, ta biết cách cài đặt microcode lên một máy ảo, cách thêm một gói có sẵn bằng lệnh tce-load. Điều cần nhớ,
  1. Lệnh này chỉ được dùng khi bạn đang ở tài khoản tc, chứ không phải tài khoản root. Đây là thiết kế an toàn của microcore;
  2. Lệnh này có tham số -w -i được dùng để nạp gói từ mạng internet, nhưng bạn hãy bỏ tham số -w đi khi muốn nạp gói từ ổ cứng của bạn.

Trong bài này, bạn sẽ cách tạo một gói riêng, có thể nạp bằng lệnh tce-load. Hướng dẫn ở đây chỉ nêu lên ý chính, còn chi tiết hơn bạn phải coi ở tài liệu gốc1.

Định dạng. Nơi lưu trữ

Gói của bạn sẽ có đuôi là .tcz, .tczl (thư viện) hoặc .tczm (mô-đun cho nhân). Định dạng tập tin là SquashFS, sau khi kết nối vào hệ thống rồi thì chịu chết, không sửa được (nghĩa là đinh dạng read-only).

Các gói này có thể lưu trữ bất kỳ đâu cũng có thể nạp bởi tce-load. Tuy nhiên, mặc định tce-load sẽ tìm kiếm trong /mnt/hda1/tce/optional. Đường dẫn /mnt/hda1/ có thể thay đổi nhờ tham số của nhân khi khởi động, như trong phần thiết lập cho Grub ở phần 1.

Nếu bạn nạp một gói từ internet, nó sẽ tự động nạp ở lần khởi động tiếp theo. Thật ra, danh sách các gói được nạp khi hệ thống khởi động được cho trong danh sách /mnt/hda1/tce/onboot.lst, và bạn có thể điều chỉnh dễ dàng. Khi một gói đã có trong /mnt/hda1/tce/optional/ nhưng chưa có trong onboot.lst, bạn có thể nạp từ dòng lệnh nhờ tce-load -i tên_gói.

Tạo một gói

Cách thực hiện giống như các gói .tar.gz (trên Slackware, Arch,...). Trước hết, cần liệt kê tất cả các tập tin của gói. Ví dụ, ta có gói gogo với các tập tin sau:

/usr/local/bin/gogo
/usr/local/share/doc/gogo
/usr/local/lib/gogo.so

Ta chỉ việc tạo một thư mục tạm thời, ví dụ /tmp/gogo.now chứa các tập tin của gói, theo đúng cấu trúc ở trên

/tmp/gogo.now/usr/local/bin/gogo
/tmp/gogo.now/usr/local/share/doc/gogo
/tmp/gogo.now/usr/local/lib/gogo.so

Sau đó, bạn dùng lệnh mksquashfs để đóng gói. Nếu chưa có lệnh này, bạn cần nạp gói squashfs-tools-4.0.tcz trước khi tiếp tục

$ cd /tmp/
$ mksquashfs gogo.now/     gogo-1.0.tcz
$ mv         gogo-1.0.tcz  /mnt/hda1/tce/optional

Bây giờ, bạn đã có thể nạp chính gói của mình, nhờ

$ tce-load -i [email protected]  # không dùng tham số -w

Danh sách tập tin

Việc tạo gói rất đơn giản như trên, nhưng bù lại, việc khó khăn nhất là lấy danh sách các tập tin của một gói. Việc này tùy vào kỹ năng của bạn. Dưới đây là vài gợi ý có thể có ích:

  1. Nếu gói có ít tập tin, có thể chép trực tiếp bằng cách lệnh
  2. Nếu gói được cài bằng make install, hãy thay đổi đích khi cài đặt, ví dụ make install PREFIX=/tmp/gogo.now/
  3. Nếu gói cài bằng make, setup,... nhưng không thể đổi đích cài đặt, có thể sử dụng đánh dấu thời gian, và dùng lệnh tar để gom hàng
1 $ touch ~/my_marker                                           # tạo đánh dấu
2 $ make, setup,...                                             # tiến hành cài đặt
3 $ find /usr/local -not -type d -newer ~/my_mark > ~/file.list # liệt kê các tập tin mới cài
4 $ tar -T ~/file.list -czvf ~/my_package.tar.gz                # dùng tar để gom hàng
5 $ mkdir /tmp/gogo.now                                         # tạo thư mục tạm
6 $ tar -xzvf ~/my_package.tar.gz -C /tmp/gogo.now              # xả hàng vào /tmp/gogo.now
7 $ cd /tmp && mksquashfs gogo.now/  gogo-1.0.tcz               # đã hướng dẫn ở trên

--

1 Ref.: TincyCore Linux: HOWTO creating extensions


Comments