spl/zfs-0.6.1 ZFS on Linux がついに Stable になった模様

ZFS on Linux がついに Stable になった模様。祝。
http://zfsonlinux.org/

http://archive.zfsonlinux.org/downloads/zfsonlinux/spl/spl-0.6.1.tar.gz
http://archive.zfsonlinux.org/downloads/zfsonlinux/zfs/zfs-0.6.1.tar.gz

Debian, Fedora, and RHEL/CentOS用のリポジトリが公開されたのでURLを転記。

Debian: Add to /etc/apt/sources.list
deb http://archive.zfsonlinux.org/debian wheezy main
deb-src deb http://archive.zfsonlinux.org/debian wheezy main

Fedora: See http://zfsonlinux.org/fedora for directions.
rpm http://archive.zfsonlinux.org/fedora/$releasever/$basearch
srpm http://archive.zfsonlinux.org/fedora/$releasever/SRPMS

RHEL/CentOS: See http://zfsonlinux.org/epel for directions.
rpm http://archive.zfsonlinux.org/epel/$releasever/$basearch
spms http://archive.zfsonlinux.org/epel/$releasever/SRPMS

WindowsなしでDOS起動USBメモリをつくる

LinuxとかしかないときのBIOSアップデートとかに使うDOS起動USBメモリの作り方。

ここからFreeDOS-1.1-USB-Boot.img.bz2をダウンロードして解凍しておく。

中身が消えてもいいUSBメモリを差し込む。
dmsgなんかをみてデバイス名を確認する。(/dev/~なんちゃら)
おもむろにddでイメージを書き込む
# dd if=FreeDOS-1.1-USB-Boot.img of=/dev/~

USBメモリをアンマウントして引っこ抜いて、一呼吸おいてもう一回差し込んでマウントする
書き込むBIOSファイルをUSBメモリに展開

でうまくいくはず。

FreeNAS 8.3.0 と HighPoint RocketRAID 2720

FreeNAS 8.2 がリリースされたのは先月だったはずですが、すでにFreeNAS 8.3.0-BETA1がリリースされています。
HighPoint RocketRAID 2720使いとしてうれしいのはベースがFreeBSD 8.3-RELEASE-p7.となっていて、後からドライバインストールしなくてもよくなったはず!と思って試しましたがダメでした。

FreeBSD 8.3-RELEASEでサポートされているハードはFreeBSD 8.3-RELEASE Hardware Notesを見てください。
HighPoint RocketRAID 2720はページ内をRocketRAID 272xあたりで検索すると引っかかります。載っているので動かすことは出来そう。しかしなぜHighPoint’s?

Ubuntu 12.04 LTS Precise Pangolin で Dtrace for Linux

ZFS on Linuxのついでに、Solarisで使えるDtraceをUbuntu 12.04で使えるようにする手順です。
ZFS and DTrace running on Ubuntu Linuxの手順に沿ってインストールします。

Step1:準備

試したバージョン・いるもの

  • Ubuntu Desktop 12.04 64bit版をインストールした環境
  • gitがインストールされて無い場合は事前にインストール

素のままだとbuild-essensial,zlib1g-dev,bison,libc6-dev,libelf-dev,libdwaf-devあたりもインストールしておく必要があります

Step2:インストール

gitで使うディレクトリを作成し、cdで移動してgit cloneでdtrace4linuxのソースをいただいてきます。

$ git clone git://github.com/ShepBook/dtrace-for-linux.git

