CPU情報(型番、物理数、論理数、コア数)の調べ方

サーバのCPU情報を確認する必要があり、確認方法を調べたので備忘録として残しておきます。

/proc/cpuinfoの参照

型番の確認

$ grep 'model name' /proc/cpuinfo  | uniq
model name      : Intel(R) Xeon(R) CPU E5-2630L v2 @ 2.40GHz

今回の環境では、CPUはXeon E5-2630L v2を利用していることがわかります。

OSが認識しているCPU数(論理数)

# grep processor /proc/cpuinfo                                                                                                                                                                     
processor       : 0
processor       : 1
processor       : 2
processor       : 3
processor       : 4
processor       : 5
processor       : 6
processor       : 7
processor       : 8
processor       : 9
processor       : 10
processor       : 11

0から11までの合計12個が認識されていることがわかります。

# grep 'siblings' /proc/cpuinfo | uniq
siblings        : 12

シブリングの項目でも、認識数が確認できます。

実際に搭載されている物理数

$ grep 'physical id' /proc/cpuinfo | uniq
physical id     : 0

論理数が12個なのに対して、物理数は1つです。

コア数

$ grep 'cpu cores' /proc/cpuinfo | uniq
cpu cores       : 6

1 CPUに6つのコアがあることが確認できます。しかしこれでは1 [cpu] x 6 [core/cpu] = 6なので、OSで認識されているCPUの数の12と合致しません。 今回のCPUではHyper-threadingが有効となっていて、1つのコアを2つのCPUとして認識しているためです。 コア数がシブリングと同一の値であれば、Hyper-threadingは無効で動作しています。

lscpu

型番以外の情報はlscpuでも確認できます。

$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                12
On-line CPU(s) list:   0-11
Thread(s) per core:    2
Core(s) per socket:    6
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 62
Stepping:              4
CPU MHz:               1871.906
BogoMIPS:              4799.89
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              15360K
NUMA node0 CPU(s):     0-11

CPU(s)で論理数、Thread(s) per coreでHyper-threading時の1コアあたりの認識数、Core(s) per socketで1CPUあたりのコア数、Socket(s)でCPUの物理数を表しています。

Juniper SRXのrootパスワードリカバリ・初期化

以前、お遊び用にJuniperのSRX100をヤフオクにて入手しました。 しばらく使っていなかったのですが、JUNOSの動きを確認したいことがあり久しぶりに引っ張り出してきて起動させたところ、ログイン情報を忘れてしまっていたため、ログインすることができませんでした。このエントリはrootパスワードのリカバリから設定初期化までのメモとなります。

パスワードリセット方法

こちらの手順に沿って対応させて頂きました。
ルートパスワードを忘れてしまった場合の復旧方法は?

  1. 電源投入し、boot loaderに入る 起動時に以下の表示が出たら、スペースを入力してブートローダーのプロンプトへ入る。
Loading /boot/defaults/loader.conf
/kernel data=0x9ecbac+0xd8890 syms=[0x4+0x7dca0+0x4+0xb3e02]


Hit [Enter] to boot immediately, or space bar for command prompt.


Type '?' for a list of commands, 'help' for more detailed help.
loader> 
  1. リカバリーモードで起動する
loader> boot -s
  1. コンフィギュレーションモードに入る
root> configure
  1. 新たにパスワードを設定し、反映させる
root# set system root-authentication plain-text-password    
New password: <新しいパスワードの入力(アルファベット小文字・大文字、数字、記号を少なくとも2種を組み合わせる)>
Retype new password: <入力したパスワードの確認>

root# commit
  1. ログアウトし、リブート
root# exit 
Exiting configuration mode

root> exit 

Reboot the system? [y/n] y

リブート後、新しいパスワードでログインできることを確認して完了です。

設定の初期化

  1. コンフィグとログファイルの初期化 復旧したrootパスワードでログイン後、下記コマンドでCLIモードに入り、初期化します。このコマンドでは、各種ログファイル等も削除されます。
root@% cli
root> request system zeroize

実行後、リブートがかかります。

  1. rootパスワード再設定 先ほど設定したrootパスワードも消えているので、再度設定します。
root# set system root-authentication plain-text-password 

これで作業は完了です。

VMWare上のLinuxのカーネルを再構築

最近Linuxのカーネルを再構築することがあったので,その作業行程をメモとして残しておきます.

元の環境

VMWare Fusion上の仮想マシン
Debian GNU/Linux 6.0.3 (squeeze)

$ uname -r
2.6.32-5-amd64

カーネル再構築

あらかじめ必要なパッケージなど

cursesはmenuconfigを使う場合に必要になります.

# apt-get install build-essential libncurses-dev ncurses-dev

カーネルのソースコードの入手

2012/1/24 時点での2.6系の最新バージョンは2.6.39.4でしたが,
どうもうまくいかなかったので今回は2.6.32.27を入れることにしました.
2.6.38.xは起動が怪しく,2.6.39.xは起動できず,問題も解決できなかった
ので,同じマイナーバージョンのリビジョン違いで試しています.

ソース入手先
ftp://ftp.kernel.org/pub/linux/kernel/

# wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.27.tar.gz

カーネルのビルド

# tar zxf ./linux-2.6.32.27.tar.gz
# cd linux-2.6.32.27

古い.configなどが残ってるかもしれないので,一度初期化しておきます.

# make mrproper

元のカーネルから設定を引き継ぐ場合,以下が必要です.
make oldconfigをした際に対話型の設定が始まりますが,数が多いので
ひとまず全てenterで設定を終えてから,make menuconfigで必要な箇所は変更します.

# cp /boot/config-2.6.32-5-amd64 .config
# make oldconfig

カーネルに組み込む機能やモジュールとして読み込む機能を選択します.
VMWare上で動作させる場合,deprecated sysfs featuresを有効にする
必要があるそうです.また,iptablesやipvs関連の機能を使う予定がある
ため,関連する項目は一通りチェックをつけておきます.

# make menuconfig
General setup
    enable deprecated sysfs features to support old userspace tools

Networking support
Networking options
    Network packet filtering framework (Netfilter)
    Core Netfilter Configuration
    IP: Netfilter Configuration
    IPv6: Netfilter Configuration

    IP virtual server support

これで,選択した内容の.configが生成されるので,ビルド,インストールします.

# make
# make modules_install
# make install

初期RAMディスク(initrd)の作成

# update-initramfs -c -k `make kernelrelease`

GRUBの設定を更新

Debian squeezeではgrub2を利用しているため,grubで利用していた設定ファイルの
/boot/grub/menu.lstは存在せず,代わりに/boot/grub/grub.cfgを利用します.
update-grub2コマンドで,設定ファイルを直接編集すること無く更新します.

# update-grub2

再起動して確認

$ uname -r
2.6.32.27