質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • Linux

    3902questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • Ubuntu

    1484questions

    Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

  • サーバ

    789questions

    サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

  • プログラミング言語

    691questions

    プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

  • OS

    215questions

    OS(オペレーティングシステム)は、システムソフトウェアの一種であり、一般的に、ハードウェアを直接的に管理・操作する最も中心的な機能を有するソフトウェアがオペレーティングシステムとして呼ばれます。

どのようにOSなどの勉強をしたらいいですか?

受付中

回答 14

投稿

  • 評価
  • クリップ 8
  • VIEW 4,947

yu-ki000

score 52

1年ほど前からubuntuを使い始め、分からないながら色々やっていたのですが、1年たっても初心者から脱出ができません。

最近パソコンのシステム内部がどのようになってるか知りたくなってきました。
しかし、どこから何を勉強したらいいのかわかりません。

カーネルをいじれる、システムやツールのエラー・不具合を治せる、サーバ構築等ができるようになるには何を勉強すべきでしょうか?
またシステムに詳しくなるためには何を勉強すべきでしょうか?

本来は自分で調べ上げ、自力で学習すべきなのでしょうが壁にぶち当たってしまいました。

できれば回答お願いします。
またアドバイス等がありましたら、よろしくお願いします。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 14

+4

「Linuxシステムコールプログラミング」という本があるので、このあたりから攻めてみてはどうでしょうか。
システムコールがわかれば、OSがわかるようになります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/03 17:47

    違う質問でも回答してくださいましたね。回答ありがとうございます。
    良さそうな本ですね。知りたい内容も一致してます。
    時間を見つけてじっくり読んでみたいと思います。

    キャンセル

+3

>カーネルをいじれる、システムやツールのエラー・不具合を治せる、
>サーバ構築等ができるようになるには何を勉強すべきでしょうか? 
>またシステムに詳しくなるためには何を勉強すべきでしょうか?
例えば、Linux を想定しているのであれば、
ネット検索
で、それなりの情報がでてきます。
そこから、辿り付けなければ、能力不足だという事です。
(あえて、検索ワードや、URLを示しません。)
Linux の一次情報を得たり、GNUプロジェクトに参加しようとする場合は、
それなりの、英語での読書能力、交渉能力が必用になってくると、思います。

OSを構成するのは、現在では、
OS本体:Linuxカーネルと呼ばれる部分他、様々な機能群、コマンド群、標準アプリ群
になっていますので、何を目的とするかで、
勉強する事柄も、変わります。

Linuxカーネルや、ハードウェアの素に近い部分を弄る為には、
CPU毎の、アーキテクチャ、メモリ構造、IOチップや、
サポート機能毎の、ハードウェア
(コントローラチップ毎の~や、PCI-Expressバスに対する~他)の
知識も必須となります。
DOSVの、CPU、IOチップ、のハンドブック的文書を全部読破するだけでも、
かる~~く、数年はかかるかも。
なので、そんな事を、チップのハンドブック片手に、やる方は非常に限られた事になって
しまっています。

むか~~しは、
FDD、HDD、GDC、232C、GPIBのドライバなんて、
コントローラの仕様書片手に、結構簡単に書けたのですが、
現在では、それすらも、CPUのリングプロテクション 下では、
CPU毎の、お作法があったり、ユーザーモードでは出来ない事があったり。
それらの情報はネット上に出ている事柄だけでは不足しますので、
各CPUメーカー、IOチップメーカー毎に文書を手にいれる方法から、
探せないと、何もできない事になります。
⇒一般に文書を提供していない場合は、秘密保持契約が必用だったり。
個人向けには、情報提供せずに、ユーザー企業にのみ情報提供をしていたり。
種々情報は、英語で提供される事が多いので、日本語だけでは行える事は、
限定的だったりします。

ブラックボックスになったコンピュータを、
ユーザーの手に取り返そう、という活動の一つが、
Arduino、MBED、Wiring
Intel galileo / edison
などのマイコン系のMaker'sの活動だったり、
Raspberry Pi、
だったりします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/03 18:46

    回答ありがとうございます。もやもやと少し見えてきました。
    もやもやを明確化できるよう勉強してみます。
    情報ありがとうございます!!

    キャンセル

  • 2015/04/03 21:59

    書き忘れ、
    現行PCでの、
    OSっぽいのを、書くのに最大の障害が、
    EFIとも、UEFIとも呼ばれる奴です、
    旧BIOSは、FDDセクタ0か、HDDセクタ0を
    読み込んで、ブートシーケンスが始まりましたが、
    UEFIは、思想からして、変わって、どうなったやら。
    ドライバー署名必須になったり、GPT起動可能になったり。

    キャンセル

+3

