Kernel†
OSの中核となる基本コンポーネントプログラム。
実デバイスとプログラムの中継をしたり、デバイス制御を行う為に必要となる。
Linuxの場合は Kernel Archives で公開されている物を使っている事が多い。
他UNIXの場合は独自ビルドしたカーネルを利用している場合もある
PCI-E ASPM†
PCI-Expressには省電力機能としてASPM(Active State Power Management)が実装されている。
対応しているマザーボード・OSを利用する事で、利用していないPCI-Eデバイスを停止させて省電力化する事が出来るが、
対応していない環境や仮想環境で利用すると、意図しないシステムダウンが発生する。
特に、古いサーバに最新のOSを利用した時に発生する事が多いのと、
ログが残らずにシステムダウンする為、原因特定に時間のかかる場合が多い
システムダウンを回避するには、ASPMをDisableした後にOSを再起動をする必要がある。
+
| | ASPMの停止手順
|
- 参考サイト
CentOS6.2を使っていて突然ネットワークがダウンした話
- [GRUB1] /etc/grub.conf
kernel行の最後に "pcie_aspm=off" を追記してOS再起動
title CentOS (2.6.32-xxx.yyy.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-xxx.yyy.x86_64 【中略】 rhgb quiet pcie_aspm=off
initrd /initramfs-2.6.32-xxx.yyy.x86_64.img
- [GRUB2] /etc/default/grub
GRUB_CMDLINE_LINUXの最後に "pcie_aspm=off" を追記した後、grub2-mkconfigで設定を作り直してOS再起動
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="【中略】 rhgb quiet pcie_aspm=off"
GRUB_DISABLE_RECOVERY="true"
---
# grub2-mkconfig -o /boot/grub2/grub.cfg
- 確認コマンド
下記の実行結果が表示されれば、ASPMが無効化されている
# dmesg | egrep -i "PCIE ASPM"
---
PCIe ASPM is disabled
|
Jool NAT64†
IPv6限定ネットワークからIPv4へ通信を行うには様々な手段が存在するが、
その内の一つとしてDNS64+NAT64によるL3+L4変換が存在する。
Linuxで実装する場合はDNSキャッシュサーバをDNS64モードで動作させた上で、
KernelModuleにNAT64を組み込む必要がある。
Joolは、LinuxKernel用NAT64モジュールの一種であり、
RedHat、Debian、openSUSE、Raspbianなど様々な環境で動かす事が出来る。
+
| | Jool組み込み方法
|
- 参考サイト
iOS向けIPv6なNAT64/DNS64の試験ネットワークをRaspberry Pi 3で作る
Linuxだけで実装するNAT64
- Kernel再構築
Raspbian(Raspberry Pi3)でJoolを実装する為には、Kernel再構築(リビルド)が必要となる。
コンパイル時間は、Kernelに組み込むモジュール量に応じて処理時間が増減するが、
ラズパイの処理をコンパイルのみに限定させれば、3~6時間で処理が完了する。
# git clone --depth=1 https://github.com/raspberrypi/linux
# cd linux
# KERNEL=kernel7
# make bcm2709_defconfig
# make -j4 zImage modules dtbs
# make modules_install
# cp arch/arm/boot/dts/*.dtb /boot/
# cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
# cp arch/arm/boot/dts/overlays/README /boot/overlays/
# scripts/mkknlimg arch/arm/boot/zImage /boot/$KERNEL.img
- アップデート無効化
パッケージ管理によるKernel自動アップデートを無効化する
# apt-mark hold raspberrypi-bootloader
# apt-mark hold raspberrypi-kernel
# apt-mark hold raspberrypi-sys-mods
# dpkg --get-selections | grep hold
- Kernel調整
Kernelパラメータを修正した後に再起動する事で、Joolモジュールを読み込ませる
# echo "jool" >> /etc/modules
# echo "options jool pool6=64:ff9b::/96" >> /etc/modprobe.d/jool.conf
# reboot
- Joolステータス
Joolドキュメントに詳細は書いてあるが、主に下記コマンドを使うのでメモ
1).Poolの一覧出力
# jool --pool4 --display
2).セッション数確認
# jool -c -s
|