アフィリエイト広告を利用しています

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

Main_page

まとめのページ

ーーーーーー Linux ーーーーーー

LinuxKernelの取得(1) (2)

ファイルシステムの作成
外部journalの作成
e2fsprogsの取得 mkfsの出力
e2image e2undo  filefrag debugfs(1)

iozone(1) (2)

systemtapのテンプレート


ーーーーーーーーー 勉強 ーーーーーーーーー


英語学習hanaso

ーーーーーーーーー etc. ーーーーーーーーー

犬のトリマー

iozone( 1)

IOzoneはオープンソースのファイルシステムのベンチマークツールです。
OS問わず利用できます。Linux, Windows, OSX
ここから取得出来ます。



色々なオペレーションからファイルシステムの性能を測定します。
サポートしているオペレーションは下記の通りです。


read //readシステムコールでの読み込み
write //writeシステムコールでの書き込み
re-read //再読み込み
re-write //再書き込み
read backwards //バックグラウンドでの読み込み
read strided //シークして読み込み
fread //freadでの読み込み
fwrite //fwriteでの書き込み
random read/write  //ランダムなオフセットへのread/write
pread/pwrite variants  //pread/pwriteでの読み書き
aio_read  //非同期読み込み
aio_write   //非同期書き込み
mmap //mmapしたファイルを利用する



Linux上でIOzoneを実行する環境を整えるところから始めます。

1.source rpmの取得

トップページにある
"Download Source:"からソースrpmを取得します。


2.source rpmのインストール

ダウンロードしたsrc.rpmをインストールします。
rpmコマンドで下記のように実行します。



[root@localhost Down]# rpm -ivh iozone-3-373.src.rpm
1:iozone ########################################### [100%]
警告: ユーザ capps は存在しません - root を使用します
警告: グループ capps は存在しません - root を使用します



3.specのビルド

次はビルドします。/root/rpmbuild/SPECSへ移動し、
下記のコマンドを実行します。


[root@localhost SPECS]# rpmbuild -ba spec.in
実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.VuvhEN
+ umask 022
+ cd /root/rpmbuild/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ cd /root/rpmbuild/BUILD
+ rm -rf iozone3_373/src/current
+ /bin/tar -xvvf /root/rpmbuild/SOURCES/iozone3_373.tar
-r--r--r-- capps/capps 110248 2010-12-21 13:17 iozone3_373/src/current/Changes.txt
drwxr-xr-x Creating directory: iozone3_373/src/current
-r--r--r-- capps/capps 620230 2010-12-21 13:17 iozone3_373/src/current/iozone.c
-r-xr--r-- capps/capps 4268 2010-12-21 13:17 iozone3_373/src/current/report.pl



/root/rpmbuild/BUILDにiozoneのディレクトリが作成されていることがわかります。

[root@localhost BUILD]# ls
iozone3_373

さらに下のディレクトリ(/root/rpmbuild/BUILD/iozone3_373/src/current)へいくと
iozoneの実行ファイルがあります。


[root@linux current]# ll iozone
-rwxrwxr-x 1 root root 289428 2011-04-15 22:47 iozone


以上でiozoneが実行できる環境が整いました。
次回はiozoneのオプションについて紹介したいと思います。

iozone(2)

e2image




e2imageコマンドはe2fsprogsに含まているコマンドで、メタデータをファイルに書き出します。
ext2,ext3,ext4共通で利用出来ます。(kenrel: 2.6.39-rc1 e2fsprogs: 1.41.12)

e2image - ファイルシステムのメタデータをファイルに保存する


e2image [ -rsI ] device image-file

-r 通常のイメージファイルのかわりにraw imageファイルを作成する
raw imageファイルは通常のimageファイルとは2点異なる
1)メタデータが適切なオフセットに配置されることで
e2fsck, dumpe2fs, debugfsなどが直接実行できる
2)raw imageファイルは標準のイメージファイルが持っていない
indirect blockとdirectory blockを持っている(将来的には変更されるかも)

