SlideShare a Scribd company logo
FreeBSDFreeBSD のブートプロセスのブートプロセス
USP 友の会 BSD 担当
今泉光之
@bsdhack
http://bsdhack.org
FreeBSDのブートプロセス 2
講師講師
● 今泉光之
 UNIX/Linux環境でのプログラミングを中心に、ネットワークや
インフラなども含め20年以上に渡る経験だけは積んできました。
 当初はC言語でコンパイラ、Xサーバ、ドライバ、TCP/IPによる
通信などシステム系のプログラミングが主でしたが、最近はPerl
やPHPなどのWeb向けのLLも使っています。
FreeBSDのブートプロセス 3
ブートプロセスブートプロセス
● 最近は UEFI→grub→systemd の流れが主流(?)
●
でも私は BSDHACK だ
● 空気を読まずに FreeBSD のブートプロセス
FreeBSDのブートプロセス 4
ブートとはブートとは
● コンピュータを起動する事、またはそのための一連の動作
● ブートストラップローダに由来する
● ブートストラップとはブーツの後ろについてる輪っか
● 底なし沼に落ちた時にブートストラップを自分で引っ張って沼
から逃げ出したという古いジョークが元ネタ ( 諸説有り)
● 笑ってあげましょう
FreeBSDのブートプロセス 5
BIOSBIOS
● Basic Input Output System
● マザーボード上の ROM に格納されているプログラム
● コンピュータの電源投入時に最初に動作する
● キーボードやディスプレイなどへのアクセスインタ
フェイスなどを提供する
● PC が起動できるのは BIOS のおかげ
FreeBSDのブートプロセス 6
CPUCPU のモードのモード
● Intel の CPU には 2 種類のモードがある
● リアルモード (Real Mode / Real Address Mode)
● プロテクトモード (Protected Virtual Address Mode)
FreeBSDのブートプロセス 7
リアルモードリアルモード
● Intel の 80x86 プロセッサの動作モード
● 8086 互換の動作をするモード
● BIOS は互換性のためにこのモードで動作している
● アクセス保護機能がない
● 16 ビット
● メモリの実アドレスを指定する
FreeBSDのブートプロセス 8
プロテクトモードプロテクトモード
● Intel の 80286 プロセッサ以降の動作モードの一つ
● メモリや I/O の保護機能がある
● ページングとアドレス変換機能がある
● 32 ビット
● 仮想メモリ機能のサポート
● 近代的な OS の機能が実現可能になる
FreeBSDのブートプロセス 9
電源投入電源投入
● PC の電源 ON
● POST(Power On Self Test)
● BIOS
● ブートデバイスの先頭の 1 セクタ (512 バイト ) を読む
● 制御を移す
● ブートローダ
FreeBSDのブートプロセス 10
ブートローダブートローダ
● ハードディスクの第 1 セクタを MBR と呼ぶ
● Master Boot Record
● プログラム領域 :446 バイト
● パーティションテーブル :64 バイト (16 バイト x4)
● マジックナンバー :2 バイト
● MS-DOS の fdisk には /mbr というオプション
FreeBSDのブートプロセス 11
boot0boot0
● FreeBSD 付属のブートローダ
● パーティションテーブルのエントリにアクセスし OS の名前
を表示して起動する OS を選択
– F1 DOS
– F2 FreeBSD
● 次回の起動のために MBR を更新
● 選択されたパーティションの 1 セクタ目に制御を移す
FreeBSDのブートプロセス 12
boot1boot1
● FreeBSD パーティションのブートローダ
● boot2 をロードする
● boot2 で利用するサブルーチンも提供
FreeBSDのブートプロセス 13
boot2boot2
● カーネルや loader をメモリにロードする
● ファイルシステムにアクセス可能
● BTX(BooT eXtender) を内蔵
● プロテクトモードに移行
● /boot.config
FreeBSDのブートプロセス 14
loaderloader
● /boot/loader.rc
● /boot/defaults/loader.conf
● /boot/loader.conf
● カーネルに起動時オプションを指定
– -a 起動中にルートファイルシステムを指定可能
– -s シングルユーザモードで起動
– -v 冗長な出力
FreeBSDのブートプロセス 15
kernelkernel
● メモリアロケータの初期化
● swapper の生成 (pid=0)
● init プロセスの生成 (pid=1)
FreeBSDのブートプロセス 16
initinit
● シングルユーザーモード
● マルチユーザーモード
● /etc/rc を実行
FreeBSDのブートプロセス 17
/etc/rc/etc/rc
● /etc/rc.initdiskless
● /etc/rc.subr
● /etc/defaults/rc.conf
● /etc/rc.conf
● rcorder で起動順序を決定
● システム起動ファイル (/etc/rc.d/) の実行
● ローカル起動ファイル( /usr/local/etc/rc.d/) の実行

