ラベル linux の投稿を表示しています。 すべての投稿を表示
ラベル linux の投稿を表示しています。 すべての投稿を表示

2015年6月28日日曜日

HPサーバーのSSACLI(Smart Storage Administrator CLI)

RHELやCentOSにインストールしてやって、RAIDの構成や物理ドライブの情報をコマンドで調査できる(Windowsでもできると思う)

# hpssacli

=> controller all show

Smart Array P222 in Slot 4                (sn: xxxxxxxxxxxxxxxx)

=> controller slot=4 logicaldrive all show

Smart Array P222 in Slot 4

   array A

      logicaldrive 1 (931.5 GB, RAID 1, OK)

=> controller slot=4 physicaldrive all show

Smart Array P222 in Slot 4

   array A

      physicaldrive 2I:1:1 (port 2I:box 1:bay 1, SAS, 1 TB, OK)
      physicaldrive 2I:1:2 (port 2I:box 1:bay 2, SAS, 1 TB, OK)

=> quit

とても便利。めったに使わないのでコマンドをすぐ忘れそう。

2015年5月6日水曜日

出力をクリップボードにリダイレクトする方法(clip, xclip)

Windows で作業をしていて初めて知った("clip"コマンド)。Linux/Unix の世界にも同様のコマンドがあった("xclip")。知ってよかった。

C:\Users\foo>date /T | clip

2015年2月22日日曜日

Fedora Live USB Creator: "vesamenu.c32: not a COM32R image"

Fedora 21 Workstation の ISO と liveusb-creator をダウンロードしてWindows 8.1 を使ってブータブルUSBを作ってみたものの、次のメッセージが出て起動しなかった。(BIOS環境の場合のみ。UEFIの場合は問題なかった)


vesamenu.c32: not a COM32R image
boot:

この症状は、USBの中にあるSYSLINUXの設定ファイル、具体的には /syslinux/syslinux.cfg をほんの少しだけ変更してあげれば治った。

変更前の /syslinux/syslinux.cfg:
default vesamenu.c32
timeout 100
...
変更後
default linux0
timeout 100
...

こちらに書いてあるように、プロンプトでTabキーを押してイメージの候補を表示する、という方法もある。が、キーボード押したくない場合には syslinux.cfg を編集すればよい。



2013年11月5日火曜日

FUSEの例(archivemount で tgz をマウントしてみる)

とあるAndroidスマホの中を見ていたら、ディレクトリの一部が「fuse」という謎のファイルシステムを使っていることに気がついた。初耳だったので調べてみると、LUKSをもっと手軽にしたようなものらしい(FUSEとLUKSを比較している記事がいくつかみつかった)。

ネットで紹介されているFUSEの利用例はたいていリモートホストのファイルをセキュアにSSHFSとしてマウントするものなので、ここでは矮小というか卑近というか要するにあまり役に立たない例としてローカルホストにあるアーカイブ(tgz)を読み書きする例にした。


