ジャンル不定の日記です。

ミルジョージ系確立 ウイニングポスト7 2013

メジロティターン系の確立が厳しい感じでやる気なくなってしばらくやってなかったがプレイ再開した。
ミルジョージ系は91年末に確立した。



89年引退で支配率は足りそうな感じだったのだが、90年末はブラッシンググルーム系が確立したので91年末確立。
90年はオート進行。
そうなると92年末にダンジグ系が確立するはずなので92年末のメジロティターン系の確立は不可能。
93年末はシアトルスルーが高確率で確立するのでメジロティターンは94年末のワンチャンになるがヌレイエフよりも若いので不確実。

91年時点の種付け料
ミルジョージ 2650万
イナリワン 1500万
ミスターシクレノン 1500万
モガミヤシマ 1000万
ジョージモナーク 700万
ロッキータイガー 500万
オサイチジョージ 450万
サワヤカラップ 1500万
サワヤカハット 650万
サワヤカジョージ 550万
サワヤカシー 150万
サワヤカソウル 150万

モガミヤシマは88年末引退でオサイチジョージとサワヤカソウルは90年末引退で残りは89年末引退。90年はオート進行。
92年時点の支配率は5.7%。

史実馬の所有は、イナリワン、モガミヤシマ、ミスターシクレノン、ジョージモナーク、オサイチジョージ、ロジータ。
イナリワンは金札だがリセット駆使しないとなかなか勝てない。適正広いので狙えるレースは多いが、芝の方が勝ちやすい。後継にする予定なのでクラシック3冠取らせたが、3冠が必要ないなら皐月はモガミヤシマに取らせたほうが良いと思う。
モガミヤシマは適正外れるが朝日杯やNHKマイル勝てないこともない。欧米は厳しいがアジアのGIは狙える。
ミスターシクレノンは4000mでも勝てるし適正内なら中距離もいける。海外GI普通に勝てるのでクラシックは他の馬を優先したほうが良い。
ジョージモナークは交流重賞スキルがあるが交流GIも結構厳しい。
オサイチジョージとロジータの世代はメジロティターン産駒に勝たせたのであまり活躍させてないが、ロジータはダート牝馬だが結構強い。オサイチジョージも適正内なら上位。

あと、サワヤカシー(クワイエットクイン83)は架空馬だがプレイ開始時に出生済みの83年生。能力固定?
距離適性2400-2600で馬場適性万能。
GIは無理で適正距離の重賞がGIIしか無いが、狙える。

sudoでリダイレクト

# genfstab -U /mnt >> /mnt/etc/fstab
Arch Linuxをインストールしたことある人ならおなじみのfstabを生成するコマンド。

インストール済みの環境上でmountしたパーティションにインストールする場合、
$ sudo genfstab -U /mnt >> /mnt/etc/fstab
こんな感じでsudoでやりたくなるが、これできないんですよね。
genfstabの出力をリダイレクトするのではなく、sudoコマンドの出力をリダイレクトになる。
つまり、/mnt/etcの書き込み権限がないユーザーでは権限がない。

そんな時suしてから作業してたが、
$ sudo sh -c genfstab -U /mnt >> /mnt/etc/fstab
sudoで-cオプション付きのshコマンドを使えばリダイレクトもroot権限になるらしい。

Perlでファイルの部分置換ってどうやるんだ?

前にSC-02Cのi9100用ROMのGPS対応させる方法で、
変更箇所を探して置換するPerlスクリプトを作ろうとしたら、
Perlでseekしてprintすると置換じゃなくて挿入になっちゃうんで、そこまで必要も感じてなかったから放置してた。

で、ddコマンドで部分書き込みしたら特定部分だけ置換できるよね?
って思ったので、ちょっとやってみた。
$ system("echo -en '\xFC' | dd of=file conv=notrunc bs=1 seek=$p[$i]");
こんな感じでechoの出力をパイプでddに渡してやった。
普通に目的の位置だけ置換できた。
$p[$i]が目的のアドレス。
echoで-enすると、eでエスケープシーケンスを出力できるのでバイナリ出力ができる。nは改行出力をしない。
ddはifがなければ標準出力から入力になるのでパイプで渡せる。conv=notruncしないと書き込み位置より後ろが消えちゃうらしい。

