Linux用のデバイスドライバを書くときのバイブルとして多くのプログラマに支持され活用されてきたロングセラー書『Linuxデバイスドライバ』の改訂版。今回の第3版はカーネル2.6に完全対応です。カーネル2.6で様々な機能が追加されたデバイスモデル、カーネルタイマ、メモリ管理、ブロックデバイスについて大幅に加筆修正したほか、TTYドライバ、USBドライバ、その他のLinuxデバイスモデルなどの解説を追加しました。x86以外のアーキテクチャについても触れています。
本書ではLinuxを扱う上で必要となる設定ポイントなどをまとめています。ハードウェアとLinuxの関わり、Linuxカーネルやシェルへの理解を深めた上で、設定ファイルや起動スクリプトの作成について解説します。またサーバとしてよく使われているApacheやPostfixなどのアプリケーションの他に日本語環境やX Windowの設定、認証などについても丁寧に解説を進めています。「Linuxをインストールしたがどのように扱ってよいかわからない」「Linuxはどのような構造で動いているか興味がある」という方にお薦めです。
サーバ管理者が押さえておくべきLinuxコマンドとLinuxサーバの基礎的な知識を解説しました!
本書は、サーバ管理者やプログラム開発者などのエンジニアを目指す方のためのLinux とサーバ管理の入門書です。大きく次の二つの内容で構成しています。
(1)Linuxコマンドと使い方を解説
(2)Linuxサーバーの基礎知識を解説
基本的にデスクトップ環境を使用したGUI 操作はやったことがあるものとして、「端末」アプリなど端末エミュレータでのコマンドライン操作をベースに解説しています。もちろん、大学や専門学校の学生がLinuxのようなUNIX系OSのコマンド操作やサーバ管理を学びたいといった場合にもお薦めです。
Linux には現在、さまざまなディストリビューションがあり、用意されているパッケージの種類やその内容、ファイルシステムの構造などが若干異なります。本書では次の2つのディストリビューションを基本に解説しています。
(1)Ubuntu
(2)Red Hat Enterprise Linux(RHEL)
コマンドの実行例を挙げながら解説しているので、実際に手元のLinux環境で試しながら読み進めてください。UbuntuとRHELのインストール方法は、電子版をサポートサイトでダウンロードできます。
Chapter1 Linuxの概要
LinuxとはどんなOSなのかを説明します。その後で、「端末」アプリを使用した、CUIコマンドの基本的な実行方法について説明します。
Chapter2 コマンドの基本操作
コマンド操作はサーバ管理には必須です。「端末」アプリを利用したCUIコマンドの実行方法とシェルの操作について説明します。
Chapter3 CUIエディタの操作
CUIで動作するエディタの操作方法もサーバ管理には必須のスキルです。代表的なCUIエディタであるnanoとvimを説明します。
Chapter4 シェルを活用するための基礎知識
ファイルのパーミッションの取り扱い、ジョブ制御、シェルの環境設定、シェルスクリプトの基礎を解説します。
Chapter5 システム管理の基本
ユーザ/グループの管理、サービスの管理、ソフトウエアのバイナリパッケージの取り扱いを解説します。
Chapter6 ネットワークの活用方法
ネットワークの設定、ファイアウォールの設定、Sambaを使用したファイル共有、SSHサーバを使用したリモートログインとファイル転送を解説します。
Chapter7 ApacheによるWebサイトの構築方法
オープンソースのWebサーバアプリ「Apache」を使用したWebサイトの構築方法を解説します。
Chapter8 Dockerによる仮想環境の構築方法
Ubuntuで「Docker」(ドッカー)を使用したコンテナ型仮想環境の構築方法を解説します。
付録
Document1 コマンド操作の応用
Document2 WordPress によるブログサイトの構築方法
Document3 Ubuntu とRHEL のインストール
バイナリ解析とは、バイナリプログラムとそれに含まれているマシンコードやデータの性質を解析する科学と技術のことだ。セキュリティの脆弱性を狙う攻撃やマルウェアなど、悪意をもつソフトウェアに対処するには、バイナリプログラムの本当の性質を突き止める、そのプログラムが実際に実行することを突き止める必要がある。
本書は、バイナリプログラムの基礎知識、静的解析や動的解析といったバイナリ解析の基本から、ソースプログラムがなくてもバイナリプログラムの内容を書き換えるバイナリ計装といった高度な手法まで、リバースエンジニアリングの範囲を超えて実践的に解説する。
セキュリティエンジニアやセキュリティ研究者、ハッカーやペネトレーションテストの担当者、リバースエンジニア、マルウェアアナリスト、そしてコンピュータサイエンスの学生など、バイナリ解析に興味をもつすべての人を対象とした、最も魅力的で最も手ごわいテーマであるバイナリ解析入門の決定版である。
第I部 バイナリフォーマット
第1章 バイナリを解剖する
第2章 ELFフォーマット
第3章 入門:PEフォーマット
第4章 libbfdを使ってバイナリローダーを作成する
第II部 バイナリ解析の基礎
第5章 Linuxでの基本的なバイナリ解析
第6章 逆アセンブリとバイナリ解析の基礎
第7章 ELFにコードを注入する
第III部 高度なバイナリ解析
第8章 逆アセンブリのカスタマイズ
第9章 バイナリ計装
第10章 動的テイント解析
第11章 libdftを使った実用的な動的テイント解析
第12章 シンボリック実行
第13章 Tritonを使ったシンボリック実行
第IV部 付録
付録A 速習:x86アセンブリ
付録B libelfを使ってPT_NOTEを上書きする
付録C バイナリ解析ツール
付録D 参考文献
サーバー構築・運用管理・セキュリティ・トラブル対策etc。いま現場で必要なLinuxの基礎知識を完全理解。現場で最低限知っておきたいポイントがわかる!
Linux活用のための実用情報誌【特集1】春だからLinuxを始めてみませんか?Windowsユーザーのための最新Linux入門【特集2】読んで!触って!Linuxが動く仕組みを理解
Webサーバーをはじめよう。Linuxサーバーの基礎からわかって安心。練習問題&解答・解説集付き。
本書は、LinuxがエンタープライズシステムのOSとして利用されるケースが増えている今日、システム構築に関わるOSやハードウェアの基礎知識をはじめ、エンタープライズシステムに欠かせない高可用性、さらにはパフォーマンスやケーススタディまで、システムの運用管理における知識にも言及した、高い網羅性を持つ解説書です。これまでDBエンジニアとしてDB環境の構築/運用に携わったことのある技術者、もしくはこれから初めてこれらの業務に携わるという技術者向けに最適の1冊です。誰も教えてくれなかったLinux-OS+オープンソースDBによるエンタープライズ構築運用の勘所をしっかり押さえた本書を読めば、LinuxがDBサーバーOSとしていかに最適か分かるはずです。
本書は1日目〜6日目の6分冊として提供します。各パートは4つのセクションからなり、実際の入門講座でも使用できるように、ひとつのセクションが約1時間を目安に完了するように構成されています。
まず1日目では、終了した段階で、コマンドライン操作の基本が理解できていることを目標に、ターミナルエミュレータの基本操作を説明します。1時間目では、導入編としてUNIX系OSの概要について説明。2時間目では、いよいターミナルエミュレータを起動しシェルコマンドを実行する方法について解説します。3時間目では、ファイルシステムの階層構造とディレクトリ操作について、4時間目ではテキスト補完や履歴などシェルを活用する上で欠かせない基本テクニックについて説明します。
Linuxのmanページプロジェクト主催者によるLinuxプログラマ必携のリファレンス。Linux開発者(主にシステムプログラマとアプリケーションプログラマ)にとって、プログラミングする上で必要な情報を一冊で網羅。本書で扱う内容は広範囲にわたり一冊でLinuxプログラミングのほぼすべての情報を知ることができます。Linux/UNIX開発者のバイブルとなる一冊。
本書は、コマンドライン経験がまったくない人向けに、マンガでLinuxのコマンドを解説しています。ディレクトリの探り方、Webサーバーのインストール、SSHによる遠隔ログインといった基礎を説明します。
本書は、サーバOSの標準であるCentOSに対応した、Linuxサーバエンジニアのための入門書です。Linuxとは、CentOSとは、ネットワークとはといった基本から始まって、各種サーバの構築や管理・運用までひととおり学べる内容となっています。もちろん、実際にサーバを構築する際にも十分に役に立つ内容となっています。LPIなどの受験対策にもおすすめです。最新のCentOS 8に対応し、クラウド時代に即した管理にも言及しています。
Chapter 1 予備知識
Chapter 2 構築の準備
Chapter 3 CentOS 8のインストール
Chapter 4 デスクトップの基本操作
Chapter 5 コマンドラインからの操作
Chapter 6 最初にやっておくべきこと
Chapter 7 CentOS 8のセキュリティ
Chapter 8 リモートからの管理
Chapter 9 NFSサーバを使う
Chapter 10 DHCPサーバ
Chapter 11 Windowsファイル共有サーバ
Chapter 12 DNSキャッシュサーバ
Chapter 13 DNSコンテンツサーバ
Chapter 14 メールサーバ
Chapter 15 Webサーバ
Chapter 16 サーバ仮想化
Chapter 17 トラブル時の対応
Chapter 18 運用と管理
Chapter 19 SSL/TLS証明書の作成
豊富な図解とイラストで超わかる!コマンドラインの基本と操作が、この一冊でしっかり身につきます。Linuxに触れるのがはじめての初心者、サーバー管理者など上を目指す初級者、Linuxコマンドに触れるすべてのビギナーに最良の入門書!コマンドによる“ファイル操作”“テキスト編集”から“ネットワーク”“システム管理”までしっかり学べます。Debian系、Red hat系対応。
ファイルの一括処理はシェルにお任せ
日々の雑務をコマンド操作でサクッと解決!
シス管系女子シリーズ5万部突破
本書はシェルスクリプトとコマンド操作がまんがで楽しく学べます。ExcelやWord、PDF、CSV、テキストなどのドキュメントやデータを手早く一括処理して、効率的に業務を進められるようになります。
システム管理部門の新人社員、利奈みんとちゃんと先輩社員 大野桜子さんとのやり取りを通して、
すぐに役立つ情報を分かりやすく解説。初めての方や初心者でも楽しんで読めます。
シリーズ「コマンド&シェルスクリプト基礎編」「シェルスクリプト応用&ネットワーク操作編」とあわせて読むとさらに理解が深まります。
プロローグ 汎用性? 効率?
登場人物
第1話 ファイル名を楽に入力・変更したい
・Tabキーでの補完とブレース展開
第2話 自作のシェルスクリプトを普通のコマンドのようにファイル名だけで実行したい
・環境変数「PATH」
第3話 grepの結果を常に色分け表示したい
・エイリアス
第4話 grepの結果を色分けしたままlessで表示したい
・制御文字
第5話 編集に管理者権限が必要なファイルをsedで編集したい
・インプレース編集
第6話 複数ファイルの繰り返し処理を1行だけのコマンド列でやりたい
・xargsの汎用的な使い方
第7話 大量のファイルの一括編集を効率良くやりたい
・xargsの効率の良い使い方
第8話 大量のファイルを素早く転送したい
・tar
第9話 候補の一覧から項目をランダムに抽出したい
・shuf
第10話 小数点以下の精度で計算したい
・bc
第11話 サイズが大きいファイルを連結/分割したい
・splitとcat
第12話 CSVファイルを横につなげたい
・joinとpaste
第13話 仮想端末なしに、時間のかかる処理を実行中のままログアウトしたい
・bg、disown
第14話 プロセスを何度も起動している犯人を調べたい
・ps
第15話 複数の処理を並列で実行したい
・コマンドのバックグラウンド実行
第16話 非同期処理が終わるのを待って続きを処理したい
・wait
第17話 sortできない一覧の並び順を反転したい
・tac での縦方向の反転
第18話 ファイルの各行の内容を後ろの方から切り出したい
・revでの横方向の反転
第19話 ExcelのスプレッドシートをCSV形式に自動変換したい
・ssconvert
第20話 Word形式のファイルの内容をテキストとして処理したい
・pandoc
第21話 見栄えのする報告書を自動生成したい
・pandocでのWordファイル作成
第22話 報告書の内容が変わる部分を自動的に埋めさせたい
・プレースホルダーとファイル埋め込み
第23話 パイプラインの途中段階をファイルに保存したい
・tee
第24話 teeが出力するファイルの内容を保存前に加工したい
・出力ファイルのプロセス置換
第25話 実行中のシェルスクリプトは触るべからず
・シェルスクリプトの更新とファイル消失事故
第26話 docx やPDFの内容の違いを一時ファイルを作らずに調べたい
・入力ファイルのプロセス置換、diff、pdftotext
あとがき
索 引
本書はパート1(1日目)〜パート6(6日目)の6分冊として提供します。各パートは4つのセクションからなり、実際の入門講座でも使用できるように、ひとつのセクションが約1時間を目安に完了するように構成されています。
5日目であるパート5では、Linuxにおけるシステム管理の基本について説明する。まず1時間目では、ユーザとグループの管理について解説します。
2時間目と3時間目ではファイルを安全に管理するのに不可欠な、アクセス権や所有者/所有グループの変更方法について解説します。
4時間目ではファイルサイズやディスクの使用状況の調べ方やログファイルの確認方法について解説します。
「Linuxのデバイスドライバは、難しくてよく分からない」と思っている開発者も多く、著者がデバイスドライバの開発業務に関わったときも、アプリ開発とは概念が異なるためなかなか理解できず、仕事で泣かされていたそうです。
それくらい、ハードウェアとの橋渡しをするデバイスドライバ開発は、プログラミングの知識だけでなくハードウェアの知識も必要となってくるので、技術も知識も必要になります。
しかし、本書を読み返すことで、デバイスドライバの基礎が習得でき、「よく分からない」から「なんとなく分かった」にステップアップできます。実際にプログラムを動かしながら、デバイスドライバの基礎を取得できれば、後は応用していくだけです。
本書は、筆者が実際に試行錯誤して得た知識と、経験を元にて、デバイスドライバ開発の基本的な考え方をやさしく解説しています。デバイスドライバ開発をこれから始めるプログラマーや技術者も、基礎からやさしく学ぶことができます。
なお、本書に掲載のLinuxカーネルのソースコードは、カーネル・バージョン「5.11」をベースとした、ARM向けのものを採用。また、Linuxディストリビューションは、「Ubuntu 18.04」を使用しています。
第1章 デバイスドライバの概念
第2章 開発環境の構築
第3章 デバイスドライバの基本
・hello, world.
・ソースファイルとMakefile
・デバイスドライバの登録方法
・システムコール
・ハードウェアの制御
・デバッグ方法
第4章 Device Tree
第5章 セキュアブート
はじめてでもすぐ使える!インストール方法、デスクトップの操作、メール、インターネット、Officeソフト、写真・動画・音楽の楽しみ方、カスタマイズなど、これ1冊でUbuntuがまるごとわかる!
重要用語220が基礎からまるっとわかる!Linux初心者がイチからはじめる試験対策書。
UNIX/Linuxシステムプログラミングをはじめよう
本書は、2007年にピアソン・エデュケーションから発行された『例解UNIXプログラミング教室 -システムコールを使いこなすための12講ー』の改訂版です。
本書は、UNIX/Linuxの機能を使ったC言語プログラミングを解説するものです。UNIXは、ファイルの操作やプロセスの制御、プロセスへのシグナル、ネットワーク通信、端末の操作など、多くの高度な機能を持っています。しかし、システムコールによって、このような機能を利用したプログラムを正しく動作するようつくるためには、UNIXの隠れた概念や制約について知っている必要があり、それらを網羅的に覚えるのは困難です。
本書は、この概念や制約が、それぞれのシステムコールの動作に及ぼす影響を全部覚えるといったアプローチはとっていません。むしろ、必要なときに必要なシステムコールが分かり、それをどう使えばよいのか、そして、その機能には当然どのような制限があるのかが分かるようになるように、UNIXの基本概念とプログラマから見えるUNIXの概観をつかめるよう解説しました。
本書は単なるインタフェースの解説書ではありません。インタフェースの説明をしつつ、 UNIXの概観(エッセンス)を読者に理解してもらうことで、できるだけ楽に、しかも確かなUNIXシステムプログラミングができるようになってもらうことを目指しました。また、豊富なサンプルコードと演習問題を掲載し、実践的なプログラミングの助けとなるようにしています。
<このような方におすすめ>
・C言語の基本を学習し終えた学生、プログラミング入門者
・システムプログラミングのスキルをさらに磨きたいソフトウェアエンジニア
・組込みプログラムやデバイスドライバの開発に必要な基礎知識を学びたいエンジニア
<おもな改訂内容>
・第0章 UNIXの基礎とシェルの新設:UNIXシステムプログラミングを学ぶ準備として、UNIX にまだ慣れていない読者のために、UNIXとはどのようなものか、どのように操作するかを説明する第0章を新設しました。
・用語の見直し:旧版では提案も含めて読者にわかりやすい用語を目指していましたが、この新版では、わかりやすさを保ちつつ、広く使われている語を用いるようにしました。
UNIX自体がすでに成熟しているため、システムプログラミングの部分については小規模な改善を行いました。
なお、すべてのコードは以下のサイトからダウンロードできます。
https://github.com/kazutomi/reikai-unix-code-samples
第0章 UNIX の基礎とシェル
第1章 C の復習 (1):マニュアルの読み方,エラー処理,構造体,共用体
第2章 C の復習 (2):ポインタ,バイトオーダ,複雑な型
第3章 低水準入出力
第4章 標準入出力ライブラリ
第5章 プロセス
第6章 ファイルシステム
第7章 ファイル記述子のコピーとパイプ: dup , dup2 , pipe
第8章 ソケット通信入門
第9章 シグナルと競合状態
第10章 端末 (1) :端末,端末ラインディシプリン, termios 構造体
第11章 端末 (2) :エスケープシーケンス, curses ライブラリ,擬似端末
第12章 非局所脱出: setjmp, longjmp
参考文献
用語集
索引