1. 環境
Fedora release 19 (Schrödinger’s Cat)
ただし、「archivemount」というパッケージを yum でインストールした。
2. rootで、何でもいいからテキストファイルをつくってアーカイブ化(ファイル名:/root/work.tgz)
[root@localhost ~]# cd
[root@localhost ~]# mkdir work; for i in foo bar baz; do echo $i > work/$i.txt; done
[root@localhost ~]# ll work; cat work/*
total 12
-rw-r--r--. 1 root root 4 Nov  5 01:43 bar.txt
-rw-r--r--. 1 root root 4 Nov  5 01:43 baz.txt
-rw-r--r--. 1 root root 4 Nov  5 01:43 foo.txt
bar
baz
foo
[root@localhost ~]# tar cvzf work.tgz work/
work/
work/bar.txt
work/baz.txt
work/foo.txt
3. 共有用として /var/local/ の下に fuse というディレクトリを作り、/etc/fstab にマウントの設定を追加。
[root@localhost ~]# mkdir -p /var/local/fuse
[root@localhost ~]# cp /etc/fstab{,.orig}
[root@localhost ~]# echo '/root/work.tgz /var/local/fuse fuse.archivemount defaults,allow_other' >> /etc/fstab
この fstab のポイントは、ファイルシステムのタイプを「fuse.archivemount」にすることとオプションに「allow_other」を加えることの二点。
4. fstab の設定にしたがって mount してみる('-a'オプション)
[root@localhost ~]# mount -a
5. マウントされた内容を df と ls で確認
[root@localhost ~]# df
Filesystem               1K-blocks    Used  Available Use% Mounted on
/dev/mapper/fedora-root   28244124 9058868   17743876  34% /
devtmpfs                   1015516       0    1015516   0% /dev
tmpfs                      1022324     148    1022176   1% /dev/shm
tmpfs                      1022324     964    1021360   1% /run
tmpfs                      1022324       0    1022324   0% /sys/fs/cgroup
tmpfs                      1022324    2664    1019660   1% /tmp
/dev/sda1                   487652   83857     378195  19% /boot
archivemount            1048576000       0 1048576000   0% /var/local/fuse
[root@localhost ~]# ll /var/local/fuse/work
total 0
-rw-r--r--. 0 root root 4 Nov  5 01:43 bar.txt
-rw-r--r--. 0 root root 4 Nov  5 01:43 baz.txt
-rw-r--r--. 0 root root 4 Nov  5 01:43 foo.txt
6. 一般ユーザー(ここでは u1 とする)で、マウントしたディレクトリに読み書きしてみる。
[u1@localhost ~]$ id
uid=1001(u1) gid=1001(u1) groups=1001(u1) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[u1@localhost ~]$ cd /var/local/fuse/work
[u1@localhost work]$ echo hoge > hoge.txt
[u1@localhost work]$ ll
total 0
-rw-r--r--. 0 root root 4 Nov  5 01:43 bar.txt
-rw-r--r--. 0 root root 4 Nov  5 01:43 baz.txt
-rw-r--r--. 0 root root 4 Nov  5 01:43 foo.txt
-rw-r--r--. 0 root root 5 Nov  5 01:44 hoge.txt
[u1@localhost work]$ vi bar.txt    # ファイル内の文字列「bar」を「bar2」と書き換えるだけ
[u1@localhost work]$ ll
total 0
-rw-r--r--. 0 root root 5 Nov  5 01:44 bar.txt
-rw-r--r--. 0 root root 4 Nov  5 01:43 baz.txt
-rw-r--r--. 0 root root 4 Nov  5 01:43 foo.txt
-rw-r--r--. 0 root root 5 Nov  5 01:44 hoge.txt
[u1@localhost work]$ rm baz.txt    # ファイルを削除
[u1@localhost work]$ ll
total 0
-rw-r--r--. 0 root root 5 Nov  5 01:44 bar.txt
-rw-r--r--. 0 root root 4 Nov  5 01:43 foo.txt
-rw-r--r--. 0 root root 5 Nov  5 01:44 hoge.txt
7. アンマウントして、アーカイブの中身が変更されているか確認
[root@localhost ~]# umount /var/local/fuse
umount: /var/local/fuse: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
[u1@localhost work]$ cd    # u1 の存在で umount が失敗したので cd する
[root@localhost ~]# umount /var/local/fuse
[root@localhost ~]# mv work{,.orig}    # もともとのアーカイブをリネーム
[root@localhost ~]# tar xf work.tgz    # fuse.archivemount 経由で変更したアーカイブを展開
[root@localhost ~]# diff -uwbr work.orig work    # diff をとってみる
diff -uwbr work.orig/bar.txt work/bar.txt
--- work.orig/bar.txt 2013-11-05 01:43:39.096153269 +0900
+++ work/bar.txt 2013-11-05 01:44:38.000000000 +0900
@@ -1 +1 @@
-bar
+bar2
Only in work.orig: baz.txt
Only in work: hoge.txt
差分は期待どおり。これでOK.

2012年9月14日金曜日

CentOS-6 で使われているTCPの輻輳制御アルゴリズム

/procを使って読み書きができた。CentOS-6(kernel 2.6.32-279)では"CUBIC"がデフォルトになっている模様。

# cat /proc/sys/net/ipv4/tcp_congestion_control
cubic

選択肢としては、"reno"もある。

# cat /proc/sys/net/ipv4/tcp_available_congestion_control
cubic reno

2012年9月10日月曜日

CentOS-5 起動スクリプトのスケルトン

'/etc/init.d/' に入れるスクリプトを書こうと思ったとき、そのひな形(スケルトン、テンプレート、等々)を求めてついインターネットを検索してしまう。しかし、無駄にエネルギーを消費する必要はない。システムにあらかじめインストールされているのだった。

そのパスは、'/usr/share/doc/initfiles-x.y.z/sysvinitfiles' のあたり(CentOS の場合)。

2012年9月6日木曜日

Linuxで使用されているNICドライバを調べる方法2つ

いつもの方法
まずdmesgコマンドの出力から'eth0'や'eth1'を探してモジュール名を特定。モジュール名を引数としてmodinfoコマンドを実行し、バージョン等の詳細情報を知る。
今日知った方法
ethtoolコマンドの'-i'オプションを使う(参考URLのコメント欄に書いてあった)。modinfoみたいにたくさんの情報は出力されないが、バージョンとバスは把握できる。