(gitの9416/tcpを通さない社内学内のproxy越えは”git clone http://github.com/ShepBook/dtrace-for-linux.git”とするといいかも)

出来てるdtrace-for-linuxのディレクトリに移動してmake allでビルドします。

$ cd dtrace-for-linux
$ sudo make all

エラーなく終了したらmake installでインストールします。Solarisと同じに/usr/sbin/dtraceにインストールされます。

$ sudo make install

DTrace の kernel module を make load で反映します。

$ sudo make load

これでインストール完了です。

Step3:お試し

とりあえず試しに…といった場合は

BEGIN {
trace("Hello, world!!!");
exit(0);
}

をhello.dに保存して、

$ sudo dtrace -s hello.d

すると、以下の感じに結果が表示されると思います。

dtrace: script 'hello.d' matched 1 probe
CPU     ID                    FUNCTION:NAME
  1      1                           :BEGIN   Hello, world!!!

あとは、Dtraceについて検索して出てきたページを参考にどうぞー。
そもそもLinuxでDtrace?だからなに?って感じですが、いいんです。いえあ!

ZFS on Linux FAQのライセンスどうなってるの?を翻訳して意訳してみた

 

ZFS on Linuxでお約束のように語られるLinuxカーネルとZFSの混ぜるな危険ライセンス問題。
ZFS on LinuxのFAQのライセンス問題についてを日本語にしてみた。翻訳意訳があってるかどうかは自信がないw
(そもそもこれがライセンス上問題ないのかどうかは知りません)

まず元の文章はこれな。

1.1 What about the licensing issue?
In a nutshell, the issue is that the Linux kernel which is licensed under the GNU General Public License is incompatible with ZFS which is licensed under the Sun CDDL. While both the GPL and CDDL are open source licenses their terms are such that it is impossible to simultaneously satisfy both licenses. This means that a single derived work of the Linux kernel and ZFS cannot be legally distributed.One way to resolve this issue is to implement ZFS in user space with FUSE where it is not considered a derived work of the kernel. This approach resolves the licensing issues but it has some technical drawbacks. There is another option though. The CDDL does not restrict modification and release of the ZFS source code which is publicly available as part of OpenSolaris. The ZFS code can be modified to build as a CDDL licensed kernel module which is not distributed as part of the Linux kernel. This makes a Native ZFS on Linux implementation possible if you are willing to download and build it yourself.

で、機械翻訳しておかしいとこを修正したのがこんな感じ

1.1ライセンスの問題についてはどうですか?
一言で言えば、この問題は、GNU General Public Licenseの下でライセンスされているLinuxカーネルと、Sun CDDLの下でライセンスされているZFSとライセンス上の互換性がないということです。
GPLとCDDLの両方ともオープンソースライセンスではあるものの、同時に両方のライセンス条件を満たすことは不可能です。これはLinuxカーネルとZFSをひとつの物として合法的に配布することができないことを意味します。問題解決の方法の一つとして、カーネルの派生物として見なされないようにFUSEを使用してユーザー空間でZFSを実装します。
このアプローチは、ライセンスの問題を解決しますがいくつかの技術的な欠点があります。
しかし、別のオプションがあります。
CDDLは、OpenSolarisの一部として公開されているZFSのソースコードの変更とリリースに制限がありません。
ZFSのコードは、CDDLライセンスのカーネルモジュールとしてビルドするように変更することができ、これはLinuxカーネルの一部として配布されていません。
あなたが自分の意思でダウンロードしビルドすれば、Native ZFS on Linuxが可能になります

そのままだとわかるようでわかんないから、日本国憲法を口語訳した、のまねして意訳してみる。
ZFS on Linuxの中の人のスタンスはこんな感じじゃなかろうか?カーネルの一部じゃなくカーネルモジュールを配ってるだけってとこがポイントなんですかね?
訳が間違ってたら教えてください。

1.1ライセンスってどうなってるのよ?
LinuxカーネルはGPLライセンスでZFSはSun CDDLライセンスでそれぞれのライセンスは互いに相容れるものじゃなく同時に両方のライセンス条件は満たせないので、LinuxカーネルとZFSを一緒くたして配れないよ。FUSEを使用してユーザー空間でZFSを実装すればライセンス上の問題は解決出来るんだけど、いくつか技術的に欠点があったりして…
駄菓子菓子!ZFSのソースの変更とリリースにCDDLライセンスは制限をかけていないのでカーネルモジュールとしてビルドするように変更して、それを自分でダウンロードてしビルドすれば、Native
ZFS on Linux出来ますよ。

 

Ubuntu 12.04 LTS Precise Pangolin で Native ZFS

ZFS を root ファイルシステムにして、Ubuntuを起動する方法。

Ubuntu 11.04 on a Native ZFS root 後編や、ZFS DAY 2011.10 LinuxでZFSに刺激を受けインストールしてみたメモ。
ZFS ON LINUXで開発が進んでいるものを使い、HOWTO install Ubuntu to a Native ZFS Root Filesystemに沿ってインストールします。

必要なもの

  • 64-bit Ubuntu Live CD. (alternate installerではなく)
  • AMD64(x86_64)なCPUで動いてるPC
  • 8GB 以上のHDD等
  • 最低 2GB のメモリー

(2GBは最低限必要、でも遅い。4GBを推奨、普通のパフォーマンス。重複除外や圧縮などの高度な機能を使用したい場合は16GBのメモリが推奨。と書いてある)

試したバージョン

  • Ubuntu 12.04 Precise Pangolin
  • SPL-0.6.0.62-RC8
  • ZFS-0.6.0.62-RC8

Step1:インストール環境の準備

UbuntuのLiveCDを起動し、デスクトップでターミナルを開きます。(以下ターミナルで作業します)
ZFSモジュールとDebian 基本システムをLiveCD環境上にインストールします。
(ここでインストールするのはdaily版です。ちょっとでも安定版をという場合はapt-add-repository ppa:zfs-native/stableとします。その場合はZFS-0.6.0.56-RC8がインストールされます。rcなんですけどね)

$ sudo -i
 # apt-add-repository ppa:zfs-native/daily
 # apt-get update
 # apt-get install debootstrap ubuntu-zfs

動作中のカーネルにZFSモジュールをインストールし確認します。

# modprobe zfs
# dmesg | grep ZFS:

で、

ZFS: Loaded module v0.6.0.62-rc8, ZFS pool version 28, ZFS filesystem version 5

と返ってくればOK。

Step2:パーティション作成

/bootはZFSに置けないのでブートパーティションとZFSパーティションに分けます。今回は1TBのHDDを使ったので、fdiskでパーティションをきりました。/dev/sdaをブートパーティションは8MB、残りをZFSに割り当てて、先頭のブートパーティションのIDをbe(Solaris boot)、ZFS用をbf(Solaris)に変更してブートパーティションをアクティブにします。(下記は例です。適当に読み替えてください)

# fdisk /dev/sda

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-5221, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-5221, default 5221): +8M

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (3-5221, default 3):
Using default value 3
Last cylinder, +cylinders or +size{K,M,G} (3-5221, default 5221):
Using default value 5221

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): be
Changed system type of partition 1 to be (Solaris boot)

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): bf
Changed system type of partition 2 to bf (Solaris)