More Related Content

What's hot

ターミナル上でのSwift運用 ver.1.1
ターミナル上でのSwift運用 ver.1.1ターミナル上でのSwift運用 ver.1.1
ターミナル上でのSwift運用 ver.1.1
HarutakaMatsumoto
 
ほんとはこわくない Gentoo Linux
ほんとはこわくない Gentoo Linuxほんとはこわくない Gentoo Linux
ほんとはこわくない Gentoo Linux
gion_XY
 
俺のGentooがこんなに可愛いわけがない
俺のGentooがこんなに可愛いわけがない俺のGentooがこんなに可愛いわけがない
俺のGentooがこんなに可愛いわけがない
Takuto Matsuu
 
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
Hiro Yoshioka
 
Preseeding Debian
Preseeding DebianPreseeding Debian
Preseeding Debian
Emma Haruka Iwao
 
バグ報告・翻訳・パッケージング・コード修正・広報活動などなど―OSS に貢献してみるには?
バグ報告・翻訳・パッケージング・コード修正・広報活動などなど―OSS に貢献してみるには?バグ報告・翻訳・パッケージング・コード修正・広報活動などなど―OSS に貢献してみるには?
バグ報告・翻訳・パッケージング・コード修正・広報活動などなど―OSS に貢献してみるには?
Fuminobu Takeyama
 
sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pm
sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pmsphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pm
sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pm
Takeshi Komiya
 
今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて
Takuto Matsuu
 
Gentoo Linuxの紹介
Gentoo Linuxの紹介Gentoo Linuxの紹介
import dpkt したよ #ssmjp 2014/02/28
import dpkt したよ #ssmjp 2014/02/28import dpkt したよ #ssmjp 2014/02/28
import dpkt したよ #ssmjp 2014/02/28
th0x0472
 
FreeBSDで行こう for small server
FreeBSDで行こう for small serverFreeBSDで行こう for small server
FreeBSDで行こう for small server
Tatsumi Naganuma
 
Baremetal rust for_windows
Baremetal rust for_windowsBaremetal rust for_windows
Baremetal rust for_windows
明 高橋
 
Gentooサークル新歓コンパのご案内
Gentooサークル新歓コンパのご案内Gentooサークル新歓コンパのご案内
Gentooサークル新歓コンパのご案内
Takuto Matsuu
 
Programming under capability mode
Programming under capability modeProgramming under capability mode
Programming under capability mode
Yuichiro Naito
 
PXE で linux インストールな本 -1 スピンドルマシンも Linux 化-
PXE で linux インストールな本 -1 スピンドルマシンも Linux 化-PXE で linux インストールな本 -1 スピンドルマシンも Linux 化-
PXE で linux インストールな本 -1 スピンドルマシンも Linux 化-
Kenichiro MATOHARA
 
TUI作業で便利なソフト2題
TUI作業で便利なソフト2題TUI作業で便利なソフト2題
TUI作業で便利なソフト2題
shimadah
 
fdコマンドを使おう
fdコマンドを使おうfdコマンドを使おう
fdコマンドを使おう
Hideaki Miyake
 
S2s websrv201011-presen
S2s websrv201011-presenS2s websrv201011-presen
S2s websrv201011-presen
Kouhei Maeda
 
エンジニアのための痔の話
エンジニアのための痔の話エンジニアのための痔の話
エンジニアのための痔の話
Kouhei Maeda
 

What's hot (20)

ターミナル上でのSwift運用 ver.1.1
ターミナル上でのSwift運用 ver.1.1ターミナル上でのSwift運用 ver.1.1
ターミナル上でのSwift運用 ver.1.1
 
Slide
SlideSlide
Slide
 
ほんとはこわくない Gentoo Linux
ほんとはこわくない Gentoo Linuxほんとはこわくない Gentoo Linux
ほんとはこわくない Gentoo Linux
 
