gentoo

JBL Pebbles 買っちゃった

色々と評判の良いJBL Pebblesですが… gentooの場合、ただ単にusbに突き刺しただけでは動かないと思います。まず、ドライバーをインストールします。 PulseAudioは強力です。そして、JBL Pebblesのようなチャラいデバイスを使いたがるようなユーザーにはX Win…

家族用のPCのグラボが飛んでしまったようで、外さないとBIOSも上がらなくなってしまった。マザーがM2Vで、unichrome-proな内蔵グラフィックがあるので、これを使えないか試してみた所、案外簡単に動いてしまったのでメモ。Loading...をみると、svnを使ってソ…

昨日の続き

http://d.hatena.ne.jp/dwarfjay/20131002/1380710917の続きです。世の中にはxargsというのがあることを思い出しました。perlなら、 ldd /sbin/e2fsck | perl -wnle '/(\/lib\d*\/[\w-]+\.so\.*[\d\.]*)/ and print $1' | xargs cp -vLt . awkなら、 ldd /sb…

perlを使ったらどうなる?

http://d.hatena.ne.jp/dwarfjay/20131002/1380699244を、perlを使ったらどうなるかというと。 ldd /sbin/e2fsck | perl -wne '/(\/lib\d*\/[\w-]+\.so\.\d*)/ and printf "cp -L %s .\n",$1;' というわけで、こっちでもいいな。

AWKが便利すぎて泣ける

initramfsを使ってLVM上のパーティションをルートにしている。あまりにも素朴な自作initramfsにはfsckすらなかったのだが、500回以上もfsckなしでルートをマウントしていたという事実が判明。これではイカンということで、initramfsでfsckできるようにしよう…

バックアップをとろう(その4)

http://d.hatena.ne.jp/dwarfjay/20110610/1307704454の改造ネタ続きです。外部コマンドを呼ぶ時に、あらかじめ引数リストを定義しておいて、 predefined_command=['ls','-l'] call(predefined_command) としていたのですが、main関数を分割することしたので…

作ったモジュールを使ってみる

早速、モジュールを使ってみる。まずは、http://d.hatena.ne.jp/dwarfjay/20110612/1307889365から。えーと、pythonで。rmss.py #!/usr/bin/python # -*- encoding: utf-8 -*- import sys import re from subprocess import Popen,PIPE,call from os import …

/etc/fstabの情報を管理するモジュールを作る

/etc/fstabの情報を管理するモジュールを作ってみることにしました。perlでのモジュールの作り方は知らないので、まずpythonで。とりあえず、必要なインターフェイスは、パーティション名 → デバイスノード パーティション名 → マウントポイント パーティシ…

バックアップをとろう(その3)

バックアップをとろうシリーズの続きです。今使っているPCには、/dev/eltro(raid10)と/dev/raid5(raid5)の二つの論理ボリューム があります。これまでは、eltroの方をメインで、raid5の方はバックアップとして使っていました。しかし、ベンチマークを取るとr…

ショックだ…

ミニマルperlを読んだところ、http://d.hatena.ne.jp/dwarfjay/20110610/1307670622のスクリプトは極めて冗長だということが判った。これでどーだ。 #!/usr/bin/perl -w use strict; foreach (@ARGV) { my $device = "/dev/eltro/$_"; my @result = `lscp -s…

Linuxのレイドをブートパーティションとして利用する

