らるるのPCとプログラムだけが友達日記

「Linux」カテゴリの最近の記事

x86_64+powernow-k8 で電圧調整

[Linux] [rarul.comサーバ]

'08/07/06(日曜日)11:46:01

だいぶ前の続き。

いろいろやってみたけど、結果的に CentOS 5.2 + x86_64(BE-2400+)でpowernow-k8を使った電圧調整ができたんで、その強引なやり方を後生の自分のためにメモっときます。参考にしたところ
[winplusの日記] powernow-k8の再コンパイル(電圧変更)
[adsaria mood] CentOSのカーネル再構築
消費電力/低消費電力PC - usyWiki
アジアのペンギン: 新規カーネル起動失敗に備えたgrubの使い方

まずはデストリ(CentOS 5.2)のLinuxのソースの取り寄せ。このへんを掘って、kernel-2.6.18-92.1.6.el5.src.rpmをインスコ。/usr/src/redhat/ 以下に展開される。

次は kernel の構築準備。ここを参考に、というかかかれていることをそのまんま実行。カーネル構築前に powernow-k8で電圧変更を可能にするパッチを当てる。ただ、そのままでは当たらなかったので一部手動修正。acpi_processor_performance構造体のacpi_dataが実体からポインタに変わっただけっぽい。あと、x86_64環境だと、powernow-k8.cはpowernow-k8モジュールではなくacpi-cpufreq.koモジュールに取り込まれるらしく、その影響でカーネルモジュールへのパラメータ渡しがどうもうまく動いてくれていないっぽい、つーことでfreq_listとvcore_listを手動でソースにベタに直書きして対処。

んで kernel構築しインスコし、手動構築していたr8168.koも忘れずに追加でインスコし、grug.confのdefaultを書き換えてmbr書き換えして再起動、、の前に このへん参考にお試し起動してみながら、いざ再起動して完了っと。

やったことをずらずらっと書くとこれくらいだけど、実際の作業はかなり苦労しましたです。。

# wget http://ftp.riken.jp/Linux/centos/5.2/updates/SRPMS/kernel-2.6.18-92.1.6.el5.src.rpm
# mkdir -p /usr/src/redhat/SOURCES
# rpm -ivh kernel-2.6.18-92.1.6.el5.src.rpm
# cd /usr/src/redhat/SPECS
# rpmbuild -bp --target x86_64 kernel-2.6.spec
# cd /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64/
# wget wget http://www.berniyh.net/powernow-k8-vcore_list-2.6.24-git-v3.patch
# patch -p1 < src/powernow-k8-vcore_list-2.6.24-git-v3.patch
# emacs -nw arch/i386/kernel/cpu/cpufreq/powernow-k8.c
(powernow-k8にパッチ当てる。failedしたとこの手動修正とfreq_list/vid_listの手動追加。x86_64もi386内のpowernow-k8.cが使われる)
# vi Makefile
(EXTRAVERSION をオレバージョンに改変し、既存のとごっちゃにならないようにする)
# make clean && make mrproper
# cp /boot/config-2.6.18-92.1.6.el5 .config
# make oldconfig
# make
# (20分くらいマターリして待つ)
# make modules_install
# /sbin/installkernel 2.6.18-92.1.6.el5-x1 arch/x86_64/boot/bzImage System.map
# cd ~rarul/src/r8168-8.005.00
# bash rarul.sh 2.6.18-92.1.6.el5-x1
(r8168.koインスコ用専用スクリプト。中身は前回の記事を見て。)
# /sbin/grub
grub> savedefault --default=0 --once
grub> quit
# (おもむろにgrub入れ替えるのは怖いので、、怖くない場合は↓)]
# vi /etc/grub.conf
(defaultを修正)
# /sbin/grub-install /dev/sda
# /sbin/shutdown -r now && exit
(再起動待って、dmesgを確認して以下のようなところがあればOK)
(なってなければ、uname -aで新規kernelが入っているのかどうかやdmesgに変なエラーがないのかとかを見ないといけないかと。)
powernow-k8: Requested 2300MHz with 1100mV
powernow-k8: Requested 2200MHz with 1050mV
powernow-k8: Requested 2000MHz with 1000mV
powernow-k8: Requested 1800MHz with 950mV
powernow-k8: Requested 1000MHz with 900mV
powernow-k8: 0 : fid 0xf (2300 MHz), vid 0x12
powernow-k8: 1 : fid 0xe (2200 MHz), vid 0x14
powernow-k8: 2 : fid 0xc (2000 MHz), vid 0x16
powernow-k8: 3 : fid 0xa (1800 MHz), vid 0x18
powernow-k8: 4 : fid 0x2 (1000 MHz), vid 0x1a