2012年9月3日月曜日

RedHat, CentOS のリリースバージョンを知る方法

すごく簡単なことだけどなかなか覚えられないのでメモっておく。

例)cat /etc/redhat-release 
Red Hat Enterprise Linux Client release 5.2 (Tikanga)

2012年8月30日木曜日

yumdownloader:依存関係を満たすRPMをまとめてダウンロード

yumdownloaderというコマンドがあるんですね(特に'--resolve'オプションが便利)。

LinuxをインストールしたけどNICのドライバがあたらない。yum も使えない、といった状況で役に立つかな? つまり、ドライバのビルドに必要なパッケージを別の計算機でダウンロードして、USBメモリで移す、とか。。。

2012年8月17日金曜日

CentOS-6 の OpenLDAP 環境構築

CentOS-6.3 で LDAPサーバーを作ろうとしたところ、次のようなエラーが出てどうもうまくいかなかった:

  • ldap_bind invalid credentials (49) ldapsearch
  • bdb_db_open no such file or directory

ネットを探してみると、CentOS-6 での OpenLDAP について書いているブログが多数あった。つまりつまずくポイントが色々あるということか:

だが、これらの内容を俯瞰してみるとけっこうバラツキがあって、腑に落ちない感じがした。さらにしつこく探してみると、よく整理された英語のページがみつかった:

"Minimal"とうたっているだけあって必要十分な手順が書いてあり、要所でのテスト(設定途中での動作確認)も理解を助けてくれる。うちの CentOS-6.3 でもうまくいった。

2012年8月10日金曜日

grep -r で再帰的に grep

今日ではないけど最近知った。ずっと find ... | xargs ... を使っていた。

小さい、軽量な、Linux distribution

Small で light weight な Linuxディストリビューション。

Webアプリとかそういうレベルではなくて、OS込みのプロダクトを、要するにハードウェアに直接インストールする形態の製品を提供したいときに使えるんじゃないかと思う。

2012年7月7日土曜日

Fedora のインストールメディアとUSBメモリ、Mac OS X で作る

今日、Fedora-17 をうちのPCにインストールした。CD-RW, DVD-RWメディアが手元になかったのでUSBメモリを使った。USBメモリへの書き込みには、MacBook(Mac OS X)を使った。ただそれだけの話。しかしながら、いくつかの情報を必要としたのでメモしておく。


Fedoraをインストールするハードウェアは?

まずはハードウェア、なかでもCPUやマザーボードの仕様が分からないといけない。

CPUはAMD Phenom II 64bit で、マザーボードは ASRock の 880GM-LE。このマザーボードは BIOS を使っているモデル(UEFIではない、という点が重要)。

※ASRockのマザーボードAMD8シリーズのリストはこれ:ASRock AMD8


どのファイルをダウンロードすればよいか?

Fedora の場合、「Full Distribution」, 「Live Image」,「Minimal Boot Media」の3つの選択肢がある。今回は、必要なパッケージをあとから追加するスタイルでゆくから Minimal Boot Media がいい。

Minimal Boot Media のISOファイルは「boot.iso」という名前で配布されており、今回はこれで十分。一方、対象のマザーボードがUEFIを使用している場合は注意が必要で、「efiboot.img」を Full Distribution の中から抽出しなければならないらしい。

boot.iso は配布用サーバーの「fedora/linux/releases/17/Fedora/arch/os/images/boot.iso」といったパスに配置されている。


USBメモリにISOイメージを書き込む

MacにUSBメモリを挿して、ISOイメージを書き込む。Fedoraのドキュンメントにddコマンドを使った方法が掲載されているので、これに基づいてやればよい。Linuxを前提として書かれているが、Macにもddコマンドがあるのでそれほど大きな差はない(Mac OS X のコマンドである diskutil を使う点が異なる)。

2012年5月27日日曜日

NetHogs - プロセスごとのデータ転送量をtop風に表示

既存のネットワークアプリの転送量を調べるときに使ったソフト。サーバーでこの NetHogs を起動しておいて、クライアント側でアプリのシナリオとかユースケースを1つ実行。サーバーのほうの画面で何バイト送受信したかを見て記録しておく。「なるほどこのシナリオの場合はx[KB]くらい通信するのか」と、だいたいの数字が分かる。

特徴は、転送速度(KB/sec)だけでなく、転送量の累積値が表示されるところ。たぶん初期状態では KB/sec の表示になっているが、実行中に m キーを押せば表示モードが KB/sec, KB, MB, B とサイクリックに切り替わる。

インストールに関しては、libpcap と ncurses に依存している。今回の環境(CentOS-6.0)では、epelリポジトリから yum でインストールできたので特に問題無し。