Command (m for help): a
Partition number (1-4): 1

Command (m for help): w

Step3:Diskのフォーマット

ブートパーティションをフォーマットします。

# mke2fs -m 0 -L /boot/grub -j /dev/sda1

後ろのパーティションにZFSのroot pool を作ります。

# zpool create rpool /dev/sda2

poolの名前は任意です。本家SolarisのZFSインストール時にはroot poolは初期状態でrpoolとなるので、上記ではrpoolとしました。ただこの場合、他のrpoolが存在するZFSなOSでマウント出来ないので他の名前しとくのもいいかもしれません。(ztankとかtankもよく使われるpoolの名前です)

rpoolに必要なファイルシステムを作成して、アンマウント後マウントポイントとbootfsを設定し、一旦エクスポートします。

# zfs create rpool/ROOT
# zfs create rpool/ROOT/ubuntu-1
# zfs umount -a
# zfs set mountpoint=/ rpool/ROOT/ubuntu-1
# zpool set bootfs=rpool/ROOT/ubuntu-1 rpool
# zpool export rpool

Step4:システムのインストール

さっき作ったrpoolを/mntにimportしてマウントし、/mnt/boot/grubにブートパーティションをマウントします。

# zpool import -R /mnt rpool
# mkdir -p /mnt/boot/grub
# mount /dev/sda1 /mnt/boot/grub

Debian 基本システムを/mntに展開します。

# debootstrap precise /mnt

Step5:システム設定とインストール

インストールが終わったら、LiveCD環境上から設定ファイルを/mntのZFS環境上にコピーします。
(debootstrapは最小構成インストールなので設定ファイルが初期状態だったりするのでLiveCD環境からコピーしたり追記したりします)