あと、
$ cmp -l file1 file2
で2ファイルの違う位置を10進で出力。
目的箇所以外変わってない。

xfce4-taskbar-plugin

Xfceにxfce4-taskbar-pluginってのがあるんだが、
これ普通のタスクバーと思ってて試したことなかったがアイコンタスクだわ。

  • マウスオーバーでのプレビュー機能はない。
  • 開いてるウインドウと開いてないランチャーの見分けが全くつかない。
  • パネル幅が50pxを超えると強制的に2列表示になっちゃう。
って点でKDEのIcons-only Task Managerと比べるといまいちだが、
これ使えばXfceでもサイドパネルで妥協できるレベルの使い勝手になりそう。
Archの公式リポジトリにないけど、dockbarxと違って一応Xfceの公式のpluginぽいし。

デバイス番号が変わっちゃってリブート後にファンコントロールができない件

先日のlm_sensorsでファンコントロールの記事のコメント欄に再起動するとデバイス番号が変わっちゃったと書いたが、
再起動するたびに毎回デバイス番号が変わっちゃう・・・

というわけなので対策した。

k10tempがCPUの温度情報なのだが、fam15h_powerとデバイス番号が毎回入れ替わっちゃうわけで、
/etc/modprobe.d/blacklist.conf
blacklist fam15h_power
とfam15h_powerをブラックリストに入れてカーネルドライバを無効にした。

これで確実にk10tempがhwmon0になる。

QEMUでOEMのWindowsを起動する実験

実際にクリーンインストールするのはめんどいし、WindowsのVMイメージをqcow2化すると容量もったいないのとsmbios以外でライセンス弾かれそうな気がしてめんどいので、
smbiosの変更の実験をArch Linuxのイメージで試してみた。

以前行ったVirtualboxへのWindows(OEM版)のインストールに関する記事を参考に。
手元にあるOEMのWindowsは東芝のノートPCから抜き取ったやつだが、これ起動させるのに dmidecode コマンドで確認できるSMBIOSの情報を書き換える必要がある。
以前の記事ではVirtualboxでやったが今回はQEMUでのSMBIOSの変更。

今回の実験で変更する必要があるのは、
DMI type 0
Vendor: TOSHIBA
DMI type 1
Product Name: dynabook Satellite B450/B
Serial Number: XXXX
UUID: XXXX
SKU Number: 0000000000
Family: 0000000000
の6項目。
メーカーによってインストール時にチェックされる項目は違う。

ゲストOS上でdmidecodeが使えればいいのでArch Linuxを使ったが、インストールするのも面倒なのでVirtualboxのvdiイメージをqcow2に変換した。
$ qemu-img convert -f vdi -O qcow2 ArchLinux.img ArchLinux.qcow2
VDI→QCOW2の変換は簡単。

$ qemu-system-x86_64 -enable-kvm -m 2G -boot c -hda ArchLinux.qcow2
QEMUで起動。
以前はqemuコマンドがあった気がするのだが、最近はqemu-system-x86_64コマンドしか無い?
まあ、これで起動した。
ネットワークは設定無しでユーザーモードネットワークが有効になってる。(ICMP無効なのでpingコマンドは使えない)

起動して、マウスカーソルなんかは普通にシームレスになってるんだが、グラフィックが遅い感じ。
$ qemu-system-x86_64 -enable-kvm -m 2G -boot c -hda ArchLinux.qcow2 -vga qxl
-vga qxlオプションをつけて起動して、ゲストに xf86-video-qxl を入れて再起動した。
速くなった。
qxlは2Dサポートのある準仮想化グラフィックらしく、Virtualboxより速いかもしれん。
ホストと全く遜色ない感じで動く。