※1)の注意点として、このファイルをコピーや圧縮/非圧縮する場合
sparceファイルを理解しないutilityを使うとFSと同じくらいの
ファイルサイズになってしまう

-s ディレクトリなどのファイル名がそのままimageファイルに送られるので
-sをつけることで、imageファイルを書く前にディレクトリエントリを
ごちゃ混ぜにして、ディレクトリエントリの未使用部分を0埋めする
-sはhash-treeでindexされたディレクトリの問題を分析することの邪魔になるだろう

-I imageファイルに格納したメタデータをデバイスに戻す。緊急事態に
リストアするために利用される。


e2imageで出力したメタデータのファイルをfsckでチェックできる


[root@localhost /]# e2image -r /dev/sda7 test.img
e2image 1.41.14 (22-Dec-2010)



[root@localhost /]# e2fsck -f test.img
e2fsck 1.41.14 (22-Dec-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
test.img: 11/25480 files (9.1% non-contiguous), 8870/101540 blocks


マニュアルによればエキスパートがこの情報を元に復旧する手助けとなるとのことだが、
メタデータのバックアップだけで、データの復旧が出来るのか謎。
ちなみに将来的にはe2fsckとも連携を図ると書いてあるが、取り組んでいるのを聞いたことがないですね。
gitのコミットのタイトル↓も見てみましたが、まだやってないようです。



[root@localhost e2fsprogs]# git whatchanged | grep e2image | grep -v :
Convert tune2fs, dumpe2fs, and e2image to the new bitmap interface
Use BLOCK_FLAG_READ_ONLY flag in debugfs, e2image, and tune2fs
e2image, and tune2fs will work well with filesystems containing
If the disk fills while e2image is writing its output file, it will
e2image in raw-mode appends an extra byte to image-file
In raw mode (-r), e2image appends an extra byte to the image-file's
This problem can be reproduced by doing an e2image -r dev image-file
e2image, etc. Fix ext2fs_open2() so that it returns the error code
[COVERITY] Fix memory leak in e2image (write_raw_image_file)
[COVERITY] Fix memory leak in e2image
Clean up e2image man page, mostly based on suggestions from
send a raw e2image filesystem dump if possible.
Escape hyphens in the e2image and tune2fs man pages so that they show up
e2image -rs is specified.
for dealing with large sparse files (such as e2image files).
Remove debugging printf from e2image -s's code.
Fix minor glitches in the e2image man page.
reading from an e2image file. (New -d option)
administrator to install an metadata stored in an e2image
Fix up extended attribute handling in e2image, resize2fs, and in
error message could be printed on an malloc() failure, and e2image
Add support for raw image files in e2image.
badblocks.c, chattr.c, dumpe2fs.c, e2image.c, findsuper.c, lsattr.c,
Fix program name for e2image.



e2imageをつかってファイルの復旧をしてみる

たいそうなことではないですが、e2imageでとったメタデータのバックアップを
使って削除したファイルを復帰させてみたいと思います。


1.metadataのbackupを作成


[root@localhost /]# e2image -r /dev/sda7 test.img
e2image 1.41.14 (22-Dec-2010)


2.試しにファイルを消してみる
[root@localhost /]# rm /mnt/mp1/a

rm: remove regular empty file `/mnt/mp1/a'? yes


3.aが無くなっていることを確認

[root@bsd086 mnt]# ll /mnt/mp1
total 12
drwx------ 2 root root 12288 Feb 8 19:59 lost+found


4.metadataのbackupをFSへかきだす

[root@localhost /]# dd if=test.img of=/dev/sda7
203080+0 records in
203080+0 records out
103976960 bytes (104 MB) copied, 3.02975 s, 34.3 MB/s


5.もとに戻っていることを確認

[root@localhost /]# ll /mnt/mp1/
total 12
-rw-r--r-- 1 root root 0 Feb 8 20:00 a
drwx------ 2 root root 12288 Feb 8 19:59 lost+found



ext系のファイルシステムではファイルを削除する時に、
メタデータを更新して、データを削除したことにするのでこのようなことが出来ます。

もし、ファイル削除後にデータブロックが違うファイルにより上書き場合は、
メタデータのバックアップで元に戻してもコラプトしたファイルが見えてるでしょうから、
使いどころは限られていると思います。


外部journal (ジャーナル)の作成 (ext3, ext4)




ext4でjournal(ジャーナル)を外部デバイスに作成する方法を紹介します。
ext3でもやり方は同様です。 (kenrel: 2.6.39-rc1 e2fsprogs: 1.41.12)


ext3, ext4にはjoural機能があり、不意にシステムがクラッシュしても
データの整合性が保たれます。


特に指定しないかぎり、journalは1つのファイル(inode番号8番)として作成されます。
# 隠しファイルとしてFS上に作成されるため見ることはできません。


余談ですが、inodeは10番までは予約inode番号として確保されます。
また、FS作成時にlost+foundに11が割り振られるので、
実質12番から利用することになります。

10番まではスペシャルinode番号として下記のように定義されいます。



/fs/ext4/ext4.h
#define EXT4_BAD_INO 1 /* Bad blocks inode */
#define EXT4_ROOT_INO 2 /* Root inode */
#define EXT4_BOOT_LOADER_INO 5 /* Boot loader inode */
#define EXT4_UNDEL_DIR_INO 6 /* Undelete directory inode */
#define EXT4_RESIZE_INO 7 /* Reserved group descriptors inode */
#define EXT4_JOURNAL_INO 8 /* Journal inode */




journalは外部に作成する事も出来ます。
journalについてはまた別の機会に説明しますが、journal領域へのI/Oは非常に頻繁に行われます。
外部journalを作成するメリットは、journal領域への書き込み読み込みを
ファイルシステムと分離し、I/O性能の向上を図れるところです。
ストライピングのようなイメージです。


外部にjournalを作成する手順は以下の流れになります。



1. journal用にファイルシステムをフォーマットする
2. ext4 (ext3)をjournalなしで作成する 
3. 1で作成したjournal領域を2のFSに組み込む



1. journal用にファイルシステムをフォーマットする


mke2fsコマンドに-O joural_devオプションをつけて、
journal用にデバイスをフォーマットします。



[root@localhost mnt]# mkfs -O journal_dev /dev/sda5
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
0 inodes, 48828 blocks
0 blocks (0.00%) reserved for the super user
First data block=0
0 block group
32768 blocks per group, 32768 fragments per group
0 inodes per group
Superblock backups stored on blocks:

Zeroing journal device:



以上で、journal用のデバイスが作成されました。
試しにdebugfsでファイルシステムの情報を見ようとすると怒られます。


[root@localhost mnt]# debugfs /dev/sda5
debugfs 1.41.14 (22-Dec-2010)
/dev/sda5: Filesystem has unsupported feature(s) while opening filesystem
debugfs:




dumpfsで強引のファイルシステムの管理情報をみてみます。
journal_devのfeature flagが設定されており、journalデバイスとして作成されていることがわかります。


[root@localhost mnt]# dumpe2fs /dev/sda5
dumpe2fs 1.41.14 (22-Dec-2010)
Filesystem volume name:
Last mounted on:
Filesystem UUID: 3c74ccf4-350a-4009-bca5-bd801318d9d7
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: journal_dev
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 0
Block count: 48828
Reserved block count: 0
Free blocks: 0
Free inodes: 0
First block: 0
Block size: 4096
Fragment size: 4096
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 0
Inode blocks per group: 0
Filesystem created: Sat Apr 9 12:00:36 2011
Last mount time: n/a
Last write time: Sat Apr 9 12:00:38 2011
Mount count: 0
Maximum mount count: 0
Last checked: Sat Apr 9 12:00:36 2011
Check interval: 0 ()
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 28
Desired extra isize: 28
Default directory hash: half_md4
Directory Hash Seed: 321a2925-9ee4-4b39-8b2c-e0ffa4098ae8

Journal block size: 4096
Journal length: 48828
Journal first block: 2
Journal sequence: 0x00000001
Journal start: 0
Journal number of users: 0






2. ext4 (ext3)をjournalなしで作成する 


1で作成したjournalデバイスを利用するため、ext4(ext3)はjournal無しでmkfsします。
journalはhas_journal機能フラグで有効になるため、あえてhas_journalを無効にして、mkfsコマンドを実行します。



[root@localhost mnt]# mkfs -t ext4 -O ^has_journal /dev/sdb1
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
245760 inodes, 982015 blocks
49100 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1006632960
30 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 0 mounts or
0 days, whichever comes first. Use tune2fs -c or -i to override.







3. 1で作成したjournal領域を2のFSに組み込む

tune2fsコマンドで1で作成したjournalデバイスを2のext4 (ext3)ファイルシステムに組み込みます。


[root@localhost mnt]# tune2fs -o journal_data -j -J device=/dev/sda5 /dev/sdb1
tune2fs 1.41.14 (22-Dec-2010)
Creating journal on device /dev/sda5: done
This filesystem will be automatically checked every 0 mounts or
0 days, whichever comes first. Use tune2fs -c or -i to override.



以上の手順で外部デバイスにjournalを設定し、利用出来るようになりました。
debugfsでjournalのデバイスのUUIDが設定されていることがわかります。

[root@localhost mnt]# debugfs /dev/sdb1
debugfs 1.41.14 (22-Dec-2010)
debugfs: stats
Filesystem volume name:
Last mounted on:
Filesystem UUID: 6f44f603-f061-46da-9702-f6e4840440f1
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype e
xtent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: journal_data user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 245760
Block count: 982015
Reserved block count: 49100
Free blocks: 964661
Free inodes: 245749
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 239
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
Flex block group size: 16
Filesystem created: Sat Apr 9 12:07:17 2011
Last mount time: n/a
Last write time: Sat Apr 9 12:08:14 2011
Mount count: 0
Maximum mount count: 0
Last checked: Sat Apr 9 12:07:17 2011
Check interval: 0 ()
Lifetime writes: 61 MB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 28
Desired extra isize: 28
Journal UUID: 3c74ccf4-350a-4009-bca5-bd801318d9d7
Journal device: 0x0805

Default directory hash: half_md4
Directory Hash Seed: 2d317557-adfa-4d0d-8984-599fdae445c5
Directories: 2
Group 0: block bitmap at 241, inode bitmap at 257, inode table at 273




Linux Kernelの取得(2)

前回からの続きです。

1. カーネルの取得
2. ファイルの解凍
3. .configの作成
4. コンパイル
5. grub.confの編集



4. コンパイル

3までの処理で.configが出来上がったので、kernelをコンパイルします。
下記4つのコマンドを順番に実行します。

# make
# make modules
# make modules_install
# make install


makeはソースファイルのコンパイルです(一番時間がかかります)。
make modulesはモジュールを作成します。
make module_installで作成したモジュールをインストールし、
最後にmake installで作成したkernel imageファイルなどを/bootに移動します。



5. grub.confの編集


次回から作成したkernelで起動するために/boot/grub/grub.confを編集します。
下記のようにmake installした後は作成したkernelが一番先頭に挿入されます。

このままだとdefault=1であるため、次回起動時には
2.6.35.11-83.fc14.x86_64が自動的に選択されます。

default=0に変更する事で作成した2.6.39-rc1が選択されることになります。
# 起動時にカーソルで選択してもよいのですが、あらかじめ編集しておいたほうが
うっかり違うkerelで起動することが防げます。



[root@localhost LATEST]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,0)
# kernel /boot/vmlinuz-version ro root=/dev/sda1
# initrd /boot/initrd-[generic-]version.img
#boot=/dev/sda
default=1
timeout=3
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.39-rc1)
root (hd0,0)
kernel /boot/vmlinuz-2.6.39-rc1 ro root=UUID=e86f9902-facc-479c-b6d6-e36ea4565151 rd_NO_LUKS rd_
NO_LVM rd_NO_MD rd_NO_DM LANG=ja_JP.UTF-8 KEYTABLE=jp106 rhgb quiet
initrd /boot/initramfs-2.6.39-rc1.img

title Fedora (2.6.35.11-83.fc14.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-2.6.35.11-83.fc14.x86_64 ro root=UUID=e86f9902-facc-479c-b6d6-e36ea4565151 rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=ja_JP.UTF-8 KEYTABLE=jp106 rhgb quiet
initrd /boot/initramfs-2.6.35.11-83.fc14.x86_64.img
title Fedora (2.6.35.10-74.fc14.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-2.6.35.10-74.fc14.x86_64 ro root=UUID=e86f9902-facc-479c-b6d6-e36ea4565151 rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=ja_JP.UTF-8 KEYTABLE=jp106 rhgb quiet
initrd /boot/initramfs-2.6.35.10-74.fc14.x86_64.img




次回はこれらの作業を自動化する方法について紹介したいと思います。

Linux Kernelの取得(1)へ戻る


Linux Kernelの取得(1)

基本ですがLinuxのカーネルの取得とコンパイル方法についてです。
ちょっと長いので2回にわけてご紹介します。

大まかに下記の流れになります。

1. カーネルの取得
2. ファイルの解凍
3. .configの作成
4. コンパイル
5. grub.confの編集





1. カーネルの取得

Linux Kernelは下記のサイトから取得できます。


http://kernel.org




色々と表示されています。
安定板、開発版やLinusのtreeのスナップショットだったりとあります。

開発版はいち早く新しい機能が試せますが、bugが潜在している可能性が高いです。
個人利用ではさほど神経質になる必要はないと思います。
むしろ新しい機能や最新のを使っている感が重要だと思いますので
"mailine"の"Full_Source"から取得するとよいでしょう。





2.ファイルの解凍

Full_Sourceをクリックすると"linux-2.6.39-rc1.tar.bz2"をダウンロードするか聞いてきます。
任意の場所に保存してください。ファイルサイズは70-80MBあります。
色々な機能が追加され、コードどんどん多くなっているので将来的には100MBも越えてしまうのではないでしょうか。
何かのカンファレンスでLinuxのソースコードの肥大化は問題であると述べられていたきがします。

ダウンロードしたファイルは下記のコマンドで解凍します

# tar -jxvf linux-2.6.39-rc1.tar.bz2

解凍処理が完了するとlinux-2.6.39-rc1とういディレクトリが出来上がります。
これがカーネルのソースツリーです。






3. .configの作成

.configファイルとはカーネルの設定ファイルのことです。
"."がついているので隠しファイルとして扱われています。 lsコマンドで見る場合は -aをつけます。

先程までに解凍したlinux-2.6.39-rc1のディレクトリ内に移動します。e.g. # cd linux-2.6.39-rc1
この状態で ls -a を実行しても.configはありません。

既に.configがある場合(他のコンパイルしたkenrelからもってきた)は # make oldconfigで
引き継ぐ事ができます。

新規に作成する場合は# make menuconfigを実行します。
make config, make xconfigなどもあります。
目的はどれも同じですので使いやすいものを選ぶとよいと思います。

make menuconfigを実行すると↓のような画面が表示されます。




ここではグラフィカルにカーネルのコンフィグを設定することができます。
詳細な設定は別の機会にするとして”EXIT”を選択し抜けます。
(操作にはTAB, ENTER,矢印キーをつかいます)



# make defconfigでは名前の通りデフォルトの設定ファイルを作成します。
どちらも場合も実行後は.configが作成されていることが確認できると思います。

.configファイルの中身はカーネルのどの機能を有効/無効にするかが記載されています。
直接このファイルを編集する事はあまりないと思いますが、
どの機能が有効になっているかを確認する時には直接開いてしまうのもありだと思います。




[root@localhost LATEST] # cat .config
#
# Automatically generated make config: don't edit
# Linux/x86_64 2.6.38-rc7 Kernel Configuration
# Mon Apr 4 23:53:18 2011
#
CONFIG_64BIT=y
# CONFIG_X86_32 is not set
CONFIG_X86_64=y
CONFIG_X86=y
CONFIG_INSTRUCTION_DECODER=y
CONFIG_OUTPUT_FORMAT="elf64-x86-64"
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_MMU=y
CONFIG_ZONE_DMA=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_SG_DMA_LENGTH=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
...


Linux Kernelの取得(2)へ


詳解 Linuxカーネル 第3版

新品価格
¥6,930から
(2011/4/5 00:24時点)







英語学習 hanaso




仕事でLinuxの開発をやっている関係で、英語のドキュメントをしょっちゅう読みます。
数えるほどですが、英語でのプレゼンもしました。

読み書きは多少時間をかけてもいいので、電子辞書を使って何とかなります。
問題は会話です。別次元の話です。

知っている言葉も、とっさには出てこないことが多いです(年のせいかもしれないですが)落ち込み

hanasoは宣伝抜きでガチに会員として日々利用しています。
似たようなサービスはいくつかありますし、どこもトライアルはやってますので
迷っている方はちょっと勇気を出して申し込んでみてください。


私の経験として、必要な物や始めるにあたってのアドバイスをさせてもらいます。

必要な物:
- skype (これがないとはじまらない, skypeはマルチプラットフォームなのでLinuxでもok)
- PC (skypeの映像を有効にしてもブロックノイズが発生しない位のスペック)
  一度だけネットブック(CPU: Atom 1.60Hz)でやってみましたが、
  音すら途切れることがあり大変でした。
- ヘッドセット (なくてもいいですが、発音がクリアに聞こえます。先生は大体つかっています)



私が今使っているヘッドセットのは↓です。ちょっとでかいですが、まあいい感じです。
2000円台で買った気がします。USBなので普段使っているMacでもいけます。
※Linuxではためしてません、ドライバをちゃんとインストールすれば多分大丈夫かな..


SANWA SUPPLY USBヘッドセット MM-HSUSB7W

新品価格
¥2,500から
(2011/4/4 00:16時点)




最初は日本語okな先生を選ぶといいですね。
トライアル用のテキストもあるので中学校の英語力でもいけます。

先生はほぼ女性で、男性の先生は少ないです。
Youtubeの紹介ビデオもあるのでフィーリングで選ぶのもいいと思います。


私は5人の先生とローテーションでほぼ毎日英会話しています。
フィリピン人は小さい頃から英語をやっているので、発音もきれいです。
日本の文化に好意的(当然か)な方がほとんどなので日本ではやっていることなどを教えると喜んでくれます。


約半年くらいやっていますが、TOEICが100点くらい上がりました。
このサービスだけで点数が上がったとは思っていないですが、
毎日英会話をしたことで英語に対するモチベーションが高くなったのが要因だと思います。
私のように、自分の敵は自分な人(作業の成果がモチベーションに左右される)は
即効性が高いかもしれません。


あとはご自身の学習スタイルに合うかどうかだと思います。
私は、そもそも英会話教室に通うのすら面倒になってきてたので、
好きな時間(15:00-24:00)にレッスンを選べてとても合っています。



ちょっと前に公用語を英語にした会社のニュースが流れていましたが、
これからもっと英語を使う事が増えていきそうですね。




mkfsの出力

mkfsコマンド実行時の出力についてです。


ファイルシステム(以下FS)作成時に出力されるこれらの情報は,
作成後debugfsコマンドもしくはdumpe2fsコマンドでも確認できます。


[root@localhost misc]# mkfs -t ext4 /dev/sda4
mke2fs 1.41.14 (22-Dec-2010)       
 //mkfsのバージョンです日付はリリース日
Filesystem label=             
 //FSのラベル -Lで指定可能。空白可
OS type: Linux              
 // OSタイプ、Linux上で作成したのでLinux
Block size=4096 (log=2)          
 //ファイルシステムのブロックサイズ。通常4KB
Fragment size=4096 (log=2)        
 ///linux-2.6.38現在のext4では未使用なので意味無し
Stride=0 blocks, Stripe width=0 blocks   
 // RAID環境で利用するエントリ。-E stride= で指定可能
183264 inodes, 732421 blocks      
 //FSで利用可能なinode数と、ブロック数
36621 blocks (5.00%) reserved for the super user
 //ブロックの5%はroot用の領域として確保される
First data block=0            
 //先頭のブロックにsbが保存されている場合(block size = 1024)は1
Maximum filesystem blocks=750780416 
 //利用可能な最大ブロック数
23 block groups            
 //ブロックグループ数
32768 blocks per group, 32768 fragments per group 
 //1ブロックグループあたりのブロック数とフラグメント数
7968 inodes per group         
 //1ブロックグループあたりのinode数
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912 
 //superblockの複製が配置されているブロック番号

Allocating group tables: done      
 //block bitmap, inode bitmap, inode tableを作成しました
Writing inode tables: done        
 // inode tableを書き出しました
Creating journal (16384 blocks): done   
 //journalの作成が完了しました
Writing superblocks and filesystem accounting information: done
 //sbが書き終わりました

This filesystem will be automatically checked every 0 mounts or
0 days, whichever comes first. Use tune2fs -c or -i to override. 
 //0なので自動でfsckはしませんと言う意味

ファイルシステムの作成

ファイルシステムの作成にはmkfsコマンドを利用します。
mkfsコマンドはファイルシステムを作成するe2fsprogsのmke2fsコマンドを呼び出すだけです。
実際のファイルシステムの作成はmke2fsコマンドが行う事になります(ext系の場合)。

"mkfs -t ext4 /dev/sda3"を例にとりますと、mkfsコマンドは-tで渡された
"ext4"という文字列を"mkfs."と結合し、”mkfs.ext4"というプログラム名で実行します。
mkfs.ext4はe2fsprogsで作成されておりmke2fs -t ext4 として解釈され実行されます。

詳しくは下記のサイトからutil-linux-ngのソースコードをダウンロード/解凍した、
disk-utils/mkfs.cをご参照ください。

util-linux-ngはhttp://userweb.kernel.org/~kzak/util-linux-ng/
から取得出来ます。


ちょっとややこしい気もしますが、このような仕組みにすることで
mkfsコマンドを通して色々なファイルシステムの作成をするようなデザインになっています。

ユーザーはmkfsコマンドでただ目的のファイルシステムのタイプを指定すればよく、
実際に呼び出すコマンドを意識する必要がないというメリットがあります。

現在利用しているシステムでどのファイルシステムを作成出来るかは、
mkfs + TABでの出力で確認出来ます。
私が今利用しているFedora 14では下記のような出力が得られます、


[root@localhost mp1]# mkfs
mkfs mkfs.ext2 mkfs.ext4 mkfs.msdos mkfs.vfat
mkfs.cramfs mkfs.ext3 mkfs.ext4dev mkfs.ntfs mkfs.xfs



普通にファイルシステムを作成するだけでしたらとても簡単です。

mkfs -t ファイルシステムタイプ デバイス でokです。
下記は実行例です。
色々と出力されていますが、どれもファイルシステムにとっては重要な情報ですそれらは次回解説します。


[root@localhost misc]# mkfs -t ext4 /dev/sda4
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
183264 inodes, 732421 blocks
36621 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=750780416
23 block groups
32768 blocks per group, 32768 fragments per group
7968 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 0 mounts or
0 days, whichever comes first. Use tune2fs -c or -i to override.













SANYO フットマッサージャー HER-FA501(W)

新品価格
¥29,540から
(2011/4/3 10:27時点)



e2fsprogsの取得

e2fsprogsはLinuxの標準で利用されるext4(ext2/3)のユーティリティプログラムで、
通常はデフォルトでインストールされているので特に意識する事はないです。

ただLinuxのコミュニティでは現在も開発が続いており、いち早く機能を試したい場合はgitを使いソースツリーを取得します。
# git については改めてまとめます。

e2fsprogsのページです。

http://e2fsprogs.sourceforge.net/

1. git cloneでソースツリーを取得します(2-3分かかります)。


[root@localhost mnt]# git clone http://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git

Cloning into e2fsprogs...
remote: Counting objects: 29475, done.
remote: Compressing objects: 100% (5618/5618), done.
remote: Total 29475 (delta 23742), reused 29319 (delta 23628)
Receiving objects: 100% (29475/29475), 13.18 MiB | 45 KiB/s, done.
Resolving deltas: 100% (23742/23742), done.



2. コンパイルの準備をします。


[root@localhost mnt]# cd e2fsprogs/
[root@localhost e2fsprogs]# ./configure
Generating configuration file for e2fsprogs version 1.41.14
Release date is December, 2010
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables
...



3. コンパイルします(5分くらいかかります)。


[root@localhost e2fsprogs]# make
cd ./util ; make subst
make[1]: ディレクトリ `/mnt/e2fsprogs/util' に入ります
CC subst.c
LD subst
make[1]: ディレクトリ `/mnt/e2fsprogs/util' から出ます
make[1]: ディレクトリ `/mnt/e2fsprogs' に入ります
cd .; CONFIG_FILES=./lib/ext2fs/ext2_types.h ./config.status



4. 既存のe2fsprogsのコマンド(mke2fsなど)と置き換えても良い場合はイントールします。


[root@localhost e2fsprogs]# make install
make[1]: ディレクトリ `/mnt/e2fsprogs' に入ります
make[1]: `lib/ext2fs/ext2_types.h' は更新済みです
make[1]: ディレクトリ `/mnt/e2fsprogs' から出ます
make[1]: ディレクトリ `/mnt/e2fsprogs' に入ります
make[1]: `lib/blkid/blkid_types.h' は更新済みです
make[1]: ディレクトリ `/mnt/e2fsprogs' から出ます
make[1]: ディレクトリ `/mnt/e2fsprogs' に入ります
make[1]: `lib/uuid/uuid_types.h' は更新済みです
...



以上で、最新のe2fsprogsパッケージを利用出来ます。
各種コマンドについての詳細は後ほど解説します。


上記のコマンドを打つのが面倒な場合は下記のスクリプトを実行すれば指定した場所にe2fsprogsを取得し、コンパイル->インストールします。
# 実行するにはファイルに実行権をつけ、実行します。

e.g. chmod +x mke2progs.sh ; ./mke2progs.sh




#!/bin/bash

E2FS="http://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git"
WORKDIR="./"

if [ $# -eq 1 ];then
WORKDIR=$1
elif [ $# -gt 1 ];then
echo "Usage: ./mke2fsprogs [TARGET-DIR]"
exit 1
fi

cd $WORKDIR
[ -e "e2fsprogs" ]
if [ $? -eq 0 ];then
echo "Directory (e2fsprogs) already exists on $WORKDIR."
exit 1
fi

echo "You will create e2fsprogs at $WORKDIR."

git clone $E2FS
if [ $? -ne 0 ];then
echo "Failed to do git clone."
exit 1
fi

cd e2fsprogs
printf "configure ..."
./configure > /dev/null
[ $? -ne 0 ] || printf " [OK]\n"
printf "make ..."
make > /dev/null
[ $? -ne 0 ] || printf " [OK]\n"
printf "make install ..."
make install > /dev/null
[ $? -ne 0 ] || printf " [OK]\n"

exit 0





<< 前へ    

WWW を検索 Linux Blue を検索
プロフィール

uni
仙台でLinuxのエンジニアをしています。 忘備録もかねて主にLinuxについて載せています。 ここからの情報が何かの役に立てば幸いです。
リンク集
<< 2013年01月 >>
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
カテゴリアーカイブ
月別アーカイブ
最新記事
×

この広告は30日以上新しい記事の更新がないブログに表示されております。