# cp /etc/hostname /mnt/etc/
# cp /etc/hosts /mnt/etc/

/mnt上のfstabやinterfacesを編集します。エディタはお好みで。(この例ではvi)

# vi /mnt/etc/fstab

/dev/sda1 /boot/grub auto defaults 0 1

を追記

# vi /mnt/etc/network/interfaces

auto eth0
iface eth0 inet dhcp

を追記

次にZFS上にUbuntuを導入するため、chrootで/mntにマウントしたZFSのルートに入ります。
ここから先はインストール先のZFSファイルシステムへの操作となります。

# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys /mnt/sys
# chroot /mnt /bin/bash --login

chroot先ではリポジトリが初期化されているので、ftp.jaist.ac.jpにリポジトリを変更します。
(ここはお好みで)

# vi /etc/apt/sources.list

preciseより前のURLを

http://ftp.jaist.ac.jp/pub/Linux/ubuntu

に置き換えます。で、Ubuntuの最小構成インストール

# locale-gen ja_JP.UTF-8
# apt-get update
# apt-get install ubuntu-minimal python-software-properties

続いて、カーネル関連とZFSモジュール関連モジュールのインストール
(ubuntu-zfsは先程もインストールしましたが、今度はZFS上のシステムインストール先にインストールしてます。ここでインストールするのもdaily版の例です。ちょっとでも安定版をという場合はapt-add-repository ppa:zfs-native/stableとします。)

# apt-add-repository --yes ppa:zfs-native/daily
# apt-add-repository --yes ppa:zfs-native/grub
# apt-get update
# apt-get install --no-install-recommends linux-image linux-image-generic linux-headers-generic
# apt-get install ubuntu-zfs
# apt-get install grub-pc zfs-initramfs

ここで

# dkms status

をして

spl, 0.6.0.62, 3.2.0-23-generic, x86_64: installed
zfs, 0.6.0.62, 3.2.0-23-generic, x86_64: installed

等と返ってくればZFS関連モジュールのインストールは成功しています。
(インストール時のバージョンにより表示は変わります)

ここでZFSのシステムで使うユーザを登録します。
お試しなんでrootでいいかなーといった場合は、

# passwd root

で、パスワードを登録します。

しばらく使ってみようかといった場合は、定石どおり

# adduser 任意のユーザ名 admin

でちゃんとユーザを作ったほうがいいです。

HOWTO install Ubuntu to a Native ZFS Root Filesystemでは、このあとUbuntuのフルインストールしときたい場合は、ubuntu-desktopのパッケージをインストールしといて、となっています。
確かに便利ですが、後ほど再起動する前にZFSをexportしますが、そこで強制アンマウントでexport無しの再起動を行うことになります。自分の場合はちゃんと再起動できましたが、そういうのが気持ち悪い場合は後ほどインストールしたほうがいいです。

# apt-get install ubuntu-desktop

でインストール出来ます。

Step6: GRUBのインストール

まず、ZFSのシステムがGRUBによって認識されていることを確認します。

# grub-probe /

で、

ZFS

と返ってくればOK。

で、GRUBにZFSモジュール用がインストールされていることを確認します。

# ls /boot/grub/zfs*

で、

/boot/grub/zfs.mod /boot/grub/zfsinfo.mod

と返ってくればOK。

initrdファイルを更新します。

# update-initramfs -c -k all

update-initramfs: Generating /boot/initrd.img-3.2.0-23-generic

でOK。

ブートコンフィギュレーションファイルを更新します。

# update-grub

Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.0-23-generic
Found initrd image: /boot/initrd.img-3.2.0-23-generic
done

でOK。

出来たgrub.cfgの確認をします。

# grep boot=zfs /boot/grub/grub.cfg

linux /ROOT/ubuntu-1/@/boot/vmlinuz-3.2.0-generic root=/dev/sda2 ro boot=zfs $bootfs quiet splash $vt_handoff

な感じでOK。

MBRにブートローダをインストールします。

# grub-install /dev/sda

Installation finished.

でインストール完了。

