MBR環境のUBUNTUをUEFIでブートするメモ

サーバーのリプレースをすべく、QNAPのケースを改造して組み換えを行いました。

その後、いざHDDを付け替えて起動というところで、ブートデバイスとして認識してくれないことがわかりました。

嫌な予感がして前環境のBIOSの設定を確認してみると、ブートは「UEFI+レガシー」となっています。

いわゆる従来のBIOSと近年のUEFI両方でのブートに対応するモードです。

試しに「UEFIオンリー」に変更してみると、従来の環境でも起動してくれません。

つまり、私はこのサーバーをBIOS環境で構築していたということです。

しかしながらマザーボード(AsRockJ4105-ITX)はUEFIブートしかサポートしていないそう。

何も考えずに購入してしまったため、UBUNTU側を対応させる必要が出てきてしまいました。

既存の環境をBIOSブートからUEFIブートに変更しているよい例が出てこず、手探りでなんとか移行に成功したので、メモに残しておきたいと思います。

UEFIはESPパーティションにあるブートローダーを読みにいくような仕組みになっているようです。

今回の手順では、まずHDDのMBRからGPTへの変換作業を行い、ESPパーティションを作成、GRUBを書き込みます。

UBUNTUのバージョンは14.04.1LTSです。

 

まず、前準備としてefibootmgrというパッケージをインストールしておきましょう。

私の環境にはこれが入っておらず、grubinstallコマンドに失敗してしまいました。

既存の環境でブートできるうちにこれをやっておかないと、パッケージをダウンロードしてきて手動でインストールする羽目になります。

既存のmbr環境で起動した状態で

sudo apt-get install efibootmgr

 

ここからは新環境に移行するHDDを接続し、ライブCDで作業を行います。

uefiでusbライブ環境を起動し
gparted(gui)で後ろ256MBを切ってフラグboot,espにしておく

その後、作成したパーティションをvfatでフォーマットします。
sudo /sbin/mkfs.vfat -F32 /dev/sdb4

 

ターミナルを開き、gdiskでmbr→gpt変換を行います。

※データが吹き飛ぶ可能性があります。必ずバックアップを取ってから行いましょう。
sudo gdisk
/dev/sda
r(revovery and transformation options)
f(load MBR and build GPT)
y(yes)
w(write)
y(yes)

 

では、UEFI用のgrubを入れ直して行きましょう。

rootの入っているパーティションをマウントして作業します。

また、先程作成したESPパーティションを/boot/efiにマウントします。

sudo apt-get install grub-efi
sudo mount /dev/sda2 /mnt
sudo mkdir -p /mnt/boot/efi
sudo mount /dev/sda4 /mnt/boot/efi
sudo mount –bind /dev /mnt/dev
sudo mount –bind /proc /mnt/proc
sudo mount –bind /sys /mnt/sys
sudo chroot /mnt

/usr/sbin/grub-install –target=x86_64-efi –efi-directory=/boot/efi /dev/sda

再起動

 

シェルが出るorGRUBメニューが出るが起動しない状態になると思うのですが、慌てずに手動でブートしましょう。
メニューでeを押すとエディタが起動し、Ctrl+Cでシェルへ入れます。
ls
HDD一覧がでたら、片っ端からset rootして/bootがあるパーティションを探しましょう。
set root=(hd0,gpt2)
ls /
これで/bootがあったら、カーネルの場所を伝える

rootの場所も必ず明記します。
linux /boot/vmlinuz-x.xx.x-xx-generic root=/dev/sda2
initrd /boot/initrd.img-x.xx.x-xx-generic
boot

 

これでブートできるはずなので、正しい設定を行います。
sudo mount /dev/sda4 /boot/efi
/usr/sbin/grub-install –target=x86_64-efi –efi-directory=/boot/efi /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg

これでUEFIからブート可能となりました。

 

おまけ

ブート後、mysqlが吹っ飛んだことが判明したのでリカバリ

設定ファイルを書き換えてリカバリモードで起動します。

1から順に数値を上げてmysqlを再起動してみてください。起動できた時点でバックアップを取り、再構築を行います。

最大5なのですが、4以上はデータが欠落する可能性があるそうです。

sudo vi /etc/mysql/my.cnf
[mysqld]
innodb_force_recovery = 3

 

起動したら全てのDBをバックアップします。

mysqldump -u root -p -x –all-databases > alldatabase.dump

mysqlを停止し、mysqlで始まるDB以外をすべて削除します。
sudo service mysql stop
su
sudo rm -rf `ls -d /var/lib/mysql/* | grep -v “/var/lib/mysql/mysql”`

