SlideShare a Scribd company logo
1 of 25
Download to read offline
Twitter : @masami256
Mail : masami@fedoraproject.org
Anaconda Overview
●
    Stage1,2 の 2 段階でインストーラが起動
●   Stage1
       ●
           ブートオプション処理
       ●
           メディアチェック
       ●
           ネットワーク設定(必要なら)
       ●   Stage2 の実行
●   Stage2
       ●
           言語、キーボード、パーティション設定などの
            実際のインストール処理
これが出ると Stage1 完了
Anaconda Programming



C(Stage1) と Python(Stage2)
      GUI は PyGtk
Anaconda UI
●
    インストーラの機能( GUI を使う場合)は以
    下のファイルにクラスを登録
●   dispatch.py
●   gui.py
●   installclass.py
dispatch.py
●
     インストール手順に関するファイル
         ●
             各機能が動く順番を設定
         ●   次のステップに進む / 前のステップに戻るなど
              の処理を実施
    installSteps = [
       ("kernelvm_top", ),
       ("installTinyCoreNag", installTinyCoreNagScreen, ),



     キー名
                                            関数名
gui.py
●
     GUI に関する基本的な処理を実施
●
     変数 stepToClass にキー名とファイル名、クラ
     ス名を設定

    stepToClass = {
       "kernelvm_top" : ("kernelvm_top_gui",
      "KernelvmTopWindow"),
installcalss.py
●



●
    dispatch クラスに dispath.py で登録したキー名を登録

    dispatch.setStepList(
              "kernelvm_top",
              "installTinyCoreNag",
Anaconda UI and Logic
●
    UI 周りの処理と、実際の処理はファイルが分
    かれてます
      ●   pyanaconda/language.py
             –   言語回りでの処理を実施
      ●   pyanaconda/iw/language_gui.py
             –   Langauge の画面に関する処理
●
    GUI のコード
      ●   PyGtk の場合は pyanaconda/iw
      ●   テキストの場合は pyanaconda/textw
iw/kernelvm_top_gui.py
class 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
kerenelvm_top.py
class kernelvm_top (object):

  def __init__ (self, display_mode = 'g'):
    pass

  def write(self, instPath):
    pass

  def writeKS(self, f):
    pass
Anaonda Testing
●
    iso イメージ作るのは大変です><
●
    既存の iso イメージ弄るのも面倒
●
    そこで updates.img の出番です!
updates.img
●
    make updates するだけ
      ●   updates.img というファイルができます
      ●   差分のあるファイルのみを抽出して cpio でまと
           めて gzip したファイルです
      ●   .spec ファイルのリリースバージョン、 git の
            tag から差分を見ているようです
●
    ブート時にオプションを渡します
      ●   updates=http://10.0.2.2/updates.img
Anaconda 弄りは割と手軽にできますね ^q^
ってことで作りました
Linux の代わりに自作カーネルのインストール
誰得?
変更箇所
●   yuminstall.py
        ●   rpm ファイルのインストール部分
●   bootloader.py
        ●   Grub 周りの処理
●
packages.py
def 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)
bootloader.py
def 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 にコピー
bootloader.py
def 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'))
カーネル自作したら
Anaconda でインストーラを作り
  配布しましょう\ (^o^) /
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

More Related Content

What's hot

Casperjsのインストール
CasperjsのインストールCasperjsのインストール
CasperjsのインストールKohei Misu
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよnpsg
 
A_road_to_AMBER_simulations_ver_1.0
A_road_to_AMBER_simulations_ver_1.0A_road_to_AMBER_simulations_ver_1.0
A_road_to_AMBER_simulations_ver_1.0Satoshi Kume
 
Cygwin 1.7 の紹介
Cygwin 1.7 の紹介Cygwin 1.7 の紹介
Cygwin 1.7 の紹介fd0
 
パケットジェネレータipgenから見るnetmap
パケットジェネレータipgenから見るnetmapパケットジェネレータipgenから見るnetmap
パケットジェネレータipgenから見るnetmapfurandon_pig
 
UEFI時代のブートローダ
UEFI時代のブートローダUEFI時代のブートローダ
UEFI時代のブートローダTakuya ASADA
 
MacPort_&_FTP_ver1.0
MacPort_&_FTP_ver1.0MacPort_&_FTP_ver1.0
MacPort_&_FTP_ver1.0Satoshi Kume
 
Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタl_b__
 
Introduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and DracutIntroduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and DracutTaisuke Yamada
 
SELinux_Status_PoC_20170516
SELinux_Status_PoC_20170516SELinux_Status_PoC_20170516
SELinux_Status_PoC_20170516SecureOSS-Sig
 
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12Nobuto Murata
 

What's hot (20)

Casperjsのインストール
CasperjsのインストールCasperjsのインストール
Casperjsのインストール
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
 
190925 python-windows
190925 python-windows190925 python-windows
190925 python-windows
 
A_road_to_AMBER_simulations_ver_1.0
A_road_to_AMBER_simulations_ver_1.0A_road_to_AMBER_simulations_ver_1.0
A_road_to_AMBER_simulations_ver_1.0
 
Cygwin 1.7 の紹介
Cygwin 1.7 の紹介Cygwin 1.7 の紹介
Cygwin 1.7 の紹介
 
パケットジェネレータipgenから見るnetmap
パケットジェネレータipgenから見るnetmapパケットジェネレータipgenから見るnetmap
パケットジェネレータipgenから見るnetmap
 
Gstreamer Basics
Gstreamer BasicsGstreamer Basics
Gstreamer Basics
 
UEFI時代のブートローダ
UEFI時代のブートローダUEFI時代のブートローダ
UEFI時代のブートローダ
 
Lxc on cloud
Lxc on cloudLxc on cloud
Lxc on cloud
 
initramfsについて
initramfsについてinitramfsについて
initramfsについて
 
MacPort_&_FTP_ver1.0
MacPort_&_FTP_ver1.0MacPort_&_FTP_ver1.0
MacPort_&_FTP_ver1.0
 
Iocage
IocageIocage
Iocage
 
Linux Namespaces
Linux NamespacesLinux Namespaces
Linux Namespaces
 
Outputz.vim
Outputz.vimOutputz.vim
Outputz.vim
 
Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタ
 
Introduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and DracutIntroduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and Dracut
 
SELinux_Status_PoC_20170516
SELinux_Status_PoC_20170516SELinux_Status_PoC_20170516
SELinux_Status_PoC_20170516
 
Play with UEFI
Play with UEFIPlay with UEFI
Play with UEFI
 
Patch101
Patch101Patch101
Patch101
 
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12
 

Viewers also liked

あなたの知らないネットワークプログラミングの世界
あなたの知らないネットワークプログラミングの世界あなたの知らないネットワークプログラミングの世界
あなたの知らないネットワークプログラミングの世界Ryousei Takano
 
100Gbpsソフトウェアルータの実現可能性に関する論文
100Gbpsソフトウェアルータの実現可能性に関する論文100Gbpsソフトウェアルータの実現可能性に関する論文
100Gbpsソフトウェアルータの実現可能性に関する論文y_uuki
 
User-space Network Processing
User-space Network ProcessingUser-space Network Processing
User-space Network ProcessingRyousei Takano
 
xv6のコンテキストスイッチを読む
xv6のコンテキストスイッチを読むxv6のコンテキストスイッチを読む
xv6のコンテキストスイッチを読むmfumi
 
デバドラを書いてみよう!
デバドラを書いてみよう!デバドラを書いてみよう!
デバドラを書いてみよう!Masami Ichikawa
 
I/O仮想化最前線〜ネットワークI/Oを中心に〜
I/O仮想化最前線〜ネットワークI/Oを中心に〜I/O仮想化最前線〜ネットワークI/Oを中心に〜
I/O仮想化最前線〜ネットワークI/Oを中心に〜Ryousei Takano
 
Disruptive IP Networking with Intel DPDK on Linux
Disruptive IP Networking with Intel DPDK on LinuxDisruptive IP Networking with Intel DPDK on Linux
Disruptive IP Networking with Intel DPDK on LinuxNaoto MATSUMOTO
 
x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチMasami Ichikawa
 
クラウド環境におけるキャッシュメモリQoS制御の評価
クラウド環境におけるキャッシュメモリQoS制御の評価クラウド環境におけるキャッシュメモリQoS制御の評価
クラウド環境におけるキャッシュメモリQoS制御の評価Ryousei Takano
 
Xeon dとlagopusと、pktgen dpdk
Xeon dとlagopusと、pktgen dpdkXeon dとlagopusと、pktgen dpdk
Xeon dとlagopusと、pktgen dpdkMasaru Oki
 
Dpdk環境の話
Dpdk環境の話Dpdk環境の話
Dpdk環境の話Masaru Oki
 
Intel 82599 10GbE Controllerで遊ぼう
Intel 82599 10GbE Controllerで遊ぼうIntel 82599 10GbE Controllerで遊ぼう
Intel 82599 10GbE Controllerで遊ぼうTakuya ASADA
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化Takuya ASADA
 

Viewers also liked (16)

あなたの知らないネットワークプログラミングの世界
あなたの知らないネットワークプログラミングの世界あなたの知らないネットワークプログラミングの世界
あなたの知らないネットワークプログラミングの世界
 
Bish Bash Bosh & Co
Bish Bash Bosh & Co Bish Bash Bosh & Co
Bish Bash Bosh & Co
 
πολλαπλασιασμοι ενοτητα 11
πολλαπλασιασμοι ενοτητα 11πολλαπλασιασμοι ενοτητα 11
πολλαπλασιασμοι ενοτητα 11
 
100Gbpsソフトウェアルータの実現可能性に関する論文
100Gbpsソフトウェアルータの実現可能性に関する論文100Gbpsソフトウェアルータの実現可能性に関する論文
100Gbpsソフトウェアルータの実現可能性に関する論文
 
User-space Network Processing
User-space Network ProcessingUser-space Network Processing
User-space Network Processing
 
xv6のコンテキストスイッチを読む
xv6のコンテキストスイッチを読むxv6のコンテキストスイッチを読む
xv6のコンテキストスイッチを読む
 
デバドラを書いてみよう!
デバドラを書いてみよう!デバドラを書いてみよう!
デバドラを書いてみよう!
 
I/O仮想化最前線〜ネットワークI/Oを中心に〜
I/O仮想化最前線〜ネットワークI/Oを中心に〜I/O仮想化最前線〜ネットワークI/Oを中心に〜
I/O仮想化最前線〜ネットワークI/Oを中心に〜
 
Disruptive IP Networking with Intel DPDK on Linux
Disruptive IP Networking with Intel DPDK on LinuxDisruptive IP Networking with Intel DPDK on Linux
Disruptive IP Networking with Intel DPDK on Linux
 
x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチ
 
クラウド環境におけるキャッシュメモリQoS制御の評価
クラウド環境におけるキャッシュメモリQoS制御の評価クラウド環境におけるキャッシュメモリQoS制御の評価
クラウド環境におけるキャッシュメモリQoS制御の評価
 
DPDKを拡張してみた話し
DPDKを拡張してみた話しDPDKを拡張してみた話し
DPDKを拡張してみた話し
 
Xeon dとlagopusと、pktgen dpdk
Xeon dとlagopusと、pktgen dpdkXeon dとlagopusと、pktgen dpdk
Xeon dとlagopusと、pktgen dpdk
 
Dpdk環境の話
Dpdk環境の話Dpdk環境の話
Dpdk環境の話
 
Intel 82599 10GbE Controllerで遊ぼう
Intel 82599 10GbE Controllerで遊ぼうIntel 82599 10GbE Controllerで遊ぼう
Intel 82599 10GbE Controllerで遊ぼう
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化
 

Similar to とある帽子の大蛇料理Ⅱ

もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順Hide Koba
 
Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御Norito Agetsuma
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on dockerHiroshi Miura
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on dockerHiroshi Miura
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Mori Shingo
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門Yosuke Onoue
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス5mingame2
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介Etsuji Nakai
 
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondInfinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondTaisuke Yamada
 
ソフトウェア工学2023 07 バージョン管理
ソフトウェア工学2023 07 バージョン管理ソフトウェア工学2023 07 バージョン管理
ソフトウェア工学2023 07 バージョン管理Toru Tamaki
 
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書くLinuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書くTetsuyuki Kobayashi
 
Hatochan's Resume 20130216@Koedolug
Hatochan's Resume 20130216@KoedolugHatochan's Resume 20130216@Koedolug
Hatochan's Resume 20130216@KoedolugKentaro Hatori
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929hiro345
 

Similar to とある帽子の大蛇料理Ⅱ (20)

about DakotagUI
about DakotagUIabout DakotagUI
about DakotagUI
 
Gulp ことはじめ
Gulp ことはじめGulp ことはじめ
Gulp ことはじめ
 
もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順
 
Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
 
Capistrano
CapistranoCapistrano
Capistrano
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス
 
Ansible2.0と実用例
Ansible2.0と実用例Ansible2.0と実用例
Ansible2.0と実用例
 
0621 ndk game
0621 ndk game0621 ndk game
0621 ndk game
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondInfinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
 
ソフトウェア工学2023 07 バージョン管理
ソフトウェア工学2023 07 バージョン管理ソフトウェア工学2023 07 バージョン管理
ソフトウェア工学2023 07 バージョン管理
 
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書くLinuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書く
 
Hatochan's Resume 20130216@Koedolug
Hatochan's Resume 20130216@KoedolugHatochan's Resume 20130216@Koedolug
Hatochan's Resume 20130216@Koedolug
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
Metro
MetroMetro
Metro
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929
 

More from Masami Ichikawa

More from Masami Ichikawa (7)

Linux debug
Linux debugLinux debug
Linux debug
 
Slub alloc and free
Slub alloc and freeSlub alloc and free
Slub alloc and free
 
Slub data structure
Slub data structureSlub data structure
Slub data structure
 
SystemV IPC
SystemV IPCSystemV IPC
SystemV IPC
 
Linux Namespace
Linux NamespaceLinux Namespace
Linux Namespace
 
Gnomeとdogtai
GnomeとdogtaiGnomeとdogtai
Gnomeとdogtai
 
Minix smp
Minix smpMinix smp
Minix smp
 

Recently uploaded

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Recently uploaded (9)

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 

とある帽子の大蛇料理Ⅱ

  • 1. Twitter : @masami256 Mail : masami@fedoraproject.org
  • 2. Anaconda Overview ● Stage1,2 の 2 段階でインストーラが起動 ● Stage1 ● ブートオプション処理 ● メディアチェック ● ネットワーク設定(必要なら) ● Stage2 の実行 ● Stage2 ● 言語、キーボード、パーティション設定などの 実際のインストール処理
  • 4.
  • 5. Anaconda Programming C(Stage1) と Python(Stage2) GUI は PyGtk
  • 6. Anaconda UI ● インストーラの機能( GUI を使う場合)は以 下のファイルにクラスを登録 ● dispatch.py ● gui.py ● installclass.py
  • 7. dispatch.py ● インストール手順に関するファイル ● 各機能が動く順番を設定 ● 次のステップに進む / 前のステップに戻るなど の処理を実施 installSteps = [ ("kernelvm_top", ), ("installTinyCoreNag", installTinyCoreNagScreen, ), キー名 関数名
  • 8. gui.py ● GUI に関する基本的な処理を実施 ● 変数 stepToClass にキー名とファイル名、クラ ス名を設定 stepToClass = { "kernelvm_top" : ("kernelvm_top_gui",   "KernelvmTopWindow"),
  • 9. installcalss.py ● ● dispatch クラスに dispath.py で登録したキー名を登録 dispatch.setStepList( "kernelvm_top", "installTinyCoreNag",
  • 10. Anaconda UI and Logic ● UI 周りの処理と、実際の処理はファイルが分 かれてます ● pyanaconda/language.py – 言語回りでの処理を実施 ● pyanaconda/iw/language_gui.py – Langauge の画面に関する処理 ● GUI のコード ● PyGtk の場合は pyanaconda/iw ● テキストの場合は pyanaconda/textw
  • 11. iw/kernelvm_top_gui.py class 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
  • 12. kerenelvm_top.py class kernelvm_top (object): def __init__ (self, display_mode = 'g'): pass def write(self, instPath): pass def writeKS(self, f): pass
  • 13.
  • 14. Anaonda Testing ● iso イメージ作るのは大変です>< ● 既存の iso イメージ弄るのも面倒 ● そこで updates.img の出番です!
  • 15. updates.img ● make updates するだけ ● updates.img というファイルができます ● 差分のあるファイルのみを抽出して cpio でまと めて gzip したファイルです ● .spec ファイルのリリースバージョン、 git の tag から差分を見ているようです ● ブート時にオプションを渡します ● updates=http://10.0.2.2/updates.img
  • 20. 変更箇所 ● yuminstall.py ● rpm ファイルのインストール部分 ● bootloader.py ● Grub 周りの処理 ●
  • 21. packages.py def 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)
  • 22. bootloader.py def 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 にコピー
  • 23. bootloader.py def 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'))
  • 25. 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