†OSの中核となる基本コンポーネントプログラム。実デバイスとプログラムの中継をしたり、デバイス制御を行う為に必要となる。公開されている物を使っている事が多い。Management)が実装されている。対応していない環境や仮想環境で利用すると、意図しないシステムダウンが発生する。古いサーバに最新のOSを利用した時に発生する事が多いのと、ログが残らずにシステムダウンする為、原因特定に時間のかかる場合が多いシステムダウンを回避するには、ASPMをDisableした後にOSを再起動をする必要がある。†IPv6限定ネットワークからIPv4へ通信を行うには様々な手段が存在するが、その内の一つとしてDNS64+NAT64によるL3+L4変換が存在する。Linuxで実装する場合はDNSキャッシュサーバをDNS64モードで動作させた上で、KernelModuleにNAT64を組み込む必要がある。Joolは、LinuxKernel用NAT64モジュールの一種であり、RedHat、Debian、openSUSE、Raspbianなど様々な環境で動かす事が出来る。Pi3)でJoolを実装する為には、Kernel再構築(リビルド)が必要となる。コンパイル時間は、Kernelに組み込むモジュール量に応じて処理時間が増減するが、ラズパイの処理をコンパイルのみに限定させれば、3~6時間で処理が完了する。最新のKernelを利用する時や、通常はサポートしていないモジュールを使う時、Kernelを自前で再構成(ビルド)する事がある。ビルドはスクリプトで自動化されているが、新規モジュールのON/OFFは自前で設定する必要がある。最新Kernelの機能追加・バグ修正はLKMLで公開されているので読んでおく。Archiveソースコード入手Kernelのソースコード(バニラ・カーネル)は、上記のオリジナルサイトで公開している。旧バージョンのソースについてもWeb上で公開されている。linux-4.18.8設定インポート一からビルドオプションを作るのは大変な為、稼働中のKernel設定をインポートして簡略化する。実行時にダイアログで設定確認が行われる。menuconfigソースビルドビルドオプションを作成したら、実際にソースコードをビルドする。ビルドには時間がかかる為、makeコマンドをCPUコア数に応じて並列処理させる。汎用性が高い従来の手順でインストールするには下記コマンドを実行する。下記はver4.18.8のバニラ・カーネルをインストールした場合の手順となる。新しいバージョンのKernelから起動させる為、GRUBなどのブートローダを書き換える。この時、Kernelが起動しなかった場合に備え&color(#ff0000){正常起動する設定は残しておく。}:下記はGRUBv1でのブートローダ記述例となる。旧Kernelの削除は新しいKernelで起動確認が完了したら実行する。しないと、タイミングによっては起動するKernelが無くなり復旧に時間を要する事になる。削除対象ファイルのPATHはディストリビューション毎に違う為、ファイルが無い場合は探しつつ作業する。下記は、v4.18.7のアンインストール手順となる。/boot/symvers-4.18.7.gz手抜きインストール最近(2018年ごろ)のKernelはイメージ・モジュールビルド、インストールを自動で実行してくれる。細かい設定を行わない場合は下記コマンドを実行すれば、上記の作業を自動で実行出来る。†コンテンツ配信サーバ・ロードバランサ等でiptablesを用いてFirewall制御を行っている場合、iptablesのセッション管理テーブルを使い切り、次の様なエラーがログが出る事がある。packetこの状態では新規のセッションを張る事が出来なくなり、NW通信速度が極端に低下してしまう。事前に管理テーブル最大値を拡張する事でエラー発生を抑制する事が出来る。設定例CentOS5・CentOS6/7で設定するパラメータが変化する。-p」で適用する必要がある。2048パラメータ解説conntrackは1セッションで、200~400Byte(概ね350Byte)のメモリを利用する。セッションテーブルはswapで代用が出来ない点に注意する。†LinuxKernelではローカルバインドしているIPアドレスのみ接続待受(LISTEN)出来るが、keepalivedでHA構成を取る場合、バインドしていないIPアドレスでLISTENするケースがある。その時は、sysctl.confに下記を追記する事で、非バインドIPアドレスでもLISTEN可能になる。パラメータパラメータ解説デフォルトは"0"が設定されており、ローカルバインドが出来ない様になっている。パラメータを"1"に変更する事で、非ローカルバインドIPアドレスのLISTENが可能となる。"net.ipv4.ip_nonlocal_bind"はIPv4用、"net.ipv6.ip_nonlocal_bind"はIPv6用なので注意。