「Prelink」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(Pkg/AUR テンプレートの更新)
(ページをアーカイブ)
タグ: 新規リダイレクト
 
(同じ利用者による、間の1版が非表示)
1行目: 1行目:
  +
#redirect [[ArchWiki:アーカイブ]]
[[Category:システム管理]]
 
  +
[[Category:アーカイブ]]
[[en:Prelink]]
 
[[ru:Prelink]]
 
ほとんどのプログラムは機能させるのにライブラリを必要とします。ライブラリは、リンカによってコンパイル時にプログラムに統合させたり (静的リンク)、ローダーによってプログラムの実行時に統合させることが可能です (動的リンク)。動的リンクにはコードのサイズが減って管理が楽になるという利点がありますが、プログラムが実行されるたびに、ローダーが該当するライブラリを見つけ出さなければなりません。ライブラリはメモリのあちこちに散らばっているため、性能にペナルティを与えてしまうことになり、必要とするライブラリが増えれば増えるほど、ペナルティも増加します。Prelink はシステムの動的リンカを使用して、再配置によってあらかじめリンクを行っておくことで (実行可能ファイルを "prelink" する) ペナルティを減らします。何らかの理由で、prelink された後にライブラリが変更されなければ、プログラムは実行時にライブラリを探すのに時間を費やす必要はなくなります。
 
 
{{Warning|Prelink の使用に対して反対する主張が [https://fedorahosted.org/fesco/ticket/1183 Fedora バグ #1183] でされています。[https://lwn.net/Articles/341244/ LWN の記事] のまとめより: "総合して、pre-link はちょっとしたハックであり、わざわざそれを行うほどの効果があるかは不明である"。}}
 
 
==インストール==
 
{{AUR|prelink}}{{Broken package link|パッケージが存在しません}} パッケージを[[インストール]]してください。
 
 
==設定==
 
全ての設定は {{ic|/etc/prelink.conf}} で行います。
 
 
{{Note|prelink を使用するとプロプライエタリなバイナリがクラッシュすることがあります (Flash, Skype, Nvidia のプロプライエタリドライバーなど)。クラッシュするようなバイナリは {{ic|/etc/prelink.conf}} の除外リストに追加することができます。}}
 
 
==使用方法==
 
===Prelink===
 
 
次のコマンドは {{ic|/etc/prelink.conf}} で指定したディレクトリ内の全てのバイナリを prelink します:
 
# prelink -amR
 
{{Warning|ディスクの残り容量が少なくなっている状態でシステム全体を prelink すると、バイナリの一部が切り捨てられて、システムが壊れてしまう可能性があると言われています。{{ic|file}} や {{ic|readelf}} コマンドを使用してバイナリファイルの状態をチェックしてください。もしくは {{ic|df -h}} コマンドで先にハードドライブの残り容量を確認してください。}}
 
 
=== 除外リスト ===
 
 
[[en2:Talk:Prelink#Exclude_list|議論ページ]]より:
 
 
{{hc|/etc/prelink.conf|<nowiki>
 
# 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/extensions/fglrx/
 
-b /usr/lib/xorg/modules/linux/libfglrxdrm.so
 
-b /usr/lib/xorg/modules/extensions/libglx.so
 
</nowiki>}}
 
 
===prelink の削除===
 
全てのバイナリから prelink を削除:
 
# prelink -au
 
 
== 毎日実行される cron ジョブ ==
 
アップデートが行われても速度を保つために cron ジョブの設定が推奨されています (他のディストリのパッケージに含まれています)。{{ic|/etc/cron.daily/prelink}} として保存してください:
 
{{hc|/etc/cron.daily/prelink|<nowiki>#!/bin/bash
 
[[ -x /usr/bin/prelink ]] && /usr/bin/prelink -amR &>/dev/null</nowiki>}}
 
そして所有権とパーミッションの設定をしてください:
 
 
# chmod 755 /etc/cron.daily/prelink
 
 
また、AUR にある {{aur|prelink-systemd}}{{Broken package link|パッケージが存在しません}} パッケージは上記の cron スクリプトと同じ効果を持つ systemd タイマーユニットをインストールします。
 
 
== KDE ==
 
KDE に prelink のことを教えることで高速に起動することができます。全てのユーザーに適用されるように以下を設定すると良いでしょう:
 
{{hc|/etc/profile.d/kde-is-prelinked.sh|<nowiki>export KDE_IS_PRELINKED=1</nowiki>}}
 
そして所有権とパーミッションの設定をしてください:
 
 
# chmod 755 /etc/profile.d/kde-is-prelinked.sh
 
 
== 参照 ==
 
 
* [https://linux.die.net/man/8/prelink Prelink man page]
 
* [https://www.gentoo.org/doc/ja/prelink-howto.xml Gentoo Linux Prelink ガイド]
 
* [http://crast.us/james/articles/prelink.php ELF Prelinking and what it can do for you]
 

2020年8月2日 (日) 09:07時点における最新版