dmidecode をインストールして確認したが、
Vendor: SeaBIOS
Product Name: Standard PC (i440FX + PIIX, 1996)
Serial Number: Not Specified
UUID: Not Settable
SKU Number: Not Specified
Family: Not Specified
こんなんなってた。

-smbios type=0[,vendor=MYVENDOR ][,version=018][,date=07/06/2009][,release=%d.%d]
-smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str][,uuid=uuid][,sku=str][,family=str]
こんな感じのオプションをつけてQEMUを起動すれば変更できるぽい。
type0とtype1は別々に書く必要があるぽい?

$ qemu-system-x86_64 -enable-kvm -m 2G -boot c -hda ArchLinux.qcow2 -vga qxl -smbios type=0,vendor=TOSHIBA -smbios type=1,product="dynabook Satellite B450/B",serial=XXXX,uuid=XXXX,sku=0000000000,family=0000000000
これで起動して dmidecode で確認してみた。
期待通りに変わってた。
Virtualboxの時はskuとfamilyをstring指定しないと数値になっちゃってたが、QEMUの場合は全部stringになるぽい。
スペースが含まれる項目だけクォートで囲む。

割と簡単ね。
Virtualboxの場合はVBoxManage setextradataコマンドでVMに対して設定する必要があるが、
起動オプションで指定できるからQEMUの方が簡単かも。

これでたぶんリカバリー領域やリカバリーディスクからクリーンインストールできそうだが、
インストール済みのディスクイメージ使うと他のハードウェア構成で弾かれそうな気がする・・・

刻みたばこ って半税なんだね

紙巻きタバコは1本あたりの課税で、紙巻き以外は1gが紙巻き1本相当で課税される。
という認識だったので、前からなんで超長いタバコ出さないんだ?

って思ってたので調べてみたが、
タバコの長さに関する税金に関する情報は見つからなかったのだが、
ここ見て知ったが、刻みたばこは 2g=1本 なんだね。
あと噛みたばこと嗅ぎたばこも2gで1本。
刻みは煙管用の葉っぱだが何故か手巻き用やパイプ用と税金違う。

というわけで刻みたばこの製品調べてみたが、
小粋と宝船の2種しか無い?
小粋が10gで380円。
宝船が20gで500円。
宝船が紙巻きと同程度の価格で、小粋に至っては紙巻きより高いんですが・・・

というか、手巻き用葉の分類がないな。
紙巻きより高いけど、もしかして手巻き葉って1gじゃなくて2gで1本?

仮想通貨のマイニングをやってみた

今更ながら、仮想通貨のマイニングをやってみた。
仮想通貨だとビットコインが一番有名だが、Bitcoinのマイニングは専用機械でやってる参加者が多く普通のPCでは厳しいらしいし、
1コインの価値が高いことを考えると1未満の小さい数字しか得られないのは間違いないから価値の安い通貨でやることにした。
BitZenyというのが普通のCPUで不利になりにくいらしく価値も安く日本語情報も多かったのでそれにした。

仮想通貨のマイニング方法は、
  1. 1人でやる。(ソロマイニング)
  2. 大勢でやって分割する。(プールマイニング)
  3. 設備投資して配当を得る。(クラウドマイニング)
の3種類あるらしい。
今回はマイニングを実際に経験してみたいので3のクラウドマイニングは除外で、
ソロマイニングではなかなか成果が出せないとのことでプールマイニングをすることにした。

BitZenyに対応したプールを探したが、
管理人ブログで日本語情報が得られそうだったのでうさぎコイン発掘所ってところにした。

プールのアカウント作成には、
  • アカウント名
  • ログインパスワード
  • メールアドレス
  • PIN
の4つが必要。
PINはまだ使ってないが4桁の数字で後で必要になるらしい。
通貨を預けることになるのでログインパスワードは普通に高強度のものにした。

さらに、ワーカーを作成する。
  • ワーカー名
  • パスワード
