Twitter : @masami256Mail : masami@fedoraproject.org
Anaconda Overview●    Stage1,2 の 2 段階でインストーラが起動●   Stage1       ●           ブートオプション処理       ●           メディアチェック       ● ...
これが出ると Stage1 完了
Anaconda ProgrammingC(Stage1) と Python(Stage2)      GUI は PyGtk
Anaconda UI●    インストーラの機能( GUI を使う場合)は以    下のファイルにクラスを登録●   dispatch.py●   gui.py●   installclass.py
dispatch.py●     インストール手順に関するファイル         ●             各機能が動く順番を設定         ●   次のステップに進む / 前のステップに戻るなど              の処理を実...
gui.py●     GUI に関する基本的な処理を実施●     変数 stepToClass にキー名とファイル名、クラ     ス名を設定    stepToClass = {       "kernelvm_top" : ("kern...
installcalss.py●●    dispatch クラスに dispath.py で登録したキー名を登録    dispatch.setStepList(              "kernelvm_top",           ...
Anaconda UI and Logic●    UI 周りの処理と、実際の処理はファイルが分    かれてます      ●   pyanaconda/language.py             –   言語回りでの処理を実施     ...
iw/kernelvm_top_gui.pyclass KernelvmTopWindow (InstallWindow):   windowTitle = "Kernel/VM" #N_("KernelVM")  def __init__ (...
kerenelvm_top.pyclass kernelvm_top (object):  def __init__ (self, display_mode = g):    pass  def write(self, instPath):  ...
Anaonda Testing●    iso イメージ作るのは大変です><●    既存の iso イメージ弄るのも面倒●    そこで updates.img の出番です!
updates.img●    make updates するだけ      ●   updates.img というファイルができます      ●   差分のあるファイルのみを抽出して cpio でまと           めて gzip し...
Anaconda 弄りは割と手軽にできますね ^q^
ってことで作りました
Linux の代わりに自作カーネルのインストール
誰得?
変更箇所●   yuminstall.py        ●   rpm ファイルのインストール部分●   bootloader.py        ●   Grub 周りの処理●
packages.pydef doInstallTinyCore(self, anaconda):    gzipImage = "/tmp/updates/tinycore.gz"    f = gzip.open(gzipImage, rb...
bootloader.pydef installGrubForTinyCore(anaconda):  Grub の rpm を /mnt/sysimage にインストール   grub-install –root-directroy=/mnt...
bootloader.pydef writeBootloader(anaconda):# for (version, arch, nick) in #anaconda.backend.kernelVersionList(anaconda.roo...
カーネル自作したらAnaconda でインストーラを作り  配布しましょう\ (^o^) /
URL●   Fedora Anaconda repogitory       ●   git://git.fedorahosted.org/git/anaconda.git●   Anaconda for Ore ore kernel    ...
とある帽子の大蛇料理Ⅱ
とある帽子の大蛇料理Ⅱ
Upcoming SlideShare
Loading in...5
×

とある帽子の大蛇料理Ⅱ

734
-1

Published on

第6回カーネル/VM探検隊のLT

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
734
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

とある帽子の大蛇料理Ⅱ

  1. 1. Twitter : @masami256Mail : masami@fedoraproject.org
  2. 2. Anaconda Overview● Stage1,2 の 2 段階でインストーラが起動● Stage1 ● ブートオプション処理 ● メディアチェック ● ネットワーク設定(必要なら) ● Stage2 の実行● Stage2 ● 言語、キーボード、パーティション設定などの 実際のインストール処理
  3. 3. これが出ると Stage1 完了
  4. 4. Anaconda ProgrammingC(Stage1) と Python(Stage2) GUI は PyGtk
  5. 5. Anaconda UI● インストーラの機能( GUI を使う場合)は以 下のファイルにクラスを登録● dispatch.py● gui.py● installclass.py
  6. 6. dispatch.py● インストール手順に関するファイル ● 各機能が動く順番を設定 ● 次のステップに進む / 前のステップに戻るなど の処理を実施 installSteps = [ ("kernelvm_top", ), ("installTinyCoreNag", installTinyCoreNagScreen, ), キー名 関数名
  7. 7. gui.py● GUI に関する基本的な処理を実施● 変数 stepToClass にキー名とファイル名、クラ ス名を設定 stepToClass = { "kernelvm_top" : ("kernelvm_top_gui",   "KernelvmTopWindow"),
  8. 8. installcalss.py●● dispatch クラスに dispath.py で登録したキー名を登録 dispatch.setStepList( "kernelvm_top", "installTinyCoreNag",
  9. 9. Anaconda UI and Logic● UI 周りの処理と、実際の処理はファイルが分 かれてます ● pyanaconda/language.py – 言語回りでの処理を実施 ● pyanaconda/iw/language_gui.py – Langauge の画面に関する処理● GUI のコード ● PyGtk の場合は pyanaconda/iw ● テキストの場合は pyanaconda/textw
  10. 10. iw/kernelvm_top_gui.pyclass KernelvmTopWindow (InstallWindow): windowTitle = "Kernel/VM" #N_("KernelVM") def __init__ (self, ics): InstallWindow.__init__ (self, ics) ics.setGrabNext (1) self.anaconda = None def getScreen (self, anaconda): self.anaconda = anaconda box = gtk.VBox (False, 10) pix = gui.readImageFromFile ("kernelvm.png") if pix: a = gtk.Alignment () a.add (pix) a.set (0.5, 0.5, 1.0, 1.0) a.set_size_request(200, -1) box.pack_start (a, False) box.pack_start(self.createHbox()) return box
  11. 11. kerenelvm_top.pyclass kernelvm_top (object): def __init__ (self, display_mode = g): pass def write(self, instPath): pass def writeKS(self, f): pass
  12. 12. Anaonda Testing● iso イメージ作るのは大変です><● 既存の iso イメージ弄るのも面倒● そこで updates.img の出番です!
  13. 13. updates.img● make updates するだけ ● updates.img というファイルができます ● 差分のあるファイルのみを抽出して cpio でまと めて gzip したファイルです ● .spec ファイルのリリースバージョン、 git の tag から差分を見ているようです● ブート時にオプションを渡します ● updates=http://10.0.2.2/updates.img
  14. 14. Anaconda 弄りは割と手軽にできますね ^q^
  15. 15. ってことで作りました
  16. 16. Linux の代わりに自作カーネルのインストール
  17. 17. 誰得?
  18. 18. 変更箇所● yuminstall.py ● rpm ファイルのインストール部分● bootloader.py ● Grub 周りの処理●
  19. 19. packages.pydef doInstallTinyCore(self, anaconda): gzipImage = "/tmp/updates/tinycore.gz" f = gzip.open(gzipImage, rb) data = f.read() cpioFile = "/tmp/tinycore.cpio" w = open(cpioFile,wb) w.write(data) w.close() f.close() cmd = "cd %(rootPath)s && cpio -id < %(cpiofile)s" %{rootPath : anaconda.rootPath, cpiofile : cpioFile} os.system(cmd)
  20. 20. bootloader.pydef installGrubForTinyCore(anaconda): Grub の rpm を /mnt/sysimage にインストール   grub-install –root-directroy=/mnt/sysimage /dev/sda   grub –batch --device-map=/dev/null << EOFndevice(hd0)t%(sda)s1nroot (hd0)nsetup (hd0)nquitnEOF カーネルを /mnt/sysimage/boot にコピー
  21. 21. bootloader.pydef writeBootloader(anaconda):# for (version, arch, nick) in #anaconda.backend.kernelVersionList(anaconda.rootPath):# if plainLabelUsed:# kernelList.append(("%s-%s" %(kernelLabel, nick),# "%s-%s" %(kernelLongLabel, nick),# version))# else:# kernelList.append((kernelLabel, kernelLongLabel,version))# if nick != "base":# defkern = "kernel-%s" %(nick,)# plainLabelUsed = 1 kernelList.append((miko, miko, 0))
  22. 22. カーネル自作したらAnaconda でインストーラを作り 配布しましょう\ (^o^) /
  23. 23. URL● Fedora Anaconda repogitory ● git://git.fedorahosted.org/git/anaconda.git● Anaconda for Ore ore kernel ● https://github.com/masami256/Anaconda-for- ore-ore-kernel
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×