OSにしても、プログラミング言語にしても、きちんと学習したい・・・
もし現在「ググッて」勉強がメインであるなら、その方法を止めるべきかと思います。
ただしく、書籍を読んで勉強しましょう。

このように書くと、今後はどの書籍がいいですか?という質問がくるので・・・

正直答えようが、ありません。

例えば、
「詳解 Linuxカーネル 第3版」
この本なんか、よく書かれていると思いますが、では万人向けか?というとそうではありません。それなりのベース知識が必要となります。

というように、読み手によってレベルが違うので、お勧めって、なかなか正しい回答できません。

なので、もし可能であれば、このようなIT系の書籍のある本屋さんにいって、まずは「立ち読み」です。
ぱらぱらっと読んで、これなら理解できそうと思う本をまずは1冊読破しましょう。
最近は、Amazonでも、「なか見!」ができるようになったので、それでもいいですが、手にとって見るよりも効率は悪いかも。

こんな事を何冊か繰り返せば、そうとうきちんとした勉強になるかと思います。

読んでいて途中で分からないことがでてきたら、その分からないことが書かれている記事を「ググる」のはありだと思います。

本を中心に学習してください。そして、Google先生は、あくまでも補助で。が効率よい方法かと。

でも、Google先生の情報は、間違い・勘違い・自分との環境違い、だらけであるという事も、忘れずに。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

いきなりカーネルソースを眺めるのもいいですが、カーネルの機能や構成を知ることが近道かも知れません。
基礎技術としてはプログラミング言語とアーキテクチャやネットワークの知識が必要かもしれません。
世の中にどんなツールが存在するのかといったノウハウも要るでしょう。

これら全て、Linuxをソースからビルドすることで色々学べます。
更に深く追求する足がかりにもなるでしょう。

ということでLFS(Linux From Scratch)をおすすめします。
http://www.linuxfromscratch.org/

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/10 19:04

    情報ありがとうございます。
    やっぱり英語の文献が多いですね。
    Linuxを触る以上、英語のドキュメントが多いので、ある程度英語が読めるように頑張ってみます。

    キャンセル

+1

Linuxのカーネルソースを読むとか
システムコールの基本書を読んでは
いかがでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

「コンピュータはなぜ動くのか」
知っておきたいハードウエア&ソフトウエアの基礎知識
http://ec.nikkeibp.co.jp/item/books/P81650.html
などを読まれてはいかがでしょうか?

これも勉強になると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/08/27 04:38

    回答欄は編集出来ますよ?
    また、URLはせっかくなのでリンクを貼ってはいかがでしょう。

    キャンセル

0

どのような壁にぶち当たったか分かりませんが、技術的な壁ならば、一つずつ越えて行くしかないのではないかと思います。取り組み方などの壁なら、好きなこと、興味のあることを優先してやって、モチベーションを維持するのが大事ではないかと思います。
不要なOSの知識を持っていてもあまり意味も無いと思いますし、必要になった時必要な勉強をすれば良いと思います。
こいうことは、楽しんでこそです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

>カーネルをいじれる、システムやツールのエラー・不具合を治せる、サーバ構築等ができるようになるには何>を勉強すべきでしょうか? 
>またシステムに詳しくなるためには何を勉強すべきでしょうか? 

このキーワードを聞いて普通にLPICを連想しました。
まだこの資格を持っていないならいかがですか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/10 19:07

    情報ありがとうございます。
    LPICは知らなかったです。ぜひ資格取得の勉強も視野に入れて見たいと思います。

    キャンセル

0

少し前の本になりますが、「Linuxエンジニア養成読本」がとても勉強になりました
http://www.amazon.co.jp/dp/4774163775

ディストリビューションの違い、起動までの動き、ファイルシステムの仕組みなどが初心者レベルでもわかりやすくまとまっています
まずはこのあたりから攻めてみてはいかがでしょうか(すでに知っている情報でしたら申し訳ありません)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/10 19:05

    情報ありがとうございます。
    要請読本シリーズにLinuxがあるんですね。確認してみたいと思います。

    キャンセル

0

基本情報技術者の参考書をおすすめします。その名の通り基本がつまっているので、他の技術書を読み解くための前提知識を知ることができると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/10 19:09

    回答ありがとうございます。
    近い目標として、資格取得の勉強から入ってみようかと思います。

    キャンセル

0

