/proc ファイルシステムから参照可能なカーネルパラメータの値は基本的に読み込み専用ですが、/proc/sys 以下に存在する仮想ファイルの多くは、カーネルのリコンパイルやシステムの再起動をすることなく運用中であってもダイナミックに値の変更が可能です。カーネルの動作を変更したり、チューニングにこれらのカーネルパラメータの値を利用することができます。
![]() | カーネルパラメータの変更はシステムの動作に大きく影響しますので注意してください。 |
カーネルパラメータの値を一時的に変更したいのであれば、root でログインし、以下のように echo コマンドで行うことができます。変更可能なパラメータかどうかは、単にファイルの書き込み権限があるかどうかで判断することができます。
# echo 1 > /proc/sys/net/ipv4/ip_forward |
また、/proc/sys 以下のカーネルパラメータの値は、sysctl コマンドで変更することも可能です。値を変更するには、sysctl コマンドに -w オプションを指定して以下のように実行します。
# sysctl -w net.ipv4.ip_forward=1 |
このように sysctl で仮想ファイルを指定する際は、/proc/sys 以下の仮想ファイルのパス名を / (スラッシュ)ではなく、.(ピリオド)で区切って指定します。なお、sysctl に -a オプションを指定すれば、/proc/sys 以下の値をすべて表示することもできます。
# sysctl -a abi.fake_utsname = 0 abi.trace = 0 abi.defhandler_libcso = 68157441 abi.defhandler_lcall7 = 68157441 abi.defhandler_elf = 0 abi.defhandler_coff = 117440515 dev.raid.speed_limit_max = 200000 dev.raid.speed_limit_min = 1000 dev.rtc.max-user-freq = 64 net.unix.max_dgram_qlen = 10 net.token-ring.rif_timeout = 600000 net.ipv4.conf.eth1.force_igmp_version = 0 net.ipv4.conf.eth1.disable_policy = 0 net.ipv4.conf.eth1.disable_xfrm = 0 net.ipv4.conf.eth1.arp_ignore = 0 net.ipv4.conf.eth1.arp_announce = 0 net.ipv4.conf.eth1.arp_filter = 0 net.ipv4.conf.eth1.tag = 0 net.ipv4.conf.eth1.log_martians = 0 net.ipv4.conf.eth1.bootp_relay = 0 net.ipv4.conf.eth1.medium_id = 0 net.ipv4.conf.eth1.proxy_arp = 0 省略... kernel.shmmax = 134217728 fs.mqueue.msgsize_max = 8192 fs.mqueue.msg_max = 10 fs.mqueue.queues_max = 256 fs.aio-max-nr = 65536 fs.file-max = 25280 |
しかし、このように echo コマンドや sysyctl コマンドで変更したカーネルパラメータの値は、システムを再起動するとすべて失われてしまいます。システムの再起動後にも値を保持するには、以下で解説する /etc/sysctl.conf や /etc/init.d/kparam を利用します。
/etc/sysctl.conf ファイルに変更するカーネルパラメータの値を記述しておくことにより、システム再起動後にも値を保持することができます。/etc/sysctl.conf ファイルには、sysctl コマンドの書式と同様に、/proc/sys 以下の仮想ファイルのパス名を以下のように .(ピリオド)で区切って指定します。# ではじまる行はコメントと見なされます。
# Disables packet forwarding net.ipv4.ip_forward = 0 # Enables source route verification net.ipv4.conf.all.rp_filter = 1 # Disables the magic-sysrq key kernel.sysrq = 0 |
/etc/sysctl.conf で指定したカーネルパラメータの値は、システム起動時に /etc/rc.sysinit スクリプト内で実行される sysctl コマンドにより有効になります。
kparam は Turbolinux 独自のカーネルパラメータ設定ツールです。kparam の最も大きな特徴は、複数のカーネルパラメータをまとめて変更できることと、kparam は実行前の値を保持しますので、容易に元の値に戻せることです。複数のカーネルパラメータを一時的に変更したい場合などに非常に便利なツールです。
kparam の設定ファイルは /etc/sysconfig/kparam です。このファイルに変更したいカーネルパラメータを書き込みます。以下は、/etc/sysconfig/kparam ファイルのサンプルです。
/proc/sys/kernel/shmmax 134217728 /proc/sys/kernel/sysrq 0 /proc/sys/kernel/panic 10 /proc/sys/kernel/sem 250 32000 100 128 |
kparam は、システム起動時に実行されるように、インストーラで設定されていますので、編集後は以下のコマンドを実行して、kparam を再起動します。
# /etc/init.d/kparam restart |
実行すると、/etc/sysconfig/kparam の設定がカーネルパラメータに反映されます。kparam を実行する前の値は保存されていますので、kparam を停止すれば元の値に戻すことができます。
# /etc/init.d/kparam stop |