リナックスで、raidなパーティションを/bootで利用するには、2つの方法がある。 1. grub legacy を捨てて、grub2を使う 2. grub legacy を使い続ける代りに、raidのメタデータをv0.9にする metadata 0.90では、raid-devicesの数や、パーティションの容量(2T…

バックアップをとろう(その2)

ちょっと長いけど、ここまでで出来上がったソース backup.py #!/usr/bin/python # -*- coding:utf-8 -*- import sys from subprocess import call,Popen,PIPE import os def main(): """ 文字列変数 partition バックアップ対象となる論理ボリューム名や 物…

もうちょっとperlっぽく書きなおし

http://d.hatena.ne.jp/dwarfjay/20110602/1307021854のスクリプトをちょっと修正。 #!/usr/bin/perl use strict; use warnings; foreach (@ARGV) { my $device = "/dev/eltro/$_"; my @result = `/usr/bin/lscp -ss $device`; foreach (@result) { my @sp =…

pythonで環境変数を取得したり、ディレクトリを作成したりする

http://d.hatena.ne.jp/dwarfjay/20110603/1307103419の改造ネタの続きです。このスクリプトは、crontabの中で、 @hourly /root/backup.py home @daily /root/backup.py boot gentoo として動かしていたのですが、'backup.py'のプロセスを二つ同時に動かした…

pythonで自分自身の実行ユーザーIDを取得する

http://d.hatena.ne.jp/dwarfjay/20110603/1307103419の改造ネタの続きです。 自分を実行しているユーザーのidを調べるのは、実は非常に簡単で、os.getuid() を呼べばいいだけのようです。早速、昨日書いたコードを直します。 from os import getuid """ boo…

pythonのリストを使って富豪的プログラミング!

バックアップをとろう(その1) - La coda de la corsaの改造ネタの続きです。今回は、スクリプトをルートで起動するのと通常ユーザーで起動する時とで動作を変えたいと思います。具体的には、 ルートで実行する時は現状でOK ノンルートで実行する時は、rsyn…

pythonのリストはすごい

バックアップをとろう(その1) - La coda de la corsaのシェルスクリプトをもうちょっと高機能にしようということで、pythonを使って書きかえています。今回は、for文とリストについて。例のスクリプトは、バックアップを取るボリュームをソースで決めうち…

pythonで外部コマンドを実行する

os.system("文字列")は古いコードで推奨されないらしい。代りにsubprocess.Popenを使うのがよいそうだ。さらに、subprocess.Popenには、subprocess.callというラッパー関数があるので、これを使えばさらにコードが簡単になる。単に外部コマンドを実行する場…

vimを使って、pythonソースを編集する時便利な小技

vimを使って、pythonのソースを編集している時に、便利だなと感じた使い方アレコレ。 インデントを操作する 編集モードで、'>'で一段字下げする。' 行末の改行 pythonでは、インデントする直前の行は':\n'で終っていないといけないみたいなのだが、ごちゃご…

バックアップをとろう(その1)

これまでは、バックアップをとるのに、いちいち手作業でマウントしてコピーするのを繰りかえしてきたのだが、さすがに面倒くさくなってきたので、自動でバックアップするコトにした。まず仕様としては、1.コピー元 /dev/eltroというボリュームグループに、そ…

溜ったスナップショットを削除する(python)

シェルスクリプトで書くのが一番簡単だった、というオチ #!/usr/bin/python from subprocess import Popen, PIPE import sys def main(): ---- for i in range(1, len(sys.argv)): >-------TARGET_DEVICE = "/dev/mapper/" + sys.argv[i] cmd=["/usr/bin/lsc…

溜ったスナップショットを削除する(perl)

perl版 #!/usr/bin/perl use strict; use warnings; foreach (@ARGV) { my $device = "/dev/mapper/$_"; my @result = `/usr/bin/lscp -ss $device`; foreach (@result) { my @sp = split; if (@sp[0] =~ /[0-9]+/) { print "/usr/bin/chcp cp $device ",@sp…

溜ったスナップショットを削除する

これまでのマトメ/をraid0にする ↓ HDDが死ぬこともあるかもしれないからバックアップをしっかりしよう ↓ LVMのスナップショットがイマイチ使いにくいから、nilfsを使うよ! ↓ nilfsのスナップショットが溜ってきた ←イマココというわけで、 #! /bin/sh for …

/をraid0にしたら、とても快適になった

騙されたと思って、/をraid0にしたら、とてつもなく快適になりました。hdd2台使ってる人にはオススメです。linuxの場合は、特別なハードウェアを用意しなくても、気軽にraidを試せるのはポイント高いです。参考にしたのは、http://en.gentoo-wiki.com/wiki/R…

日本語manの文字化け

/etc/man.confで JNROFF nkf -e | /usr/bin/groff -DeucJP -mandoc -T utf8 としてやればok

興味があったので、cpとtarとrsyncで、どれが一番速いのか比べてみた。

/usr/portageを、/mnt/backupに丸ごとコピーしてタイムを計測した。 結果は、以下の通りcp: ( cp -av /usr/portage /mnt/backup; ) 3.93s user 22.52s system 14% cpu 3:06.63 totaltar: ( tar cpf - -C /usr/portage . | tar xvpf - -C /mnt/backup; ) 2.29…