単純な質問ですいません。
Linux系はあまり詳しくありません。
Linux系のOSの再構築のやり方、または、どういうコマンドでするのでしょうか?
どこかの記事でパッチとかを組み込むには、再構築しなくてはいけないと書いてあったので、
質問しました。
再構築のメリットとして、自分なりにOSをカスタマイズ(軽くしたり、研究の仕方の方針)することで当っているのでしょうか?
再構築のメリットとはどういう事なのでしょうか?
研究者の方とかそういう方針でしているようなので・・・。
自分もそういう自分なりにOSを扱ってみたいという好奇心で書き込みました。
アドバイスお願いします。
No.1
- 回答日時:
カーネル再構築は初心者がする物ではありません。
「Linux カーネル再構築」で検索するといくらでも情報がありますが、それを見てわからないようであれば、手を出さない方が良いと思います。
単に標準のカーネルを自分でそのまま構築するならともかく、パッチを当てるとか、モジュールを選択するとかになると、それなりの知識が必要です。
まあ、「仮想化環境で行って、失敗したらまた最初からやり直し」ということならトライしてみてもいいと思いますが。
No.2
- 回答日時:
>一応、UNIXの基礎的な知識はありますが、やはり、敷居は高いですね。
そう言うからにはFreeBSDなどのカーネル再構築はやったことあるんだよな?
だったらLinuxのカーネル再構築もそれらと同じ事。
UNIXの知識は、本で読んで、大学のとき、FreeBSDとか色々といじった経験があるだけで半分忘れました。
ただ、今後ITで働くことを考えたら、Linux系が弄ばれているのでもっと奥が深いことを知らなけらば話にならないので、質問しただけです。
本でも読んで勉強したいと思います。
No.3ベストアンサー
- 回答日時:
基本的に、FreeBSDもLinuxもそうそう変わりません。
FreeBSDでカーネルの再構築をしたことがあれば、Linuxでも簡単にカーネルの再構築ができるでしょう。どちらでも、開発ツール一式をインストールした上でmakeです。単純にカーネル開発をやってみたいだけというのなら、FreeBSDの方が直感的にわかりやすくてとっつきやすいと思います。FreeBSDの場合は、インストールした直後に開発ツール一式をすべて入れてくれていますし、ユーザーランドからカーネルまで一式のソースコードが一発で手に入るので、段階的に学習するならこちらがやりやすいです。また、ソースコードも癖がなく、直感的にたどりやすく書いてあるので、比較的読みやすいです。再構築したカーネルのインストールも、普通にmake installkernelするとインストールされますのであまり悩みません。
Linuxの場合はOS再構築というより、カーネルの再構築ですよね?OSというとカーネルとその周辺のソフトウェア一式を指しますが、Linuxだとカーネルとそれ以外の提供元が違うので、OSそのものの再構築はディストリビューションによってやり方は大きく異なります。この場合はパッケージとして全て提供されているので、ディストリビューションのパッケージツールを使ってカーネルもその他のソフトも再構築します。しかし、依存関係が壊れていて自分で修正しないといけない場合や中のソースコードに自分でパッチを当てたい場合を除いて、普通パッケージの再構築はしないですね。
Linuxカーネルをディストリビューションのツールで再構築するくらいなら、普通はkernel.orgからソースコードをダウンロードしてきて、makeします。この方がディストリビューションにそれほどよらないので汎用的ですし、カーネル開発者はみんな普通にこれができます。 (いや、gitで取ってくるかな) 起動時にカーネルを読みこませるための設定というか、必要なコマンドがディストリビューションによって違うのでちょっと面倒くさいです。
と、ここまで書いてきてなんですが、FreeBSDでもLinuxでも、カーネル開発者になりたい人か基盤システムの研究者になりたい人でも無い限り、まずカーネルの再構築は必要ありません。そんなことしたことなくても、FreeBSD使える人、Linux使える人として十分通用すると思います。 Windowsのカーネル部分の設計などを理解してなくても(例えば、Windows Internalsに書いてある内容を理解してなくても)、Windows使える人と言うのと同じです。逆に、そっちの業界の人だと、基本知識過ぎて自慢にもならない。
と、ここまで聞いてまだカーネル開発をしてみたいと思うなら、まずはカーネルモジュールの開発から進めるとよいでしょう。
FreeBSD: http://www.freesoftwaremagazine.com/articles/wri …
Linux: http://tldp.org/LDP/lkmpg/2.6/html/
カーネルモジュール開発に使うツール類は全てカーネル開発に使うものと同じですので、初めてのカーネル開発に最適です。モジュールを作るだけなので、知っておかないといけない知識は部分的で済みますし、ロードとアンロードをすれば簡単に新しいものを作って試すことが出来ますから。
> Linux系のOSの再構築のやり方、または、どういうコマンドでするのでしょうか?
前述のとおり、カーネル+周辺ツール一式=OSという意味なら、ディストリビューションによって違います。まずディストリビューションを書いてください。
カーネルだけで、ディストリビューションによらない方法でするなら、kernel.orgからソースコードを落としてきて、makeです。
> 再構築のメリットとして、自分なりにOSをカスタマイズ(軽くしたり、研究の仕方の方針)することで当っているのでしょうか?
カーネルを再構築するのは、カーネルのソースコードを変更し、それを実際に適用したいからです。その点で言うと、OSをカスタマイズしたいというのは当たっていると思います。
まぁ、カスタマイズすると言うよりも、新機能を追加したり、動きを探ったりするために再構築しますね。
単なるカスタマイズなら、どのカーネルモジュールをロードするかの設定を変えるだけで十分でしょう。今時、多くの者はカーネルモジュールとして提供されていますから。
あるいは、ディストリビューションの標準カーネルに入っていない機能を使いたい場合もkernel.orgからソースコードを取ってきた上で再構築すると思います。
> 再構築のメリットとはどういう事なのでしょうか?
前述のとおり、自分でカーネル再構築ができるとディストリビューションに入っていない最新のカーネルが使えます。例えば、btrfsなどを実験的なサポートの段階から使えます。
カーネル再構築はカーネルソースコードに加えた変更を実際の動作するカーネルに反映するための手段です。どちらかと言うと、カーネルを改造・開発するために必須のスキルというだけですね。
ちなみに、再構築するという行為そのものでカーネルへの理解が深まる...ということも無いと思います。
自分はFreeBSDを使い始めた時からずっとカーネルの再構築をしていますが、実際にカーネルに手を入れたのはそういう機会が来てからで、それまではソースコードを見たことすらなかったですから。FreeBSD Handbookに書いてある手順に従えば誰でもできるもので、中身を見たことすら無いものを知っているとは言わないでしょう。
http://www.freebsd.org/doc/en_US.ISO8859-1/books …
OSそのものの再構築もHandbook通りやれば誰でもできます。
http://www.freebsd.org/doc/en_US.ISO8859-1/books …
というわけで、カーネルの再構築は開発ツールを一式入れて、makeでできます。起動時に読み込ませるにはちょっと設定が必要です。今時多くのものはカーネルモジュールになっているので、再構築して、不要なモジュールを削って軽量化というのはありえません。今時のCPUは分岐予測の機能が入っているので、カーネルモジュールから静的にリンクされたものに変更してもスピードアップはほとんどありません。再構築のスキルがあると、設定を変更すればディストリビューション非標準の機能を使えるとは思います。
早速のお返事ありがとうございます。
やはり、makeを使いこなせるようになりたいです。
一度大学で学んだのですが、数年経って忘れてきました。
Linux系よりFreeBSDの方がソースがわかり易いのですね。
知人もFreeBSDやNetBSDを使っていたので、その理由も関係しているのですね。
>単なるカスタマイズなら、どのカーネルモジュールをロードするかの設定を変えるだけで十分でしょう。今時、多くの者はカーネルモジュールとして提供されていますから。
開発キッドも手に入るのですね。やはり自分もBSD系のソースをある程度理解できるようになりたいです。
>再構築のスキルがあると、設定を変更すればディストリビューション非標準の機能を使えるとは思います。
便利ですよね。
参考になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- サーバー Webサイト構築フリーランスの案件受注について 1 2022/03/27 18:16
- 分譲マンション 都心部の老朽化したマンションの資産価値について相談させて下さい。 5 2022/05/13 20:17
- UNIX・Linux VirtualBox ゲストOSにPC内蔵HDDのパーティションをマウントする方法は? 2 2023/05/06 22:52
- UNIX・Linux Linuxのパーティションタイプ(MBR/GPT)について 2 2022/07/26 13:35
- その他(コンピューター・テクノロジー) 各OSに対する認識はこれで合ってますか? MacOS:大人なら誰でも使える。 ChromeOS:IT 4 2023/08/17 14:14
- 浮気・不倫(結婚) 不倫後との旦那との再構築したいです 9 2022/09/20 04:17
- 中古パソコン 富士通 ESPRIMO B532/G のBIOSが表示されない 3 2023/01/03 16:42
- 一戸建て 準耐火構造で、かつ透湿性のある【壁の構造】について質問させてください。 現在、東京都の風致地区で、高 1 2023/07/22 02:56
- Windows 10 Windows10起動しない、エラー0xc0000185修復方法 2 2022/07/14 12:28
- ASP・SaaS イントラネットを構築したい 2 2022/04/24 11:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どうしてwindowsはMacと比べ動...
-
/dev/nvme0n1p2 clean と表示さ...
-
CentOS5.3でNICを認識しない
-
自作OSの良本
-
画像処理でのカーネルの意味
-
Linuxをインストールしてみたけ...
-
rcp,rshのタイムアウトについて
-
power book G4でDVDーRにデー...
-
RedHat Linux 8.0 同時セッショ...
-
XNU の日本語発音を教えてください
-
Linuxでダイナミックディスクっ...
-
パソコンでゲームをプレイしよ...
-
Windows2000を最新マシンにイン...
-
Raspberry Pi 3 A+ ブラウザ遅い
-
virtual boxにインストールした...
-
百均で売っていたヘアスタイリ...
-
ubuntu 初期化について
-
M.2 NVME SSDがWindowsからはア...
-
linux mint での無線LANが認識...
-
システムBIOS画面をキャプチャ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パフォーマンスモニタの%Proces...
-
最近、よくOpenWall という言葉...
-
/dev/nvme0n1p2 clean と表示さ...
-
ブルースクリーンの原因が「ntk...
-
割り込み不可能?なプロセスを...
-
魔改造版Windows 2000をインス...
-
romfsってなんですか?
-
どうしてwindowsはMacと比べ動...
-
mac OSは、何のプログラミング...
-
macでカーネルのディレクトリは...
-
カーネルアップグレード後、una...
-
『カーネルとの通信中にエラー...
-
UNIXとBSDとLinuxの違いを小学...
-
Linux 32Bitと64Bitのメモリー...
-
Dockerコンテナ(centos7.9)の...
-
エラー”Illegal seek”はどんな...
-
カーネルスタック不足について
-
カーネルバッファとは何でしょうか
-
マザーボード用ドライバ
-
rdevコマンドについて
おすすめ情報