Do đó, hãy tưởng tượng rằng chúng ta có một tệp nhị phân phụ thuộc vào thư viện QtCore, khi chúng ta đã thực thi liên kết trước trên nó, trước tiên nó sẽ tìm kiếm trong không gian được chỉ định bởi liên kết trước và trong trường hợp không tìm thấy nó (một bản cập nhật, cho ví dụ) nó sẽ tìm kiếm nó theo cách truyền thống.
Prelink hoạt động trên bất kỳ hệ thống tuân thủ POSIX nào, chẳng hạn như GNU / linux hoặc BSD.
Cách áp dụng liên kết trước
Tối ưu hóa hệ thống với liên kết trước khá đơn giản, chúng ta có thể tối ưu hóa hệ thống nhị phân bằng cách sử dụng (dưới dạng root):
prelink binario
Nhưng để tối ưu hóa toàn bộ hệ thống, chúng ta phải thực hiện:
prelink -amvR
Bạn sẽ thấy một cái gì đó như thế này:
Dưới đây là giải thích chi tiết về ý nghĩa của các tham số:
- a: bằng –tất cả, làm cho nó áp dụng cho toàn bộ hệ thống
- m: tương đương với –conserve-memory, giải thích về cách nó hoạt động rất phức tạp, nhưng tiết kiệm dung lượng
- v: tương đương với –verbose, nó cho phép chúng ta biết đâu là các thư viện được liên kết trước
- A: Tương đương với –random, tăng tính bảo mật bằng cách tạo một giá trị ngẫu nhiên. Tôi không biết chi tiết về hoạt động của nó
Để hủy liên kết trước (hủy liên kết) một tệp nhị phân
prelink -u
Toàn bộ hệ thống:
prelink -au
# Skype -b / usr / lib32 / skype / skype -b / usr / lib / skype / skype # Flash Player Plugin -b /usr/lib/mozilla/plugins/libflashplayer.so # NVIDIA -b / usr / lib / libGL .so * -b /usr/lib32/libGL.so* -b //usr/lib/libOpenCL.so* -b //usr/lib32/libOpenCL.so* -b / usr / lib32 / vdpau/ -b / usr / lib / vdpau / -b /usr/lib/xorg/modules/drivers/nvidia_drv.so -b /usr/lib/xorg/modules/extensions/libglx.so* -b / usr / lib / libnvidia- * - b / usr / lib32 / libnvidia- * # Catalyst -b / usr / lib / libati * -b / usr / lib / fglrx * -b / usr / lib / libAMDXvBA * -b /usr/lib/libGL.so* - b / usr / lib / libfglrx * -b /usr/lib/xorg/modules/dri/fglrx_dri.so -b /usr/lib/xorg/modules/drivers/fglrx_drv.so -b / usr / lib / xorg / modules / extension / fglrx / -b /usr/lib/xorg/modules/linux/libfglrxdrm.so -b /usr/lib/xorg/modules/extensions/libglx.so
Tối ưu hóa KDE
Những gì đã hứa là nợ. Nếu bạn đã liên kết trước hệ thống của mình, bạn có thể không nhận thấy bất kỳ sự khác biệt nào về thời gian tải KDE. Điều này là do KDE phục vụ như một tiện ích được gọi là kdeinit để tải tất cả các thư viện cần thiết. Để tránh sử dụng công cụ này, chúng tôi phải cho KDE biết rằng nó đã được liên kết trước. Để làm điều này, chúng ta phải (với tư cách là người chủ) tạo một tệp biến:
nano /etc/profile.d/kde-prelink.sh
Trong đó chúng tôi dán dòng sau
export KDE_IS_PRELINKED=1
Và chúng tôi cung cấp cho nó các quyền thích hợp (chúng tôi không muốn bất kỳ điều gì hư hỏng nào thêm vào rm-rf /)
chmod 755 /etc/profile.d/kde-prelink.sh
Và nếu bạn không tin tôi, đây là video khởi động KDE trên hệ thống của tôi:
- HDD ở 7200 RPM
- Gentoo
- XFS
- Ksplash bị vô hiệu hóa (nguyên nhân gây ra màn hình đen video
Cron và liên kết trước
Nếu bạn sử dụng một hệ thống như Archlinux, nơi các bản cập nhật diễn ra rất thường xuyên, thì việc thêm một cron chạy prelink mỗi ngày có thể rất thú vị.
Do đó, chúng tôi mở tệp cron bằng nano (dưới dạng root):
nano /etc/cron.daily/prelink
Và chúng tôi dán như sau:
#! / bin / bash [[-x / usr / bin / prelink]] && / usr / bin / liên kết trước -amR &> / dev / null
Sau đó, chúng tôi cung cấp cho nó các quyền thích hợp (tôi đã đề cập rằng không ai muốn ai đó thêm mã độc hại):
chmod 755 /etc/cron.daily/prelink
Một thói quen tốt khi đọc một bài báo là nghiên cứu chính xác kịch bản làm gì. Một thói quen tốt khi viết nó là giải thích nó dùng để làm gì. Đây là sự cố
- Dòng đầu tiên được sử dụng để cho hệ thống biết tập lệnh bash là gì và vị trí của trình thông dịch.
- Cái thứ hai làm cho bash thực thi một vỏ con ở chế độ gỡ lỗi, tôi không biết tại sao, nhưng nó được khuyến khích, nó có thể được loại bỏ mà không có rủi ro. && có nghĩa là khi lệnh kết thúc, hãy chạy như sau.
- Thực thi liên kết trước với một số tham số đã được giải thích, &> / dev / null chuyển hướng bất kỳ đầu ra nào đến / dev / null, nghĩa là loại bỏ nó