途中で ncurses-devel, unifdef, redhat-rpm-config, rpm-build を yumでインスコしたような気がするけど、それくらいは勝手に察知して対処してくれ>未来のオレ。あと手動で修正追加したパッチはこのへん

rarul.comへのアクセス拒否しまくり

[Linux] [rarul.comサーバ]

'08/05/17(土曜日)02:00:35

先日rarul.comの自宅鯖のハードを入れ替えましたが、このときアクセス拒否していたIPアドレスのリストをメモするのを忘れていました。おかげで、入れ替えてから数日の間にここのブログがテラスパムでした。だいたい80個くらいのスパムコメントをつけられ、またMovableTypeがスパムと判断したものを含めると、300くらいつけられてました。

さすがにやってられないので、reject_listを用意し、IPアドレスごとにTCPレベルで拒否する設定にしました。例のごとくAPNICからCH/KRのIPアドレスリストを取り寄せてこれらからは無条件で拒否にし、んで access_log をみながら mt-comment.cgi にPOSTでいきなりアクセスするのを繰り返す人を見つけてIPアドレスブロックごと拒否してます。おかげでものすごい量のIPアドレスからのアクセスを拒否することになってしまってます。

JP圏内は、Y!BBな1つをのぞいてはスパムっぽいものはなかったです。なので、たぶんたいていの人はこの日記を読めてるかと思いますが、もしrarul.comにアクセスできなかった場合は rarulあっとまーくrarul.comまでメールください。・・・アクセスできなかったらそもそもこの日記を読めずメールを送ってというメッセージすら見えないですが、私は細かいことは気にしない主義なので、問題ないです(ぇぇ

そんなわけで、相変わらずわがままなサーバですがこれからもよろしくお願いいたします。

投稿者: らるる | レスつける (2) | トラックバックしたい人 (0)
sloth > うちのWikiがスパムだらけ。最近ひどい。 ('08/05/17(土曜日)02:15:02)
rarul > 日本語含まないコメントを拒否すると、 かなり効果があったりする。 ('08/05/18(日曜日)02:24:42)

Linuxでの温度とか電圧とかそのへん

[Linux] [日常]

'08/02/25(月曜日)02:18:41

構成はこのへん。CentOS 5.1 x86_64くらいだったはず。

CentOS 5.1 の今のkernelでは、まだRTL8111Bのドライバが入っていない。おかげで、前回手動でドライバ入れてたけど、kernelをyumでアップデートするとまたRTL8111Bを見失ってくれる。モニタもキーボードもマウスもつながずリモートで扱う鯖とする予定なので、これでは困る。yum install kernel-headers でヘッダ入れ、REALTEK提供のソースの r8168-8.005.00/src/Makefile にて KVER をターゲットのバージョンに書き直し、おもむろに make clean; all; install し、"/lib/modules/$(version)/kernel/drivers/net/r8168.ko" にモジュールが入ったことを確認し、depmod -a $(version) して再起動すればOK(のはず)。起動したまま組み込むなら、insmod r8168.ko しとけばOKのはず。バージョンをつけずに "depmod -a " した場合現在起動中のバージョンに対して再構成されるので、kernel バージョンアップしたい場合は明示的にバージョン指定しないといけなさそうげ。

smartd を使えば、温度を含むHDDのSMART情報を引き出せるはず。ただ、SATAのAHCI環境なのが災いしてなのか、どうもうまく動いてくれない。/etc/smartd.conf に "/dev/sda -d ata -H -m root " とか書くととりあえず認識してはくれているものの、温度変更通知が /var/log/message あたりにあがってこない。"/usr/sbin/smartctl -a /dev/sda -d ata" しても、 "194 Temperature_Celsius"が常に30であるあたり、実は HTS541612J9SA00 が温度通知に対応してないだけなのかもしれない。

lm_sensors を使えば、CPUの温度を取得できるらしい。ググりまくりながらも、yum install lm_sensors して、sensors_detect して、適当に i2c-dev とか設定しまくってみるも、"sensors" とすると "General parse error" と怒られる。とある人のメモによると、kernelのk8tempドライバ(v2.6.19以上?)と lm_sensors 2.10.1 以上が必要らしい。CentOSのyumでは今のとこ lm_sensors-2.10.0-3.1 が入ってくる。個別に対応するのがめんどくさいので、CentOSで対応してくれるのを待つことにする。

cpufreqとか使えば電圧・周波数の制御ができるらしい。最初 cpuspeed とかでやるのかなと思って調べまくってると、どうも cpufreq_ondemandとかいう kernel レベルの制御機構があるらしい。dmesgで "Powernow-k8" とか見えれば組み込まれているはず。/sys/devices/system/cpu/cpu0/cpufreq/ 以下をいろいろ見ると kernel設定値が見える。yum install cpufreq-utils しとけば、cpufreq-set でいくつか設定値を変更できるらしい。

ただ、Powernow-k8のモジュールでは現在は電圧までは制御できない。そこを無理矢理電圧まで制御できるようにする kernelのパッチの情報がこの辺にあったりするので、よし Kernel 再構築しようと思い立つも、提供されてるパッチは i386 向けなのでした。。残念。x86_64の場合は、制御は cpufreq-powersave.ko あたりでやってるのかな。

いろいろ調べるも結局よくわからず、cpufreq-set -u 1800000 とだけ設定して終了。powernow-k8 で 1800000 の時は勝手に 1125mV にしてくれるっぽいので、これだけでも効果があるかなと思う。適当に /etc/rc.local に書いといた。

ちなみに、dmesg で出る powernow-k8: のとこの vid の値を x とすると、設定される電圧は (1550mV - x*25mV) になるということっぽい。0x16 なら 1000mV てな具合。

投稿者: らるる | レスつける (1) | トラックバックしたい人 (0)
rarul > cat /proc/acpi/thermal_zone/THRM/temperature でCPUは一応取れてるみたい。 ('08/02/26(火曜日)02:31:05)

むしゃくしゃして PC 買った

[Linux] [PCハードウェア] [rarul.comサーバ] [日常]

'08/02/11(月曜日)08:28:30

むしゃくしゃして PC 買った。自作PCならなんでもよかった。(今動かしているrarul.comの置き換えもあるので)特に後悔していない。

自宅鯖ってことで、低発熱・静穏(できればファンレス)・スペックはどうでもいい、という基準で、以下を選びました。

BE-2400はクロック電圧下げて運用予定、2,5inch HDD が変換アダプタなしで使えるのは SATAのいいところかな。TF7050-M2はBIOSで電圧・クロック下げできなかったのは誤算ってことで、電圧・クロック制御はOS上のアプリからやることにする。

んで、まずはLinuxのディストリ選定から。今までは VineLinux 使ってたけど、VineLinux自体が廃れ気味なのともはや日本語にこだわる必要もないのと今更EUC-JPはないなという理由で、他のを検討してみる。Fedoraはメジャーアップデートのスピードが異常でバグ多いのがあってダメ、何でもコンパイルするGentooは遊びで使うのはおもしろそうだけど運用向けじゃないので却下、Ubuntuは一番今のところ良さそうだけどアンチメジャーを掲げるらるるんの思想に反するので却下、あと何があるのかをよく知らないので、たまたま思いついたやつということで CentOSをチョイス。

早速ネットワークインストール用ディスクをダウソ・焼き・ブート、あとは寝ている間にでも・・と思いきや、なにやらNICを認識していない模様。TF7050-M2 のマニュアルを取り出してきて確認すると「RTL8111B」とか書かれているではないか。これって会社でGA-965P-DS3Pで組んだ時も引っかかったんだよなぁ。ここで一度CentOSをあきらめて Ubuntu(のサーバ版)を試すも、こっちもRTL8111Bを認識してくれなかったので、仕方なく RTL8111B のドライバを自分で入れることに。

Gigabit Ether時代になってもカニさん刻印は健在です。RTL8111BはPCI Expressに対応していて、ここ最近は安いマザボにオンボードチップとしてよく使われているそうな。っと思ったら、2ちゃんねるの有線ネットワーク系過去ログ倉庫の背景でカニが踊ってた。RTL8111Bの評価を斜め読みしてるとましという意見が目立って意外だった。スペックシートはこのへんで、ドライバはこのへん

ただ、RTL8111BのドライバはRealtekからはソースとしてしか提供されていなかった。x86_64のコンパイル環境をまだ持ってないので、バイナリの形で探さないといけない。うまい具合にCentOSのWikiページを見つけ、Driver Diskゲット・・・というところの次で思いっきりつまづく。

上記CentOSのWikiページで見つけたDriver Diskは、ナント img 形式で提供されていた。imgってナンダ?試しにDaemonToolsでマウントして見るも認識せず、PaintShopProで試すも開けるわけがない、Sonic Record Now!で開くと「CD-RかCD-RW入れやがれ」と怒られる(DVD-R/RWじゃダメなのかよ)、仕方なくCD-Rを出してきて焼いてみると見事に何も認識されないCD-Rができました。どう見てもただのゴミです。本当に(ry

あれこれ調べ周った結果、手に入れた img ファイルが1440KBであることから、これはFDD向けのイメージファイルであると気づく。このへんを参考に、Read/Write FDを使ってimgをFDへ書き出し、書き出したFDの中身をDVD-RWにコピーし、んでネットワークインストール用ブートしている環境でドライバを認識させる。やっと認識してくれた。たまたま手元にFDDがあったからよかったものの、もしなかったらVirtual Floppy Driveあたりを使わないといけなかったかも。あとはインストールは順調に進んだ。まぁ、作業は全部リモートでやるので、sshd とネットワークさえあれば後は何でもいい。インストールが終わると、BIOSで使わないものをとことんdisableにして、電源とEthernet以外を抜いて終了。

低電圧化の作業もあるので、安定駆動するかどうかの見極め期間も含めて、ぼちぼちくみ上げていきます。

VineLinux 4.2 が出ていた

[Linux] [rarul.comサーバ]

'07/12/29(土曜日)04:03:27

スラドを斜め読みしてたらVine Linux 4.2リリースのニュースがたれ込まれてた。((本家) 2007,12,25 Vine Linux 4.2 を公開) ここのrarul.com自宅鯖は未だにVineLinuxで運用しているもんで、早速アップデート開始。コケても泣かない!

[root@yuika rarul]# apt-get dist-upgrade
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
アップグレードパッケージを検出しています... 完了
以下のパッケージがアップグレードされます:
TrueType-sazanami Vine-manual XOrg-gl XOrg-libs apt bind bind-libs bind-utils cairo
cpio cups cups-libs e2fsprogs etcskel gksu glibc glibc-common glibc-debug glibc-devel
grep hwdata initscripts irb jman_pages libexif libpng libruby mkinitrd namazu_JMANdb
namazu_VineDocsdb nscd openldap openldap-devel openssh openssh-askpass openssh-clients
openssh-contrib openssh-server pcre perl perl-CGI-Session popt python qt qt-MySQL
rp-pppoe rp-pppoe-gui rpm rpm-build rpm-libs ruby ruby-docs ruby-mode ruby-tcltk samba
samba-client samba-common samba-libsmbclient samba-swat shadow-utils synaptic
system-tools-backends tar util-linux vine-release vutils xpdf-common
以下のパッケージが新たにインストールされます:
kernel#2.6.16-0vl76.27 perl-FreezeThaw
アップグレード: 67 個, 新規インストール: 2 個, 削除: 0 個, 保留: 0 個
169MB のアーカイブを取得する必要があります。
展開後に 53.8MB のディスク容量が追加消費されます。
続行しますか? [Y/n]y

[root@yuika rarul]# uptime
02:53:04 稼働 134 日間, 21:57, 1 ユーザ, 負荷平均率: 0.31, 0.61, 0.74

例のごとくaptでアップデートして見るも、特に問題なしにアップグレード完了。なんだつまんないのトラブルなしでよかった。