表示の例

テキトーに sshd と apache にアクセスした場合のキャプチャを貼り付けておく。

まずは Byte単位の表示。

プロセスのIDごとに、USER, PROGRAM, DEV, SENT, RECEIVED が表示される。シンプル。

それから KB/sec 単位の表示。


2012年3月18日日曜日

ルーティングテーブル(FIB)、ルーティングキャッシュ

LinuxではルーティングテーブルのことをFIB(Forwarding Information Base)と呼ぶ。一度参照されたら routing cache にキャッシュされる。

これらを表示するコマンドは何通りかある。

route コマンド
# route -F
Kernel IP routing table
Destination     Gateway         Genmask          Flags Metric Ref      Use Iface
172.16.78.0     *               255.255.255.0    U     0      0          0 eth0
(略)
# route -C
Kernel IP routing cache
Source          Destination     Gateway         Flags Metric Ref   Use Iface
192.168.105.1   192.168.105.130 192.168.105.130 il    0      0      29 lo
(略)
netstat コマンド
# netstat -r
Kernel IP routing table
(略)
# netstat -rC
Kernel IP routing cache
(略)
ip コマンド
# ip route show
172.168.78.0/24 dev eth0  proto kernel   scope link  src 172.16.78.130
(略)
# ip route show cached
192.168.105.128 from 192.168.105.130 dev eth2
    cache  mtu 1500 advmss 1460 hoplimit 64
(略)

Netfilter Architecture

古いけどわかりやすいドキュメントが netfilter.org の HOWTO の中にあった。

NICとプロセス、ルーティングコードのあいだにフックが5個仕掛けてあって、通過するパケットに関数が作用する。

Linux netfilter Hacking HOWTO: Netfilter Architecture

次のドキュメントも参考になる。

Linux network stack walkthrough

2012年3月1日木曜日

dd コマンドでファイルを読み書き

ddコマンドはディスクのバックアップやダンプに使われることが多いので、コピー専用のコマンドだと思っていたことがある。

実際はそうではなくて、もっと軽い用途、たとえば標準入力から読み込んだ内容をファイルに書き込んだり、ファイルを読み込んで標準出力に出力したりすることもできる。


入力した内容をファイルに出力
'of'オプションで出力先を指定しつつ ddを実行すると入力待ちになる。そこで任意の文字とEOF(Ctrl-D)を入力すれば、ファイルができる。
$ dd of=hello.txt
hello, world
0+1 records in
0+1 records out
13 bytes transferred in 2.835518 secs (5 bytes/sec)
$ cat hello.txt
hello, world
$
ファイルの内容を表示
'if'でファイルを指定するだけ。
$ dd if=hello.txt 
hello, world
0+1 records in
0+1 records out
13 bytes transferred in 0.000138 secs (94173 bytes/sec)
$
ディスクなどのブロックデバイスファイルの場合も同様に表示できる。ただしサイズが大きいので 'bs' や 'count' オプションで調節する。
$ sudo dd if=/dev/disk0 bs=5 count=1  # MacOS requires root privilege to read /dev/disk0
?1???1+0 records in
1+0 records out
5 bytes transferred in 0.000334 secs (14969 bytes/sec)
$

2012年2月27日月曜日

iノード番号で find

findコマンドには、inode 番号を指定するオプション '-inum' がある。


find /root/ -inum 261232
/root/.bash_history

このオプションは、今日「SELINUXシステム管理」という本を読んで知った(アクセス拒否の際 audit.log に対象のファイルのinode番号が出力されるので、inode番号からファイルを検索できると便利だよ、との文脈で)。


2012年2月20日月曜日

SEAndroid - security-enhanced version of Android

先月(2012年1月)、"SEAndroid"というのがリリースされたらしい。SELinuxの機能をAndroidでも使えるようにしようという話なので、開発はNSA関係の人が中心に行っている模様。WikiサイトからダウンロードできるPDFに、いろいろと例が載っていた。


このニュースで初めて知ったけれど、Kernel の LSM(Linux Security Module)でAndroidをセキュアOS化する試みはすでにスマートフォンメーカーによって行われているらしい。たとえばSHAPR製のIS01に導入された "Deckard LSM" が一つの例(IS01は、root化に対して確かにセキュアだけど、LSM自体を無効にする方法が発見されてしまったらしい。。。)


今後SEAndroidが普及したら、SELinuxとおなじ効果が享受できるだろうか。ポリシーがきちんと書けていれば侵入攻撃を防御できるので、IDS的な機能を入れなくて済む、セキュリティホールにパッチやアップデートを急いで適用しなくて済む、など(ただしLSM無効化は無しの前提で)。