Prelink (หรือวิธีทำให้ KDE บูตใน 3 วินาที)

ลิงก์ล่วงหน้า เป็นโปรแกรมที่มียูทิลิตี้เพื่อให้โปรแกรมเปิดได้เร็วขึ้น แม้ว่าคำอธิบายว่ามันจะคุ้มค่ากับบทความฉบับเต็มได้อย่างไร แต่เราสามารถพูดได้อย่างคร่าวๆว่าไบนารีจะต้องค้นหาไลบรารีไดนามิกที่ต้องโหลดก่อน

ลองจินตนาการว่าเรามีไบนารีที่ขึ้นอยู่กับไลบรารี QtCore เมื่อเราดำเนินการเชื่อมโยงล่วงหน้าแล้วระบบจะค้นหาก่อนในช่องว่างที่กำหนดโดยลิงก์ก่อนและในกรณีที่ไม่พบ (เช่นการอัปเดต) ก็จะค้นหา ในรูปแบบดั้งเดิม

Prelink ทำงานบนระบบที่รองรับ POSIX เช่น GNU / linux หรือ BSD

วิธีสมัครพรีลิงค์

การเพิ่มประสิทธิภาพระบบด้วยลิงก์ล่วงหน้านั้นค่อนข้างง่ายเราสามารถปรับไบนารีให้เหมาะสมโดยใช้ (เป็นรูท):

prelink binario

แต่เพื่อเพิ่มประสิทธิภาพทั้งระบบเราต้องดำเนินการ:

prelink -amvR

คุณจะเห็นสิ่งนี้:

ลิงก์ล่วงหน้า

ลิงก์ล่วงหน้า

นี่คือคำอธิบายโดยละเอียดเกี่ยวกับความหมายของพารามิเตอร์:

  • a: เท่ากับ - ทั้งหมดทำให้ใช้ได้กับทั้งระบบ
  • m: เทียบเท่ากับ –conserve-memory คำอธิบายวิธีการทำงานนั้นซับซ้อน แต่ช่วยประหยัดพื้นที่
  • v: เทียบเท่ากับ –verbose ช่วยให้เราทราบว่าไลบรารีใดที่เชื่อมโยงล่วงหน้า
  • ตอบ: เทียบเท่ากับ –random เพิ่มความปลอดภัยโดยการสุ่มค่า ฉันไม่ทราบรายละเอียดของการทำงานของมัน
เทอร์มินอลคือ Yakuake เผื่อว่าใครสนใจ

เพื่อยกเลิกการเชื่อมโยงล่วงหน้า (ยกเลิกการลิงก์) ไบนารี

prelink  -u

ทั้งระบบ:

prelink -au

การแจกแจงจำนวนมากเช่น Ubuntu เสนอ cron ที่เชื่อมโยงไบนารีระบบทั้งหมดล่วงหน้าเป็นระยะ ๆ หากติดตั้งลิงก์ล่วงหน้า
ลิงก์ล่วงหน้าอาจทำให้เกิดปัญหาในไบนารีที่เป็นกรรมสิทธิ์หลายรายการดังนั้นจึงมักจะข้ามไปโดยค่าเริ่มต้น อย่างไรก็ตามตรวจสอบให้แน่ใจว่าไฟล์ /etc/prelink.conf ของคุณมีบรรทัดเหล่านี้:
# Skype -b / usr / lib32 / skype / skype -b / usr / lib / skype / skype # ปลั๊กอิน Flash Player -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 / โมดูล / extensions / fglrx / -b /usr/lib/xorg/modules/linux/libfglrxdrm.so -b /usr/lib/xorg/modules/extensions/libglx.so

เพิ่มประสิทธิภาพ KDE

สิ่งที่สัญญาคือหนี้ หากคุณได้เชื่อมโยงระบบของคุณไว้ล่วงหน้าแล้วคุณอาจไม่สังเกตเห็นความแตกต่างของเวลาในการโหลด KDE เนื่องจาก KDE ทำหน้าที่เป็นยูทิลิตี้ที่เรียกว่า kdeinit เพื่อโหลดไลบรารีที่จำเป็นทั้งหมด เพื่อหลีกเลี่ยงการใช้เครื่องมือนี้เราต้องแจ้งให้ KDE ทราบว่ามีการเชื่อมโยงล่วงหน้า ในการทำสิ่งนี้เราต้อง (ในฐานะรูท) สร้างไฟล์ตัวแปร:

nano /etc/profile.d/kde-prelink.sh

ซึ่งเราวางบรรทัดต่อไปนี้

export KDE_IS_PRELINKED=1

และเราให้สิทธิ์ที่เหมาะสม (เราไม่ต้องการซนเพิ่ม rm-rf /)

chmod 755 /etc/profile.d/kde-prelink.sh

และถ้าคุณไม่เชื่อฉันนี่คือวิดีโอของ KDE ที่บูตระบบของฉัน:

[รายละเอียด] รายละเอียดระบบ:
  • HDD ที่ 7200 รอบต่อนาที
  • Gentoo
  • XFS
  • Ksplash ถูกปิดใช้งาน (สาเหตุของวิดีโอหน้าจอดำ
[/ รายละเอียด]

Cron และพรีลิงค์

หากคุณใช้ระบบเช่น Archlinux ซึ่งมีการอัปเดตบ่อยมากการเพิ่ม cron ที่รันพรีลิงก์ทุกวันอาจเป็นเรื่องที่น่าสนใจ

ดังนั้นเราจึงเปิดไฟล์ cron ด้วย nano (เป็นรูท):

nano /etc/cron.daily/prelink

และเราวางสิ่งต่อไปนี้:

#! / bin / ทุบตี
[[-x / usr / bin / prelink]] &&
/ usr / bin / prelink -amR &> / dev / null

จากนั้นเราให้สิทธิ์ที่เหมาะสม (ฉันได้กล่าวไปแล้วว่าไม่มีใครต้องการให้ใครเพิ่มรหัสที่เป็นอันตราย):
chmod 755 /etc/cron.daily/prelink

นิสัยที่ดีเมื่ออ่านบทความคือการค้นคว้าว่าสคริปต์ทำอะไรกันแน่ นิสัยที่ดีเมื่อเขียนคือการอธิบายว่ามีไว้เพื่ออะไร นี่คือรายละเอียด

  1. บรรทัดแรกคือการบอกระบบว่าสคริปต์ทุบตีคืออะไรและตำแหน่งของล่าม
  2. อันที่สองทำให้ bash เรียกใช้ subshell ในโหมด debug ฉันไม่รู้ว่าทำไม แต่ขอแนะนำสามารถกำจัดได้โดยไม่มีความเสี่ยง && หมายความว่าเมื่อคำสั่งเสร็จสิ้นให้รันสิ่งต่อไปนี้
  3. ดำเนินการเชื่อมโยงล่วงหน้าด้วยพารามิเตอร์บางอย่างที่อธิบายไว้แล้วเครื่องหมาย &> / dev / null จะเปลี่ยนทิศทางเอาต์พุตไปยัง / dev / null นั่นคือจะทิ้งมัน

ลิงค์ที่น่าสนใจ