二転三転しましたが、鯖用に新PCを組むって事で、いざソフマップへ!
狙っていたベアボーンは予想通り売れ残ってました(^^;
しかし、それに使えるCPU(Socket754)は1つも売ってませんでした…
ヨドバシにも行ってみたけどやはりありません
ネットでならあるでしょうが、今欲しかったので今回は新PCは諦めました
さてどうしたものかとソフマップをうろうろしてると、中古のエリアであるものを見つけました
IO-DATAのHDL-G300Uです
前に探してたHDL-G250Uのちょい容量が大きいバージョンです
G250Uも新品で見つけてたのですが、3.5万円と高めだったので保留にしてたのです
今回見つけたG300Uは中古で2.2万円とリーズナブルでしたのでこれに決定!
ほんと久々に中古を買ったのですが結構きれいでした、ってか傷も汚れもありませんでした
付属品も開封した形跡もないくらい、前に使ってた人は大事に使ってたのでしょうかね
私なんか買ったその日には箱も袋もゴミ箱直行ですし(苦笑)
早速LANに接続、前回ギガビットのHUBだけは買ってたのでそこにざくっと
電源ONするとピーとビープ音と共にLEDがテカテカ点滅、Linuxの起動プロセスを実行中、画面が見れないので何をしてるか分かりませんが…
1分ちょいで起動完了、やっぱりパソコン風味ですね
そういえば、リナザウも同じXScaleだし、クロックも同程度、Linux箱化したらバイナリも共通で使えそうですね
通常のNASとしては特に問題もなく利用可能でした、設定ページでのディスクチェックも問題なし
さて、Linux箱化の第1歩としてtelnetdの起動から、これが出来なければ始まりません
先人の力を拝借って事でこちらを参考に作業開始
提供されてるパッチはファームのバージョンが1.01と1.02、幸い私のG300Uは1.02だったので使わせてもらいました
ちなみにパッチの中身をみてみると、/etc/init.d/rc.localの最後に
/usr/sbin/telnetd -l /bin/sh
がありました、起動プロセスの中でこのタイミングでtelnetdが動き出すわけですな
パッチを適用して再起動、telnetで繋がりました~見た目は普通にLinuxですね~
IO-DATAのサイトではファームバージョン1.10が公開されてます、せっかくなのでバージョンアップもしておきましょう
念のためファームの中身をみてみると先ほど書き換えられたrc.localが含まれていました
このままアップデートするとtelnetdが起動しなくなるのでこちらで紹介されてるcmd.cgiを作っておきました
Content-typeの所がtext/plain?n?nになってるけど、wikiがそうしたのか、あえて変えたのか…
ちなみに私はviが苦手なのでWindows上でファイルを作成しWeb鯖に配置、wgetで取得って方法を使いました
rc.localが上書きされてしまうなら、初めからtenetdを起動する行を追加しておけばいいのでは?
って事でLHMelt+tar32.dllの組み合わせで解凍して書き換え、再パッケージ化
出来たファイルでファームのアップデート開始!
…
……
ピー、STATUSのLEDが赤く点灯、購入して半日も経たないうちに壊したか!?
とヒヤヒヤしましたが、電源ボタンでちゃんとシャットダウン出来ましたし、その後もちゃんと起動しました、元の1.02ですが
仕方ないのでアップデートだけでも……悲劇はいつだって唐突だ(Kanon風味)
アップデートだけなら無事終了、1.10になりました
さてtelnetdを起動させるか、とcmd.cgiにコマンドを渡す…が
Internal Server Error
マジデスカ……
telnetで入れなきゃログで確認する事も出来ないし………
さて、どうしたものか…Webでの設定画面にはもちろんいける……1.10用のパッチが無いなら作ればいいじゃない?
てな訳でパッチ製作開始
1.10のファームに入ってたrc.localを取り出して、telnetd起動の行を追加、1.02のパッチを参考にパッケージ作成
作成したパッチでアップデート……ピー、失敗………
何度も作り直したがことごとく失敗……このブザー音がなるまでの緊張感が何とも
途中、パッケージ内部のtar.gzをtgzと間違えていたのに気づき(パッケージ自体はtgz、何で違う?)、Linux上でtar.gzを作成、Windows上でパッケージを作成してみるが変わらず…
ん~やっぱりWindows上で作ったtgzだとダメなのかな?って事でパッケージ作成の全行程をLinux上でやってみる
それで試してみると……ピッ、再起動かかりました~
起動完了の合図と共にtelnetで繋いでみると、無事繋がりました~~
出来たパッチは公開していいのかしら?一応公開しておきます、何かあったらひっこめますので
1.10用telnetd起動パッチ
さて、telnetで入れるようになったので気になっていたcmd.cgiのエラーログをみてみる
execがどうとか書いてあるのでApacheのユーザー権限だとperlのexecが実行出来ないのかな?それかsudoが使えないのか
ま、telnet使えるから別にいいか、と
手順の続きから
/etc/passwdの中身をみるがrootのパスワードが空っぽ、記事のコメント欄にpasswdコマンドでパスワードを設定すれば/etc/shadowに書き込まれるとの事
それをユーザーの追加と同じように/etc/passwdを書き換えればいいようです
が、私の環境ではpasswdで設定した段階で/etc/passwdにも書き込まれていました
しかしユーザーの追加では書き込まれなかったのでコピペが必要でした、しかし私はviが使えないのでこんな感じでやってみました
共有フォルダへ/etc/passwdファイルをコピー
ターミナル上で/etc/shadowの中身を表示させてパスワード部をコピー
共有フォルダにあるpasswdを開いてコピーしたパスワードを貼り付け
passwdを/etc/passwdに上書きコピー
これで何とかなりました
手順を進め、再起動
telnetで繋ぐと認証が出ました、しかしrootでは入れない…先ほど追加したユーザーでなら入れます
他のサイトで確認すると「/etc/securetty に pts/0 を追加する」ってのがあるのでこれでしょう
まぁrootで直接入れない方がセキュリティ上は良さそうなのでこのままにしておきます
さて、次はaptの環境構築です
手順通りにディレクトリや空ファイル・シンボリックリンクの作成をしてrc.localの書き換え
再起動……STATUSのLEDが点滅状態でいっこうに完了しない………
telnetで繋いでみるがダメな様子、telnetの起動までで何かが起きているのか…ってさっき書き換えたrc.localだよな~やっぱ
試しにWebの設定画面を出してみる、こっちはちゃんと動いていた
何気なしに「システム初期化」を実行、いっこうに終わらない…
電源ボタン長押ししたり、裏のRESETボタンを押したりするがまったく反応なし、仕方ないので電源を引っこ抜く
電源繋いでON、やっぱりSTATUS点滅で症状変わらない……と思ったら悪化してた、設定画面だそうとすると
Forbidden
もうダメか……と思ったら、IEのアドレス履歴にファームアップデートのURLが!?
見事に表示されました!!
パッチを使ってrc.localの上書きを試みる、おー再起動した~
そして起動完了、しかし設定が一部おかしくなっていたので再度「システム初期化」を実行
もしかしたら最初の時は終わらないんじゃなくて、時間がかかってただけだったかも…
設定画面での初期設定を終えて、aptを再チャレンジ
hda5に作成したディレクトリや空ファイルは残ってたのでシンボリックリンクの作成のみ実行
怖いのでrc.localには入れないでおこう
パッケージのダウンロードはwgetを使いました
wget http://ftp.jp.debian.org/debian/pool/main/d/dpkg/dpkg_1.10.28_arm.deb
こんな感じで、但しtzdataとlibgcc1はここのサーバーには無かったので別の所から、場所はパッケージのページで検索すれば出てきます
インストールしたパッケージは以下の通り
tzdata_2006l-1_all.deb
libc6_2.3.6.ds1-8_arm.deb
libdb1-compat_2.1.3-7_arm.deb
libgcc1_3.4.3-13sarge1_arm.deb
gcc-3.3-base_3.3.5-13_arm.deb
libstdc++5_3.3.5-13_arm.deb
libncurses5_5.4-4_arm.deb
dselect_1.10.28_arm.deb
dpkg_1.10.28_arm.deb
その後apt-get install aptの所でdebconfか何かが無いと言ってる
とりあえず言われるがままにlocalesとか色々入れてみる……確かlibc6の古いものを入れてしまった後からかな?
セグメンテーション違反です
あ~やっちまったい
ls -l でも出るのでカーネル内部にまで浸透してる模様…
一度ログオフして再度suでrootになってみたら、「セグメンテーション違反です」が出てたタイミングで元のユーザーに戻される…
再起動させても変わらず……ここまできてこういうオチですか?(泣
試しに1.10を上書きしてみます
といってもそのままじゃ蹴られてしまうのでパッケージを展開してバージョン番号の偽装とスクリプトをいじってバージョン番号を更新しないようにします<見事にはまった
その後パッチでtelnetdを起動させて入ってみました
何とこれで入ったrootだとls -lで落ちません、dpkgも動きそう
ちなみに、そのままsuでrootになる(元からrootですが)とls -lで見事に落ちました、なので1.10を上書きしたから直った訳ではなさそうです
怪しそうなlibc6とlocalesをバージョン番号を合わせてインストールしてみる
suしてls -lを実行……ちゃんと表示されました~
試しにapt-get install aptを実行すると、おかしくなる前のメッセージが出ました
関連するパッケージはバージョン番号に注意しないとダメなんですね……
さて、これで元に戻った(多分)訳ですが、aptの変な表示は変わらずです
メッセージを良く読んでみると「apt-get -f installを試してみろ」と書いてある気がする、英語表示なので多分…
最初、apt-get -f install aptってやるのかと思ったけど、症状変わらないのでapt-get -f installで実行
するとどうでしょう、必要だ!とaptに要求されてたdebconfやらperl-baseやらがどんどんインストールされていく……何だ、こんなに簡単だったんだ
それとaptのメッセージが日本語に変わりました、そうそう、のっぱで見たdebianのaptはこんなだったよ
後はapt-utilsを入れてapt関連は終了~
手順に戻ってbashを入れてUserIDとGroupIDを修正
消えたユーザーとグループを元に戻す
最後にvsftpdとsambaを最新版にアップデート
これで手順は一通り完了~
これからはやりたい事を1つ1つ調べて自分色に染めていくわけです
とりあえずはディスクのバックアップが先決かしら?(苦笑)
いやその前にC71に向けた作業が先だよ私!これで2日潰したんだから(汗