カーネルをいじれる、システムやツールのエラー・不具合を治せる、サーバ構築等とあるけど
まずLINUXでサーバー構築したいのなら月900円位も出せばレンタルサーバかりられるのだからそれで勉強するか、自宅のいらないパソコンでつくればいいとおもう。あと自信がつかない主な原因はせっかく作ったのが壊れるのがいやとかの理由でいじらなくなることだから、毎日いじるのがいい、いろいろAPTから入れるとかPPAから最新とってくるとか、ソースからビルドしてみるとか、年寄りが盆栽をいじるが如く。
/etc/のファイルを調べるだけで結構勉強になるよ
それでOSとかが再起不能になったときが本当に腕を見せるべきときだから逃げるべきでない。
やってたらカーネルごと飛んでしまうのもよくあるから、そのうち笑ってなおせるようになる。
そうなりそうだってのも事前に読めるようにもなる。
私の経験ではWEBで調べるとほぼどんな問題も解決すると思う。(ハードが死んだ時を除く)
そういうことに逃げたくなったり面倒だと思う人は進路ごと考えたほうがいいかも。
仕事だと退職しないと逃げられなくなるから。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

まずは、カーネルのコンパイルを試してみて、カーネル入れ替えをやってみたらよいかもしれませんね。
LFS(Linux From Scratch) も良いですが、私は一時期 gentoo をよく使っていました。

サーバ構築であれば、まずなんでもよいから、web の資料を基にやってみたらよいと思います。
単純な html だけを表示するホームページ、php スクリプトの動作、WordPress の動作…慣れた人にとってはどうってことはないですが、初心者であれば、「文字の打ち間違い」ですら、自分が間違っているのか、サイトの説明が違っているのかわからないこともあります。Apache ができたら、nginx をやっておくと、これからはためになるでしょう。

次は、メールサーバ等は凝り始めると難しいですね。いくつかのサービスが協調動作しますから。
Postfix + dovecot で IMAP で接続できるシステムを設定するのも、良いと思います。

「不具合を治せる」ようになりたい場合、「不具合」が目の前にあれば、人に聞きながらでも対処していくと、スキルはものすごく付きます。「自分にはわからない」で止まったら終わりです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

こんにちは。

カーネルをいじれる、システムやツールのエラー・不具合を治せる、サーバ構築等ができるようになるには何を勉強すべきでしょうか? 

頑張ってますね。範囲むちゃくちゃ広いです。
全体を網羅すると言う意味では情報処理技術者試験は結構優れていると思います。
全体的に概観後、どこに注力するのか決めてから、そこを突破口にだんだん広げていくのがよいと思いますよ。

カーネルをいじれるためには、コンピュータの基本的な仕組みを把握する必要があります。どの当たりを触るかにもよりますが、回路とのI/F、割り込みベクタ、MMU、アセンブラ等をざっとでも理解しておかないと厳しいだろうと思います。
システムやツールのエラー・不具合を治すには、それらのツールで使われているプログラミング言語をそれなりにマスターする必要があるでしょう。C++だけでなく意外に多数ありそうです。
サーバ構築にはネットワーク機器やデータベースの仕組みや設定方法についての把握が必要と思います。

突破口を絞れたら、その情報を求めて再度質問されるのも良いように思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

カーネルをいじれる、システムやツールのエラー・不具合を治せる、サーバ構築等ができるようになるには何を勉強すべきでしょうか?

他の回答者の方も書かれていましたが、範囲がちょっと広すぎるのではないかと思います。

yu-ki000さんが差し当たりやりたいこと・目指したいことは何でしょうか?
Linuxでサーバを構築したいのか、だとしたら何のサーバなのか(ファイルサーバ?Webサーバ?...)、誰が何のために使いたいのか。
自分の中でゴールを決めて勉強をすれば、知識が身になりやすいと思います。

仕事で覚えなくてはいけないのでしたら別ですが、自分の勉強としてやるのであれば、それを通じて自分の実益(?)になるテーマを見つけてはどうでしょうか。
私自身も最初にUnixを勉強し始めた時は漠然とコマンドリファレンスを読んでいましたが、コマンドのオプションや機能をを覚えてもピンときませんでした。「それで?」って感じでした。
そのうち自分で(自分の自由になる)メールサーバが欲しくなってそれに向けて勉強を始めました。
Unixコマンド、tcp/ip、smtp・popプロトコル、プロダクトのコンパイルのやり方、エラー対処、目的が明確なので勉強の方向性にも迷いがありませんでした。

目的意識があれば勉強も捗ると思います。最初は「1つの分からないことを調べた結果、分からないことが3つになった」なんてこともあると思います。(実体験)
知識を得るのも最初はサイトやブログでいいと思います。
勉強が軌道に乗ってくると、まとまった知識を得るには書籍のほうがいいと思えてきます。
その時に初めて、どんな本を読めばいいのかを考えればいいのではないかと思うのです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

関連した質問

同じタグがついた質問を見る

  • Linux

    3902questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • Ubuntu

    1484questions

    Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

  • サーバ

    789questions

    サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

  • プログラミング言語

    691questions

    プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

  • OS

    215questions

    OS(オペレーティングシステム)は、システムソフトウェアの一種であり、一般的に、ハードウェアを直接的に管理・操作する最も中心的な機能を有するソフトウェアがオペレーティングシステムとして呼ばれます。