カラクリサイクル

『輝かしい青春』なんて無かった人の雑記

CoreOSのLive ISO作るbash scriptを書きました

概要: だれにも〜はんのうされない〜


こんにちま!

先週の病院を受診して薬を変えた結果、それなりに鬱から脱しつつある、 にゃるらコト岡村 直樹(25)です。皆様お久しぶりです。 もうちょっと更新頻度上げたいです。

で、そんな近状はまあどうでも良いとして、 僕は先ほど、布団にくるまって眠気に誘われながら、 @miyagawaさんのPostCastであるRebuild.FM

を聴いておりました。

で、内容等についてはリンク先からPodCast聴いてね! って感じなのですが、今回のエピソードの話題に上ったキーワードで、

とか有るのですが、こういうキーワードのコンテキストにおいて、 これからメジャーになるんじゃね? というLinux Distributionに、

というのが有ります。

この CoreOS、というのは、どういうLinuxか、と言うと、 次世代のサーバOS、特にImmutable Infrastructureとか、 そういう感じの文脈において、それに特化した、 管理が用意なサーバOSを作ろう! という感じのLinuxです。

んで、このCoreOS、現時点(2013-11-07)において、

  • Vagrant
    • VirtualBox
    • VMware
  • Amazon EC2
  • QEMU/KVM
  • OpenStack
  • Rackspace
  • PXE boot

のイメージは用意されているんですが、まだAlphaな関係か、

_人人人人人人人人人人人人人人_
> Bootable ISOが無い!!! <
 ̄YYYYYYYYYYYYY

という状態なため、僕は、

え、ISOの持ち込める格安VPSにぶっ込めないじゃん!

クソ、こうなったら、よろしい、ならば作成戦争だ!

という感じになり、

を先日作りました。確か数日前ぐらい。 ちなみにリンク先はGithubです。

で、このスクリプト(makeiso.sh)は使いかたはものすごく簡単で、

  • bash
  • curl
  • tar
  • mkisofs (これは大体のdistributionでcdrtoolsに含まれてる)

を用意した上で、

$ ./makeiso.sh

するだけで、CoreOSのLive ISOが作成できます。Yay !

で、このmakeiso.shなんですが、やってるコトとしては、

  1. CoreOSのPXE Boot用のKernelとInitrdをDL
  2. BootloaderとしてsyslinuxもDL
  3. それぞれのファイルを適切に配置
  4. mkisofsでISOを作成
  5. 上手に焼けましたー♪

という感じです。いや、まあBash scriptなんで、 実物見た方が早いかもですが。

で、このmakeiso.shで作ったISOは、bootableかつコンパクトなので、 例えば、ISOイメージを持ち込めるVPSにぶっ込んでCoreOSをVPSにインスコしたり、あるいはLive ISOとしてCoreOSの体験版みたいに使ったり、 もしくは、実際にUSBメモリとかSDカードとかに焼いて、 サーバ実機にCoreOSをインスコするのに使ったり、 というコトができます。イエ-イ!

で、もしVPSなり実機にCoreOSをインストールする、という場合には、 coreos-installコマンドを使って、

$ sudo coreos-install -d /dev/sda

という感じでCoreOSのblob imagesをストレージに配置した後、

$ sudo su -

rootになって、

# echo 1 > /sys/block/sda/device/rescan

して、/dev/sdXにインストールされたCoreOSのパーティションを読み込ませ、

$ sudo mount /dev/sda9 /mnt
$ mkdir -p /mnt/overlays/home/core/.ssh
$ cp ~core/.ssh/authorized_keys /mnt/overlays/home/core/.ssh/
$ chmod 0700 /mnt/overlays/home/core/.ssh/
$ sudo umount /mnt

という感じで、authorized_keysをインストールされたCoreOSの~/.sshに配置する必要があります。

何故これが必要かっていうと、CoreOSはsshの鍵認証方式でしがログインできないからです。つまり秘密鍵なくすとログインすら不可。世は無情である。まあ、ログインできなくなった場合、VM上でLive ISOを再Bootさせて、新しい方の鍵を登録すればなんとかなりますけどね。面倒ですけど。

で、あとmakeiso.shの注意点としては、

  • sshの認証鍵はデフォルトでisoを作ったマシンの~/.ssh/id_rsa.pubを使用
  • CoreOSのバージョン等、ISOを作る際のパラメーターは決めうち
    • これはmakeiso.shを直接編集して調整してください

という辺りでしょうか。

また今回書いたスクリプトである、

は、README.mdにも書いてある通り、 パブリックドメインとして著作権は放棄したので、 あとはもう似るなり焼くなり自由にお使いください。 っていうかこういう有益なスクリプトにライセンスつけるって合わないよね、と僕は思う。誰にでもかけそうだしね。誰に改造してもらってもうちっとマシにしてほしいという気持ちもあるけど。


というワケで、先日作ったCoreOS's Live ISOを作るためのBash Scriptの話はそんな感じなんですが、実はその前に、QiitaとGistの方に、

というような記事を英語で書いておりました。

ただまあ、さすがにfreenodeの#coreosに流してCommunication by Englishする勇気とやる気と根気がなかったので、数日前から放置しておりましたが、そうだ、これBash Scriptとしてまとめた方が使い勝手良くね? とか思い、Public domainなBash Scriptに落とし込んだ、というのが今回の話です。

まあ僕は最近、鬱の症状がまったくもって抜けんという感じで、 プログラミングとか全然できてなかったんですが、今週の月曜日からようやく体調が持ち直してきて、

意欲的に何かに取り組むってこんな感じだったんだ!

というのを実感しております。 いや、何だろう、このあふるるやる気。 何だろう、このハイテンション感。 まさかと思うけど、躁状態ではないよね?これ。 とか若干思わないでもないですが。

ま、そんな感じで、もう数ヶ月ぶりにやる気とか元気とかを取り戻してきたので、もうちょっと、ブログとかプログラミングとか、 そういった創作的な活動を増やしていきたいなーと思ってます。

と言うワケで以上、約一ヶ月ぶりの更新でした。 makeiso.sh、よかった使ってみてください。

それでは。

ノシ