を設定。
ワーカー名は自分の所有機器のうち1つを識別するような名前なのでpcとか簡単な名前でいいと思う。スペースは入れれなかった。
パスワードも覚えられるような簡単なものにした。

マイニングするためのアプリを用意するが、
BitZenyのマイニングはyescryptというアルゴリズムらしく、
AURにyescryptに対応したcpuminer-multiというパッケージがあったので試してみたが、cpuminer-multiでyescryptを指定すると、
accepted: 0/3 (0.00%), 0.75 kH/s booooo
てな感じで出て承認されない。

どうもBitZenyのアルゴリズムはyescryptを名乗るが独自のものらしく、専用アプリでないとマイニングできないぽい。
BitZeny公式サイト?のリンク先に.gitがあるんでそっちを使うことにした。
Linux用のバイナリも用意されているが、32bit版?動かなかったのでREADME読んでmakeした。
$ git clone https://github.com/bitzeny/cpuminer.git
$ cd cpuminer
$ ./autogen.sh
$ ./configure CFLAGS="-O3 -march=native -funroll-loops -fomit-frame-pointer"
$ make
CPUに最適化される?出来上がったバイナリを別CPUで使ったら動かなかった。
CPU毎にビルドする必要があるぽい。

お試しなんでinstallはしないでその場でminerdを使うことにした。
$ ./minerd -a yescrypt -o stratum+tcp://bitzeny.bunnymining.work:19332 -u user.worker -p password
赤文字のところはプールに登録した自分のアカウント名とワーカー名とワーカーパスワード。
-oオプションはプールのURLだが、管理人ブログに記載のものが間違ってて繋がらなかった。
プールの公式サイトに正しいアドレスが記載されてた。
しばらく実行してると、
accepted: 1/1 (100.00%), 0.70 khash/s (yay!!!)
の様な感じで出力されると成功して、プールのサイトのダッシュボードにある残高(Balance)のところが増えていく。
cpuminer-multiだとboooooしか出なかったが、公式のminerdだと全部(yay!!!)な感じだった。

lm_sensorsでファンコントロール

今のPCってBIOSにファンコン機能ついてるからPCでファンコンとかしなくなってたが、
仮想通貨のマイニングやってみたら60度越えちゃってたんでlm_sensorsでファンコントロールすることにした。

まず、元々のBIOSのファンコン設定だが、
CPUファンが自動でケースファンが50%出力で固定の設定だった。
ケースファンが回転数上がらない設定だったから、ケースファンが全力出せばもうちょい下げれそう。

BIOSのファンコン設定はlm_sensorsのファンコン設定した後に無効にしたが、そしたらlm_sensorsのデバイス番号が変わっちゃった。
BIOSのファンコンは事前に無効(固定)にしておいた方が良さそう。

lm_sensorsはインストールして、
$ sudo sensors-detect
で全部Enterした。
$ sensors
で温度やファンスピードが見れる。

ちなみに、メーカー製のPC使う人はわからないんじゃないかと思うが、
CPUのファンは普通標準のだから問題ないが、ケースファンは回転数検知できるファンを対応コネクタにつけてないと制御できない。
今回のPCはケースファンコネクタ1個でPWMファン分岐ケーブル使って2ファンを一緒に制御できるようにしてある。

ファンコン設定
$ sudo pwmconfig
# pwmconfig revision $Revision$ ($Date$)
This program will search your sensors for pulse width modulation (pwm)
controls, and test each one to see if it controls a fan on
your motherboard. Note that many motherboards do not have pwm
circuitry installed, even if your sensor chip supports pwm.

We will attempt to briefly stop each fan using the pwm controls.
The program will attempt to restore each fan to full speed
after testing. However, it is ** very important ** that you
physically verify that the fans have been to full speed
after the program has completed.

Found the following devices:
   hwmon0 is k10temp
   hwmon1 is fam15h_power
   hwmon2/device is f71808a
   hwmon3 is radeon