リカバリ設定をもとに戻して起動し、バックアップから復元して問題なく動けば完了です。

sudo vi /etc/mysql/my.cnf

[mysqld]
innodb_force_recovery = 0

sudo service mysql start
mysql -u root -p < alldatabase.dump

 

 

反省点
・efibootmgrを入れておく必要があることを知らなかったため、すでに既存のブート設定を潰してしまった。
更にchroot環境でapt-getができなかったので、パッケージを落としてdpkgしたらどうにかなった
・わけも分からず/bootを消してしまった。
当たり前だがカーネルが入っているのでuefiだろうが絶対消してはいけません。
以前取得していたバックアップイメージをマウントして対応した。
なお、gpt変換後はmbrパーティションが触れなくなった(ぶっ壊した?)ので、ルートの/bootにコピーした。
sudo mount -t ext2 -o loop,offset=65536 boot.img /mnt-boot
sudo cp -r /mnt-boot/* /mnt/boot

QNAPをMini-ITXケースとして使う 完成編

前回前々回とQNAPをMini-ITXなケースとして使うべく試行錯誤をしてきましたが、今回はいよいよ完成編となります。

早速前回の続きですが、硬すぎて削ることを諦めたバックパネルを自作していきます。

20190315_224407

といっても、現物合わせでアルミ板を曲げていくだけなのですが…。

0.5mm厚のアルミ板を加工していきます。L字アングルで治具を作ってみたところ割ときれいに曲げることができました。

line_1552660890250

仮ではめてみたところ。

一発では寸法が合わず、曲げ直したりしたためにみすぼらしい見た目になっています。

20190317_215049

バックパネルやファンのスペースを切り取り、ネジ穴を開けたところです。

このあとACアダプタ用に穴を追加しています。

この工程ではハンドニブラが大活躍でした。

20190317_224715

最終的に完成したのがこんな感じ。

どうにか概ねそれっぽいサイズにまとめることができました。バックパネルをうまいことはめるのがめちゃくちゃ大変でした。

ちなみにファンは手持ちの静音ファンに交換しています。

 

続いてバックプレーンの作成です。

正直、ケーブルをつないで終わりにしようかと思ったのですが、ここまで来たらきれいにしてやりたい。

ということで、とりあえずアマゾンでこんなオスーメスアダプタを見つけ、4つ注文しました。

20190315_215624

1つ600円ぐらいするので、ここに来て結構な出費…。

オス側コネクタとネジ穴(?)の間あたりをのこぎりで削って固定金具に並べます。

20190317_094644

HDDをはめてみて位置を合わせながらホットボンドで固定します。

結果的にこれで問題なく接続して、フロントから抜き差しすることができるようになりました。

 

最後にフロントパネルの配線です。

フロントのUSBは2.0ですが、通常のマザーにあるコネクタではなかったため(名前忘れた)、ジャンクでケーブルを買ってきてコネクタをハンダ付けしました。

フロントスイッチはこれまた独自のコネクタでマザーまで伸びていたため、ピンアサインを調べつつ手持ちのジャンパワイヤを接続しました。

20190317_102121

 

続いてLEDですが、電源をSTATUSランプ、HDDをLANランプに接続することにしました。

HDDに個別のLEDがついているのですが、流石に難しそうだったので諦めました。

こちらもピンアサインを調べつつジャンパワイヤをつないであります。

 

20190317_094635

 

 

最後に電源の設置です。

これは多少ずれても問題ないと思いますので、既存のネジ穴で使えそうなやつ一箇所でとめています。

20190317_224707

そしてすべてのケーブルを接続したのがこちらになります。

どうにか収めることができました。

 

最後に蓋を締めて完成です!

20190317_231300最初と全く変化が見られませんが、Mini-ITXマシンに進化を遂げております。

一通り作業してみての結論は、

QNAPのNASはMini-ITXのケースとして使用することができる

です!一部加工はいりますが、バックパネルとかにこだわらなければもっと簡単に済ませることもできそうですね。

おそらく今回使用したTS-410と同じ筐体を持つモデルであればすべて可能だと思われます。

市販のケースでMini-ITXかつフロントからHDDをマウントでき、ここまで小型なものは存在しないのではないでしょうか。

また、2ベイモデル、6ベイモデル、8ベイモデル等もありますので、状況に合わせて選択していただければと思います。

まぁ、わざわざこんな手間をかけてQNAPを改造する方が他にいるかわかりませんが…。

 

本体が完成したのであとはHDDを入れ替えるだけ!だと思っていたのですが…

UEFIオンリーという壁に阻まれ、今度はLinuxにも手を加えるのでした。

もう少しだけ続きます!

 

関連記事

  1. QNAPをMini-ITXケースとして使う 構想編
  2. QNAPをMini-ITXケースとして使う 取り付け編
  3. QNAPをMini-ITXケースとして使う 完成編(本記事)

 

QNAPをMini-ITXケースとして使う 取り付け編

前回は「QNAPをMini-ITXケースとして使う 構想編」ということで、自宅サーバーのリプレースに向けてパーツを選定するところまで終わりました。

選定したパーツは次の通り

  • ケース:QNAP TurboNAS TS-410
  • CPU、マザーボード:ASRock J4105(オンボード)
  • メモリ:PATRIOT DDR4 SO-DIMM 8GB
  • 電源:玄人志向 ACアダプター 120W

実際に購入したQNAPはこんな感じ。ジャンクで4000円でした。

20190311_230022

今回はこのNASにMini-ITXのマザーボードをどうにか突っ込んでいきたいと思います。

早速分解していきましょう。

20190311_231613

背面にある3つのネジを取り除くとカバーを外すことができます。

他のモデルでは上部のスペースにFlexATXと思われる電源が搭載されていたようですが、TS-410はスカスカです。

固定するネジ穴はあるようですので、背面パネルさえ加工すれば取り付けられるかもしれません。

20190311_233213

マザーボード、バックプレーンを外したところです。

マザーボードは170x170mmで、なんとぴったりMini-ITXサイズです!これは期待できそう。

バックプレーンはPCIe x4で接続し、マザーボードから電源を給電するようです。

他のマザーで使用できるかはわかりません。

20190312_212055

更にフロントパネルを取り外したところです。

ネジ6本で固定されているのですが、結構奥まったところにあるので使用するドライバーに注意してください。

20190313_232523

前回も紹介しましたが、取り付けて行くパーツはこんな感じです。

20190313_234134

 

とりあえずネジ穴が一致することがわかったので、取り付けて見たのがこんな感じ。

メモリは横向きのスロットに取り付けることでなんとか回避できました。

写真のメモリ横に来ている部分が出っ張っているので、ここさえ回避できれば取り付けられそうです。

右端に写っていますが、LANポートが完全に干渉しています。ここはケースの加工が必要になります。

 

20190313_234123

こちらは後ろから撮った写真です。

CPUのヒートシンクがかなり際どい位置になっています。というかバックプレーンの固定金具が完全に接触しています。

接触していますが、固定金具側のネジは問題なくとめられるためこのままいくことにしました。

20190314_001743

バックパネルとLANポートとの干渉を解決するために、ケース側を加工することにしました。

マスキングテープの内側をハンドニブラで削って行きます。

が、これがめちゃくちゃ大変…。ハンドニブラは一回に削れるのが2mm程度な上、ケース側の素材が無駄にしっかりしています。

バックパネル部分を削るなんて何ヶ月かかるかわかりません。

LANポートとの干渉部分だけハンドニブラで切り取り、バックパネルはすべて自作することにしました。

このあとバックパネルの作成と電源等の配線をしていくのですが、長くなってしまいましたので、また次の記事で紹介させていただきます.。

果たして蓋は閉まるのか!

 

関連記事

  1. QNAPをMini-ITXケースとして使う 構想編
  2. QNAPをMini-ITXケースとして使う 取り付け編(本記事)
  3. QNAPをMini-ITXケースとして使う 完成編

QNAPをMini-ITXケースとして使う 構想編

お久しぶりです。私です。

以前から自宅サーバーの調子が悪く、LANカードやSATAカードで騙し騙しやり過ごしていたのですが、この度機器更新が実現できました。

20190317_224707

最終的に、QNAPのNASをケースにしてMini-ITXマザーを動かすことで理想的な環境を構築することができたので、その顛末をまとめておきます。

 

老朽化に加え、最近はなにかとダウンサイジング欲が凄くて、メインマシンもMini-ITXで組み直したばかりでした。

そのため、サーバーもMini-ITX化目指して構想を練ってみることにしました。

 

思いついた要件はこんな感じ。

  • メモリ8GB以上
  • 現環境(Xeon-1220Lv2)と同じぐらいのパワー
  • 消費電力の削減(現在35-40Wh)
  • HDD3〜4ベイ(フロントから抜き差しできると尚良)
  • ケースはできる限りコンパクト

 

まずはCPUの選定なのですが、1220Lv2と同等の性能・消費電力(TDP17w)なんていう都合の良いものは存在せず…

そもそもかつてESXiなどを動かしていた時に選んだものだったので、今後はここまでの性能は必要ないだろうという結論に。

というわけで、Mini-ITXオンボードで省電力なJ4105が候補に上がってきました。

メーカーの選択肢がASRock J4105-ITXしかなかったですが、私はASRock信者なのでむしろ大歓迎です。

 

そうするとメモリがDDR4 SO-DIMMになるため、新調する必要がでてきます。

今までは2GB*4で8GBだったのですが、消費電力削減のために8GB*1が良さそうです。

ここはアマゾンで一番安いPATRIOTのやつにしました。

さらに消費電力を削減するため、電源の交換も検討することにしました。

消費電力35-40Whに対し、現在の電源は750W。かなりのオーバースペックです。

変換効率を考えると、100Wもあれば十分ですよね。

これくらいの小容量電源となると、必然的にACアダプタ駆動のものとなります。

PICO PSUのパチモンにしようかと思ったのですが、サーバーとして連続稼働させるにはちょっと不安。

結果、玄人志向の120W AC電源を選択しました。

20190313_232523

最後にこれらのパーツを詰め込むケースの選定です。

現在はフロントから7つのHDDをマウントできるケースを使っているのですが、稼働しているHDDは3本。

予備を考えても4つ分のスペースがあれば良さそうです。

ホットスワップはできなくていいので、とにかくフロントから抜き差しできるのが楽だしかっこいい。

ITXでHDD4本のベイ付きとなると、新品ではもはや製品がありません…。

5インチベイに後付でも実現できるのですが、HDD4本を載せるためには5インチベイ*2が必要となり、小型のITXケースではほとんど存在しません。

さらに、市販のものは大体ATX電源になってしまうので、理想より一回り大型になってしまいます。

ヤフオクに出ているサーバーのバラし品もありましたが、バックプレーンの耐久性が不安だったのと、あまりデザインが好みではありません。

いっそHPのマイクロサーバーも考えたのですが、中古は消耗してそうな上に高い。

 

しばらくの検討の末、もはやNASにしてしまおうかと検索していて見つけたのがこの記事。

QNAP TS-659 TurboNASを分解する – まず分解。

QNAPの6ベイNASであるTurboNAS TS-659を分解している記事なのですが、

雰囲気はFlexATXマザーボードのようですが

という記述があり、掲載されている写真を見てもITXに近いサイズのマザーボードに見受けられます。

そこで、同じシリーズの4ベイ製品であるTS-459の筐体サイズを調べてみると、180x177x235mmと判明。

ITX規格のマザーボードは170x170mmなので、ほぼジャストサイズ…!

これ、もしかしてもしかするとMini-ITXが載るんじゃないか?

 

しかし、どれだけググっても先駆者が出てきません。まぁ、NASを買う層と自作している層は違うからね。

これで万が一ネジ穴が合わなかったとしても、ホットボンドという強い味方がいます。

電源もAC化することで小型になり融通が利くため、とにかく箱に収めることはできそうです。

そして試しにメルカリを覗いてみると、ジャンクのTS-410が4000円で出品されているではないですか。

同世代なら中の構造も大体共通化されているはずですし、筐体サイズも同じ。

これは、私が先駆者になるしかない。

20190311_230022そして到着したQNAP。

QNAPはMini-ITXの夢を見るのか?

中編へ続く!

 

関連記事

  1. QNAPをMini-ITXケースとして使う 構想編(本記事)
  2. QNAPをMini-ITXケースとして使う 取り付け編
  3. QNAPをMini-ITXケースとして使う 完成編

Linuxに追加したユーザーのメールが受信ができない

1時間ほどハマったので急遽メモです。

ubuntuに新規ユーザーを追加し、Postfix+dovecotで構築しているメールサーバーにてメールのやり取りを行う際のお話です。

我がサーバーではgoogleのsmtpサーバーを経由してメールを送信させているのですが、google側で設定をする際に確認コードを受信する必要があります。

ローカルでのメールのやり取りはできているようだったのですが、外部からはだめ。

何回やってもこれが届かなかったため、ログを確認してみたところ、

Recipient address rejected:

というメッセージとともにgoogleからのメールが拒否されているようでした。

 

ネットで検索してみたところ、postfixの設定で、知らないローカルユーザー宛のメールを弾くようになっているとのこと。

/etc/postfix/main.cfの記述では

local_recipient_maps = unix:passwd.byname $alias_maps

となっており、確かにそうなっています。

しかし、今回は明らかに追加したてホヤホヤの存在するユーザーのハズ。

 

結局、ダメ元でpostfixを再起動してみたところメールが到着しました・・・。

なんでどのサイトにも書いてないの・・・。

 

ちなみに、再起動してもだめな場合は、

local_recipient_maps =

という感じで設定を無効にしておくと良さそうです。