カーネルソース
CentOSのカーネルをゲットする
自分の環境
# cat /etc/redhat-release CentOS release 6.8 (Final) # uname -r 2.6.32-642.4.2.el6.x86_64
HowTo
ここにやり方が書いてあった。
HowTos/I need the Kernel Source - CentOS Wiki
URLをほしいバージョン指定。
結果
あった kernel-2.6.32-642.4.2.el6.src.rpm
x86_64の記載がないのはバイナリでなく、コンパイル前のソースなので記載がないのでしょう。
rpm -ivh
~に展開される。
メモ
yumdownloaderとは
Issue
yum を使用して、パッケージをインストールせずにダウンロードだけを行う方法は?
Resolution
パッケージをインストールせずにダウンロードだけを行うには、yum の "downloadonly" プラグインまたは yumdownloader ユーティリティを使用する二つの方法があります。
なるほど!
yum を使用して、パッケージをインストールせずにダウンロードだけを行う方法 - Red Hat Customer Portal
SELINUXとAuditd
Auditd
外部からの脅威を念頭にネットワークの周囲に侵入検出システムやファイヤウォールやウィルス・スキャナーを張り巡らせただけで安心してはならず、認可した利用者についても監視する
概要
Linux Auditデーモンの基礎は、カーネルに対して発行されるシステム・コールのすべてを監視することにある。システム・コールというのはユーザー空間で動作しているプログラムがカーネルの機能を利用するための手段で、アプリケーションは直接または間接にこのシステム・コールを介してカーネルの提供するシステム資源への低レベル・アクセスを利用する。Linux Auditデーモンは、この仕組みを利用しているわけだ。このLinux AuditデーモンをSecurity-Enhanced Linux(SELinux)に組み込むと、SELinuxポリシーに対する違反を記録することができる。
デフォルトのままの場合、SELinuxポリシー違反を記録することになる。Linux Auditサブシステムのソース・パッケージには、あらかじめ、監査構成ルールが含まれており、重要なシステム・ファイルへのアクセス、ファイル・パーミッションの変更、ファイルの位置の変更、ファイル・システムのマウントとアンマウントを監視するルールが記述されている。これを基にして指定するとよいだろう。
参考
initrd
initrd
linuxのルートファイルシステムをマウントする前に、initrdをルートファイルシステムとしてマウントして、各種設定(ドライバ)などをsるんですが、
Wikiより
initrd とinitramfs(Linux 2.6.13 以降利用可能)の2種類の方式があるが、文脈によってはこれらを総称してinitrdと呼んでいる場合もある
とのことで、initrdといいつつ、initramfsのことを指す場合があるとのことでした。結構なんでだろう〜って迷うときが多かったです。
init_post()
カーネルのinitを起動する箇所。これが実行される前にinitramfs/initrdのどちらかがメモリに展開されている。
initramfsの場合
initrdの場合
- 830の箇所以降からスクリプトを探し出して実行する、
798 /* This is a non __init function. Force it to be noinline otherwise gcc 799 * makes it inline to init() and it becomes part of init.text section 800 */ 801 static noinline int init_post(void) 802 { 803 /* need to finish all async __init code before freeing the memory */ 804 async_synchronize_full(); 805 free_initmem(); 806 mark_rodata_ro(); 807 system_state = SYSTEM_RUNNING; 808 numa_default_policy(); 809 810 811 current->signal->flags |= SIGNAL_UNKILLABLE; 812 813 if (ramdisk_execute_command) { 814 run_init_process(ramdisk_execute_command); 815 printk(KERN_WARNING "Failed to execute %s\n", 816 ramdisk_execute_command); 817 } 818 819 /* 820 * We try each of these until one succeeds. 821 * 822 * The Bourne shell can be used instead of init if we are 823 * trying to recover a really broken machine. 824 */ 825 if (execute_command) { 826 run_init_process(execute_command); 827 printk(KERN_WARNING "Failed to execute %s. Attempting " 828 "defaults...\n", execute_command); 829 } 830 run_init_process("/sbin/init"); 831 run_init_process("/etc/init"); 832 run_init_process("/bin/init"); 833 run_init_process("/bin/sh"); 834 835 panic("No init found. Try passing init= option to kernel. " 836 "See Linux Documentation/init.txt for guidance."); 837 }
/proc/cpuinfo
CPU
/proc/cpuinfo
- 物理的なCPU数
- physical idの数
- 物理的なCPUコア数
- cpu coresの数
- OSからみたCPUコア数(仮想CPUコア数)
- siblings 物理的なコア数 * 2(HT効果で2倍されているらしい)
- OSからみたCPU数(仮想CPU数 == 仮想CPUコア数)
- cat /proc/cpuinfo | grep processor | wc -l
例
わかりやすく一行のみ表示
物理CPUは一個
# cat /proc/cpuinfo | grep "physical id" physical id : 0
物理CPUコアは4個
# cat /proc/cpuinfo | grep "cpu cores" cpu cores : 4
OSからみたCPUコア数(仮想CPUコア数)
# cat /proc/cpuinfo | grep siblings siblings : 8
結果、OSから見えるCPU数 == 仮想CPUコア数
物理的なCPUコア数 * 2(HT効果で2倍されているらしい)
cat /proc/cpuinfo | grep processor | wc -l 8
LAの目安
HT効果は
単純に性能が2倍になるわけではなく、現在はおおむね20%程度クロックあたり性能が向上
らしいので、上記の場合は4 * 1.2 = 4.8 くらいを目安か