Found the following PWM controls:
   hwmon2/device/pwm1           current value: 255
   hwmon2/device/pwm2           current value: 255
   hwmon2/device/pwm3           current value: 127

Giving the fans some time to reach full speed...
Found the following fan sensors:
   hwmon2/device/fan1_input     current speed: 4373 RPM
   hwmon2/device/fan2_input     current speed: 2431 RPM
   hwmon2/device/fan3_input     current speed: 0 ... skipping!

Warning!!! This program will stop your fans, one at a time,
for approximately 5 seconds each!!!
This may cause your processor temperature to rise!!!
If you do not want to do this hit control-C now!!!
Hit return to continue:
pwmconfigコマンドの使い方がわかりにくかったが、
まずデバイス名が表示される。
hwmon0がk10tempなんで名前的にCPUなのがわかる。(AMDの場合)
BIOSのファンコン有効にしてた時はk10tempがhwmon0じゃなかった。
そして、hwmon2/device/fan3_inputはファンスピードが検知できてない。(ファン繋いでないし、PWMじゃないコネクタと思う。)
hwmon2/device/fan1_inputとhwmon2/device/fan2_inputは検知できてるが、番号的にも速度的にも1がCPUファンで2がケースファン。

なので、今回制御するファンは、
hwmon2/device/fan1_input ←CPUファン
hwmon2/device/fan2_input ←ケースファン
対応するPWMは、
hwmon2/device/pwm1とhwmon2/device/pwm2。
温度はhwmon0のCPU以外にhwmon2/device is f71808aにも温度計が2箇所ついてるが、
どっちのファンもCPU温度で制御することにした。

Testing pwm control hwmon2/device/pwm1 ...
  hwmon2/device/fan1_input ... speed was 4373 now 4249
    no correlation
  hwmon2/device/fan2_input ... speed was 2431 now 2521
    no correlation

No correlations were detected.
There is either no fan connected to the output of hwmon2/device/pwm1,
or the connected fan has no rpm-signal connected to one of
the tested fan sensors. (Note: not all motherboards have
the pwm outputs connected to the fan connectors,
check out the hardware database on http://www.almico.com/forumindex.php)

Did you see/hear a fan stopping during the above test (n)?
pwmconfigの続きでEnter押すと先に進む。
何言ってんだかわからんが、ここで「y」にするとhwmon2/device/pwm1が制御対象になる。
次はhwmon2/device/pwm2の確認になるので再度「y」。
hwmon2/device/pwm3は制御できないので「n」。(yでも無効設定なだけで問題はないのかも?)

Testing is complete.
Please verify that all fans have returned to their normal speed.

The fancontrol script can automatically respond to temperature changes
of your system by changing fanspeeds.
Do you want to set up its configuration file now (y)?
What should be the path to your fancontrol config file (/etc/fancontrol)?
Loading configuration from /etc/fancontrol ...

Select fan output to configure, or other action:
1) hwmon2/device/pwm2  3) Change INTERVAL     5) Save and quit
2) hwmon2/device/pwm1  4) Just quit           6) Show configuration
select (1-n):
制御対象のファンを選択し終わったら、またしても何言ってんだか・・・
だが、1と2には選択したPWMが表示されてるので、この2つを設定。

Devices:
hwmon0 is k10temp
hwmon1 is fam15h_power
hwmon2/device is f71808a
hwmon3 is radeon

Current temperature readings are as follows:
hwmon0/temp1_input      47
hwmon2/device/temp1_input       128
hwmon2/device/temp2_input       48
hwmon3/temp1_input      46

Select a temperature sensor as source for hwmon2/device/pwm1:
1) hwmon0/temp1_input
2) hwmon2/device/temp1_input
3) hwmon2/device/temp2_input
4) hwmon3/temp1_input
5) None (Do not affect this PWM output)
select (1-n):
デバイスと取得可能な温度計が表示される。
今回はk10temp(CPU温度)で制御するんで正解は「1」
hwmon2/device/pwm2の方も同じく設定して、
5) Save and quitすると制御温度と回転数聞いてくるが、とりあえず全部Enter。
/etc/fancontrolに設定ファイルが出来上がる。