Step7: お片づけと再起動

chroot環境から抜けて、LiveCD環境に戻りアンマウントします。

# exit
# umount /mnt/boot/grub
# umount /mnt/dev
# umount /mnt/proc
# umount /mnt/sys
# zfs umount -a
# zpool export rpool

ubuntu-desktopをインストールした場合は、umount /mnt/devでアンマウント出来ないと思われます。
その場合は、

# umount -l /mnt/dev

として、強制的にアンマウントするしかありません…

また、zfs umount -aでもアンマウント出来ない場合は、

# umount -l /mnt

してしまいましょう。

それでも、zpool export rpoolは自分の環境では- fしても出来ませんでした…

あとは再起動するだけです。

# root

上記の手順が成功していればZFSがルートファイルシステムになっているUbuntuが起動してきます。

もうちょっと続く

Allied telesis CentreCOM GS924M のパスワードをリセットしたい!

オークションで購入したAllied telesis CentreCOM GS924Mが初期パスワードでログインできなかったため、工場出荷状態にリセットした件。(FAQによると正規な方法は有償で初期化しかない模様)
定番の電源投入時にS押しっぱなしで初期パスーワードでのログインが出来なかったのでメモ。

コンソールポートにRS232のシリアルケーブルを接続して、9600bps, 8bit, parity:none, stopbit:1, flowcontrol:noneの設定で接続。
電源投入時にCtrl+Cを押しっぱなしにするとCFEブートのプロンプトで入力出来るようになるので、factresetと入力してEnter。
*** command status = 0が帰ってきたらbootと入力してEnter。
Returned to the initializeation.で止まったら、Enter。
そしたら例の初期パスワードでログイン出来ました、とさ。

CentreCOM GS908M/916MとかGS908M/916M/924M v2とかも同じ方法でリセット出来るかも?

2012/05/27追記
最近アクセスされてるなーと思ったら、ジャンクやらで買いやすくなっているようで。
この方法でリセットできた他の機種があったら教えてください!!!

nvram CRC: computed c3, stored c3

CFE version 1.1.0 for GS900M Series (32bit,SP,BE,MIPS)
Build Date: Mon Sep  5 12:09:36 JST 2005
Copyright (C) 2000,2001,2002,2003 Broadcom Corporation.

Initializing Arena.
Initializing PCI. [normal]
Initializing Devices.
CPU type 0x29006: 200MHz
Total memory: 0x2000000 bytes (32MB)

Total memory used by CFE:  0x81F72000 - 0x81FFF7E0 (579552)
Initialized Data:          0x81FBB7AC - 0x81FBC900 (4436)
BSS Area:                  0x81FBC900 - 0x81FBD7E0 (3808)
Local Heap:                0x81FBD7E0 - 0x81FFD7E0 (262144)
Stack Area:                0x81FFD7E0 - 0x81FFF7E0 (8192)
Text (code) segment:       0x81F72000 - 0x81FBAAFC (297724)
Boot area (physical):      0x01F31000 - 0x01F71000
Relocation Factor:         I:E2372000 - D:E2372000

Automatic startup canceled via Ctrl-C
CFE> ^C
CFE> factreset
*** command status = 0
CFE> boot
Loader:elf Filesys:raw Dev:flash1.os File:vmlinux Options:(null)
Loading: 0x80002000/2170880 0x80214000/208928 Entry at 0x80002474
Starting program at 0x80002474
init started:  BusyBox v0.60.5 (2004.08.27-17:28+0000) multi-call binary

Problem occurred in configuration area.
Returned to the initializeation.

login: manager
Password: ******
Allied Telesis CentreCOM GS924M Ethernet Switch
Ethernet Switch Software: Version 1.1.0
MAC Address: xx-xx-xx-xx-xx-xx
Running 31secs

Manager >

CFEブートでは、clock, fprobe, envdev, test, nvram, set, loop, factreset, flash, f, e, d, u, reserve, autoboot, batch, go, boot, load, save, ttcp, tcp, rlogin, ping, arp, ifconfig, show, unsetenv, printenv, setenv, helpなコマンドが利用できるみたい。使い方はわからないけど。