俺のGentooがこんなに可愛いわけがない
俺のGentooがこんなに可愛いわけがない俺のGentooがこんなに可愛いわけがない
俺のGentooがこんなに可愛いわけがない
 
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
 
Preseeding Debian
Preseeding DebianPreseeding Debian
Preseeding Debian
 
バグ報告・翻訳・パッケージング・コード修正・広報活動などなど―OSS に貢献してみるには?
バグ報告・翻訳・パッケージング・コード修正・広報活動などなど―OSS に貢献してみるには?バグ報告・翻訳・パッケージング・コード修正・広報活動などなど―OSS に貢献してみるには?
バグ報告・翻訳・パッケージング・コード修正・広報活動などなど―OSS に貢献してみるには?
 
sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pm
sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pmsphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pm
sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pm
 
今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて
 
Gentoo Linuxの紹介
Gentoo Linuxの紹介Gentoo Linuxの紹介
Gentoo Linuxの紹介
 
import dpkt したよ #ssmjp 2014/02/28
import dpkt したよ #ssmjp 2014/02/28import dpkt したよ #ssmjp 2014/02/28
import dpkt したよ #ssmjp 2014/02/28
 
FreeBSDで行こう for small server
FreeBSDで行こう for small serverFreeBSDで行こう for small server
FreeBSDで行こう for small server
 
Baremetal rust for_windows
Baremetal rust for_windowsBaremetal rust for_windows
Baremetal rust for_windows
 
Gentooサークル新歓コンパのご案内
Gentooサークル新歓コンパのご案内Gentooサークル新歓コンパのご案内
Gentooサークル新歓コンパのご案内
 
Programming under capability mode
Programming under capability modeProgramming under capability mode
Programming under capability mode
 
PXE で linux インストールな本 -1 スピンドルマシンも Linux 化-
PXE で linux インストールな本 -1 スピンドルマシンも Linux 化-PXE で linux インストールな本 -1 スピンドルマシンも Linux 化-
PXE で linux インストールな本 -1 スピンドルマシンも Linux 化-
 
TUI作業で便利なソフト2題
TUI作業で便利なソフト2題TUI作業で便利なソフト2題
TUI作業で便利なソフト2題
 
fdコマンドを使おう
fdコマンドを使おうfdコマンドを使おう
fdコマンドを使おう
 
S2s websrv201011-presen
S2s websrv201011-presenS2s websrv201011-presen
S2s websrv201011-presen
 
エンジニアのための痔の話
エンジニアのための痔の話エンジニアのための痔の話
エンジニアのための痔の話
 

Similar to FreeBSDのブートプロセス

Bsd suki
Bsd sukiBsd suki
Bsd suki
yamori813
 
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
Taisuke Yamada
 
Bash on ubuntu on windows
Bash on ubuntu on windowsBash on ubuntu on windows
Bash on ubuntu on windows
Kentaro Inomata
 
OpenSolaris Printing Environment
OpenSolaris Printing EnvironmentOpenSolaris Printing Environment
OpenSolaris Printing Environment
Naruhiko Ogasawara
 
Osc10do linux nextstep
Osc10do linux nextstepOsc10do linux nextstep
Osc10do linux nextstep
smokey monkey
 
20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux
Takayoshi Tanaka
 
20141004 ゼウス・ラーニングパワーlinuxサーバ構築セミナー
20141004 ゼウス・ラーニングパワーlinuxサーバ構築セミナー20141004 ゼウス・ラーニングパワーlinuxサーバ構築セミナー
20141004 ゼウス・ラーニングパワーlinuxサーバ構築セミナー
Takahiro Kujirai
 
Debianで組み込み環境
Debianで組み込み環境Debianで組み込み環境
Debianで組み込み環境
Youhei SASAKI
 
サーバーだけじゃない!Linux デスクトップを使い倒そう!その2
サーバーだけじゃない!Linux デスクトップを使い倒そう!その2サーバーだけじゃない!Linux デスクトップを使い倒そう!その2
サーバーだけじゃない!Linux デスクトップを使い倒そう!その2
Fuminobu Takeyama
 
Debian Next Release Goal: Multiarch
Debian Next Release Goal: MultiarchDebian Next Release Goal: Multiarch
Debian Next Release Goal: Multiarch
Youhei SASAKI
 