# Configuration file generated by pwmconfig, changes will be lost
INTERVAL=10
DEVPATH=hwmon0=devices/pci0000:00/0000:00:18.3 hwmon2=devices/platform/f71882fg.2560
DEVNAME=hwmon0=k10temp hwmon2=f71808a
FCTEMPS=hwmon2/device/pwm1=hwmon0/temp1_input hwmon2/device/pwm2=hwmon0/temp1_input
FCFANS=hwmon2/device/pwm1= hwmon2/device/pwm2=
MINTEMP=hwmon2/device/pwm1=20 hwmon2/device/pwm2=20
MAXTEMP=hwmon2/device/pwm1=60 hwmon2/device/pwm2=60
MINSTART=hwmon2/device/pwm1=150 hwmon2/device/pwm2=150
MINSTOP=hwmon2/device/pwm1=100 hwmon2/device/pwm2=100
できあがった設定ファイルだが、MINTEMPが20だと20℃超えるとファン回転数が上がり始める。
温度低すぎるんでMINTEMPは40にした。
パット見で全くわからん設定ファイルだが、考えながらじっくり見ればなんとなく・・・

MINTEMP設定温度以下でファン最低出力。
MAXTEMP設定温度以上でファン最高出力。
その間は徐々に変わっていく感じ。
数値は℃。

PWMはMAXが255。
MINSTOPが最低値だが、回転数が低すぎるとモーターは回れないので0に近いと止まる。止める運用もあるのかもしれないが。
MINSTARTは止まっちゃってる状態からの始動出力。止まってる時は慣性がないから始動にはパワーが必要。

サブ機のUSBメモリLinux作り直した

USBメモリに入れてサブ機として使ってたArch Linuxを以前買ったディスプレイに繋いで起動してみたが、壊れてて起動しなかった。
rootfsがマウントできない感じでfsckもできない状態だったがパーティションは生きてたんで再インストールした。
結構ハマったんでメモ。

パーティション(いじってないから前回の記事から引用)
USBメモリは今回も8GBのもので、
1番目を1GBのFAT32(USBメモリ用)
2番目を250MBのext2(/boot)
3番目を残り全部でF2FS(/)
パーティションはgdiskで編集したが、FAT32のcodeは0700ぽい。
/bootはジャーナリングのないext2。
とした。
だが、Xfce環境で6GBちょいだと余裕ない。
/bootは150MBくらいで良さそうな感じ。
1番目のFATはUSBメモリとしても使えるようにするためだが、他のUSBメモリもあるし、次の機会があれば500MBにしようかと。

母艦でインストール用のコマンドを使うのに arch-install-scripts が必要。
母艦上でインストールディスクと同じ様にインストールできる。
母艦壊したらヤバイからインストール先を間違えないように。

/boot が別れてるので / と /boot を両方 mount してインストール作業する。

前回のメモでGRUBのインストールが
# grub-install --force /dev/sdf
となってたが、 /boot が別れてる場合は、
# grub-install --force --boot-directory=/boot /dev/sdf
--boot-directoryを指定しないとkernelがロードできないし、F2FSはUUIDでロードできないがUUIDでgrub.cfgが出来上がっちゃうぽい。
さらに、この場合rootfsは/dev/sdf3でgrub.cfgが出来上がるが、USBメモリ以外にストレージつけないからsda3になるので要編集。

前回のメモと同じだが、
/etc/mkinitcpio.confの HOOKS から始まる行の udev の次にblock を追加しないと多分ダメ。
USBメモリの初期化が遅いから、これしないとrootfsがマウントできない。
編集したら、
# mkinitcpio -p linux
でinitramfsの生成。
前回のメモによると、この後にgrub-mkconfigする必要があるらしい。


まあ、それで起動した。