私とOSSの25年
私とOSSの25年私とOSSの25年
私とOSSの25年
MITSUNARI Shigeo
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
Hideki Takase
 
pbuilder, cowbuilder, lxcで作るお手軽サンドボックス
pbuilder, cowbuilder, lxcで作るお手軽サンドボックスpbuilder, cowbuilder, lxcで作るお手軽サンドボックス
pbuilder, cowbuilder, lxcで作るお手軽サンドボックス
Tsuyoshi Yamada
 
Android タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on Linux
Android タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on LinuxAndroid タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on Linux
Android タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on Linux
Netwalker lab kapper
 
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書くLinuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Tetsuyuki Kobayashi
 
マルチプラットフォーム開発導入
マルチプラットフォーム開発導入マルチプラットフォーム開発導入
マルチプラットフォーム開発導入
Daisuke Nikura
 
LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)
Masataka Kondo
 
Debian Testing on Windows Tablet T100TA
Debian Testing on Windows Tablet T100TADebian Testing on Windows Tablet T100TA
Debian Testing on Windows Tablet T100TA
Netwalker lab kapper
 
ラズパイオーディオで学ぶLinuxシステム構築
ラズパイオーディオで学ぶLinuxシステム構築ラズパイオーディオで学ぶLinuxシステム構築
ラズパイオーディオで学ぶLinuxシステム構築
VirtualTech Japan Inc./Begi.net Inc.
 

Similar to FreeBSDのブートプロセス (20)

Bsd suki
Bsd sukiBsd suki
Bsd suki
 
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
 
Bash on ubuntu on windows
Bash on ubuntu on windowsBash on ubuntu on windows
Bash on ubuntu on windows
 
OpenSolaris Printing Environment
OpenSolaris Printing EnvironmentOpenSolaris Printing Environment
OpenSolaris Printing Environment
 
Osc10do linux nextstep
Osc10do linux nextstepOsc10do linux nextstep
Osc10do linux nextstep
 
20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux
 
20141004 ゼウス・ラーニングパワーlinuxサーバ構築セミナー
20141004 ゼウス・ラーニングパワーlinuxサーバ構築セミナー20141004 ゼウス・ラーニングパワーlinuxサーバ構築セミナー
20141004 ゼウス・ラーニングパワーlinuxサーバ構築セミナー
 
Debianで組み込み環境
Debianで組み込み環境Debianで組み込み環境
Debianで組み込み環境
 
サーバーだけじゃない!Linux デスクトップを使い倒そう!その2
サーバーだけじゃない!Linux デスクトップを使い倒そう!その2サーバーだけじゃない!Linux デスクトップを使い倒そう!その2
サーバーだけじゃない!Linux デスクトップを使い倒そう!その2
 
Debian Next Release Goal: Multiarch
Debian Next Release Goal: MultiarchDebian Next Release Goal: Multiarch
Debian Next Release Goal: Multiarch
 
PHP With Windows binary
PHP With Windows binaryPHP With Windows binary
PHP With Windows binary
 
私とOSSの25年
私とOSSの25年私とOSSの25年
私とOSSの25年
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
 
pbuilder, cowbuilder, lxcで作るお手軽サンドボックス
pbuilder, cowbuilder, lxcで作るお手軽サンドボックスpbuilder, cowbuilder, lxcで作るお手軽サンドボックス
pbuilder, cowbuilder, lxcで作るお手軽サンドボックス
 
Android タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on Linux
Android タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on LinuxAndroid タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on Linux
Android タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on Linux
 
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書くLinuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書く
 
マルチプラットフォーム開発導入
マルチプラットフォーム開発導入マルチプラットフォーム開発導入
マルチプラットフォーム開発導入
 
LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)
 
Debian Testing on Windows Tablet T100TA
Debian Testing on Windows Tablet T100TADebian Testing on Windows Tablet T100TA
Debian Testing on Windows Tablet T100TA
 
ラズパイオーディオで学ぶLinuxシステム構築
ラズパイオーディオで学ぶLinuxシステム構築ラズパイオーディオで学ぶLinuxシステム構築
ラズパイオーディオで学ぶLinuxシステム構築
 

FreeBSDのブートプロセス