20211009のLinuxに関する記事は3件です。

01_ローカル開発環境の構築_20200823

まえがき どうもこんにちは、Kᕕ( ᐛ )ᕗCです。 初の「Qiita」での記事の投稿となりますが、私がよく活用しているもので、大変役に立っているもの。 それが「ローカル開発環境」の構築備忘録を残そうと考えました。 この記事を書こうと思ったきっかけも、毎回備忘録として「Github」に残していたんですが、GithubはQiitaより使用頻度が劣るので、こちらに同じ内容ではありますがここに残そうかなと思いました。 環境 OS:Windows 10 Home 開発環境専用のディレクトリ(フォルダ)を用意する [Windows PowerShell]を起動する 以下のコマンドを実行していく mkdir TestVagrant ※[TestVagrant]の箇所は任意の名前で良い cd TestVagrant mkdir MyCentOS ※[MyCentOS]の箇所は任意の名前で良い Vagrant init bento/centos-6.8 ※[bento/centos-6.8]は好きなOSとバージョンで良い ※参考:https://app.vagrantup.com/boxes/search Vagrantfileの編集 [Windows]キーと[E]キーを同時に押してエクスプローラを起動する vagrant initを実行したパスに移動する Vagrantfileをダブルクリックし、メモ帳で開く 以下の文言を([Ctrl - F]とかで検索して)書き換える # config.vm.network "private_network", ip: "192.168.33.10" config.vm.network "private_network", ip: "192.168.33.10" ※33.10の箇所は任意の数字で良い PowerShellに戻って、以下のコマンドを実行する vagrant up
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

カーネルについて

カーネルについて LinuxはOSの名前であるが、厳密に言えばカーネルの名前となる。カーネルとは文字通りOSの核となるファイルの事で、各種コマンドは、カーネルを通して実行される。 コマンドが動く仕組みだが、コマンドがカーネルに対し実行して欲しい処理を依頼して、カーネルに実行してもらうことになる。カーネルは実行結果をコマンドに返して、コマンドはあたかも自分が実行したかように結果を表示する。このようにバックでカーネルが処理を実行しているのだ。コマンドがカーネルに処理を依頼することを、システムコールと呼ぶ。 Linuxカーネルのファイルはどこに保存されているのかといえば、/bootの中のvmlinuzというファイル名で保存されている。ls -lをしてvmlinuzファイルを見てみると、vmlinuz5.4.0.80-genericのシンボリックリンクとなっている。大元のvmlinuz5.4.0.80-genericファイルも、vmlinuzがある同じディレクトリ配下に存在している。 また、同一ディレクトリ配下に、vmlinuz.oldという名のファイルも存在している。このファイルもまた、vmlinuz5.4.0.80-genericのリンボリックリンクとなっている。oldという拡張子がついてるということは、恐らく、vmlinuzのバックアップリンクの役割だと思われる。カーネルファイルが壊れた場合、このoldファイルをリネームして、拡張子を取れば復旧できるようになっているものと思われる。 vmlinuzだが、拡張子はついていないが、fileコマンドで詳細を表示してみると、bziImageという形式のイメージファイルであることが確認できる。OSを起動したときに、ブートローダーがこのvmlinuzファイルを、メモリ上にロードすることでOSは起動される。そしてブートローダーを起動するのは、マザーボード上に組み込まれている、BIOSもしくはUEFIというファームウェア。カーネルがロードされるメモリ空間のことをカーネル空間と呼ぶ。また、vmlinuzの後についている5.4.0.80-genericは、カーネルのバージョンを指している。 ls -lhで、vmlinuzの容量を確認してみると、12Mであることが分かる。重要なファイルである割には、随分と軽いファイルになっている。実は軽い方がOSの起動が短時間で済むため、あえて軽くしているのだ。カーネルファイルを軽くできる理由は、本来、カーネルに含まれていた機能をモジュールとして別ファイルにして外部に出しているためだ。そして、モジュールはカーネルが起動されたとき、カーネルの中に一緒に組み込まれることで動作するようになっている。各種モジュールファイルは、/lib/modeulesの配下に格納されている。/lib/modeulesの配下をみると、5.4.0.80-genericという、カーネルのバージョン番号であらわされたディレクトリが1つだけ存在している。そのディレクトリの中にたくさんのモジュールが格納されていることが確認できる。カーネルのバージョンを表示するコマンドはuname -r。実行すると、5.4.0.80-genericと表示される。OSのバージョンはUbuntu20.4なので、OSのバージョンとカーネルのバージョンは全く関連性がないことになる。 ls -lでモジュールが保管されているファイルの一覧を表示するには、ls -l /lib/modeules/5.4.0.80-genericとなるが、ls -l /lib/modeules/uname -rというコマンドを使って応用することができる。これはちょっとしたテクニック。 OS起動時にカーネルに組み込まれたモジュールの一覧を表示するコマンドがある。それがlsmodコマンド。 vmlinuzは起動した後は、ディレクトリの大元である、ルート(/)のファイルシステムをマウントして、各種サービスを起動する大元のプログラム、/sbin/initを起動して、準備OKとなる。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

LinuxにHomebrewを入れてみる

とても便利なHomebrew macOSにはLinuxでいうところのyumやaptの様なOS付属のパッケージマネージャがありませんが、OSSのプロジェクトが幾つか存在します。その中でも最も利用者が多いのではないかと思われるHomebrewは、QiitaのmacOSの記事でも、セットアップしたらまずはHomebrewをインストールする、と紹介されているくらいポピュラーなツールとなっています。 以前はMacPortsというパッケージマネージャもよく聞きましたが、こちらはあまり使ったことがないので今回は触れません。 LinuxにもHomebrewあるの…? 前述の通り、Linuxには元々パッケージマネージャが存在するので、他のパッケージマネージャが欲しいな~と感じることは基本的にありません。必要なソフトウェアに応じて、そのパッケージが提供されているリポジトリを追加したりすることがあることくらいでしょうか。ただ、このリポジトリ追加もなかなかくせ者で、同じソフトウェアが複数のリポジトリで公開されている場合は優先度的に衝突したり不整合が発生することもありますし、リポジトリのポリシーにより提供されているバージョンの最新版への追従度等が異なったりすることあります。 こんな時デスクトップ(作業端末)用途だと、サーバ向け程の厳密性や安定性は要らないから、適度に新しくて後腐れなくもっと簡単に扱えるものがあれば便利だよな~、LinuxでもHomebrew使いたいね~と思っていたら、よく見たらLinuxにも対応していると書かれています。早速インストールしてみます。 導入環境 今回はWinodows 10 Pro 21H1上のWSL2で動作しているUbuntu 20.04に対してHomebrewを導入してみます。 インストール Homebrewといえば、シェルのワンライナーでサクッとインストールできるのが特徴の一つです。Linux版ではどうでしょうか。 Linux版のHomebrewの公式サイトにアクセスすると、インストール方法が確認できます。 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" Paste that in a macOS Terminal or Linux shell prompt. Homebrewのインストール方法はmacOSと全く同じでした。 ワンライナーを実行すると、パッケージマネージャ本体をインストールするためsudoで管理者権限を要求されますので、パスワードを入力します。すると、必要なディレクトリの作成やgitによる構成ファイルのダウンロードが自動的に行われてインストールが完了します。ほんとに簡単ですね! インストールが完了すると、「Next Steps」として以下が提示されます。 ==> Next steps: - Run these two commands in your terminal to add Homebrew to your PATH: echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> /home/kansaizine/.profile eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" - Run `brew help` to get started - Further documentation: https://docs.brew.sh - Install the Homebrew dependencies if you have sudo access: sudo apt-get install build-essential See https://docs.brew.sh/linux for more information - We recommend that you install GCC: brew install gcc 案内通り、Homebrewをパスに追加するために以下を実行します。 $ echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> /home/kansaizine/.profile $ eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" 1行目は次回以降も自動的に有効化される様に.profileファイルへの設定、2行目は現在実行しているシェル上で即時有効化するためのものですね。 パッケージのインストール パッケージマネージャ本体の導入が完了したので、次はパッケージをインストールしてみます。 先ほどのNext StepsにてGCCのインストールが推奨されていましたので、こちらをインストールしておきましょう。Homebrewで初めてインストールするパッケージですね。 $ brew install gcc ==> Downloading https://ghcr.io/v2/linuxbrew/core/gmp/manifests/6.2.1_1 ######################################################################## 100.0% ==> Downloading https://ghcr.io/v2/linuxbrew/core/gmp/blobs/sha256:786ae29f0c0b06ea86e42bd9c6ac2c49bd5757da037dead7053e8bd612c4cf8c ==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:786ae29f0c0b06ea86e42bd9c6ac2c49bd5757da037dead7053e8bd612c4cf8 ######################################################################## 100.0% ==> Downloading https://ghcr.io/v2/linuxbrew/core/isl/manifests/0.24 ######################################################################## 100.0% ==> Downloading https://ghcr.io/v2/linuxbrew/core/isl/blobs/sha256:7b58d25de0b7ed797118f32febe116ee2d7458767e6339d6a4ce51ff4ab11191 ==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:7b58d25de0b7ed797118f32febe116ee2d7458767e6339d6a4ce51ff4ab1119 ######################################################################## 100.0% ==> Downloading https://ghcr.io/v2/linuxbrew/core/mpfr/manifests/4.1.0 ######################################################################## 100.0% ==> Downloading https://ghcr.io/v2/linuxbrew/core/mpfr/blobs/sha256:5fa04c762dd682c46b3c15d2c28e89a36353717c533e7aaa12298b5202aeeba8 ==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:5fa04c762dd682c46b3c15d2c28e89a36353717c533e7aaa12298b5202aeeba ######################################################################## 100.0% ==> Downloading https://ghcr.io/v2/linuxbrew/core/libmpc/manifests/1.2.1 ######################################################################## 100.0% ==> Downloading https://ghcr.io/v2/linuxbrew/core/libmpc/blobs/sha256:c12f0406fb375c08d4c9f699ec2d28099088bb999fe9cceefe9145c001f24f89 ==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:c12f0406fb375c08d4c9f699ec2d28099088bb999fe9cceefe9145c001f24f8 ######################################################################## 100.0% ==> Downloading https://ghcr.io/v2/linuxbrew/core/zlib/manifests/1.2.11 ######################################################################## 100.0% ==> Downloading https://ghcr.io/v2/linuxbrew/core/zlib/blobs/sha256:6f604280b9e056da163b81cef3076b2e39bbd2b8d3cc8c36d27c19c472c760a4 ==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:6f604280b9e056da163b81cef3076b2e39bbd2b8d3cc8c36d27c19c472c760a ######################################################################## 100.0% ==> Downloading https://ghcr.io/v2/linuxbrew/core/zstd/manifests/1.5.0 ######################################################################## 100.0% ==> Downloading https://ghcr.io/v2/linuxbrew/core/zstd/blobs/sha256:35f3d0c3e35229b4b9d32a2315f061651ee1cf88e2d5216ec259f2aece4dafb3 ==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:35f3d0c3e35229b4b9d32a2315f061651ee1cf88e2d5216ec259f2aece4dafb ######################################################################## 100.0% ==> Downloading https://ghcr.io/v2/linuxbrew/core/binutils/manifests/2.37 ######################################################################## 100.0% ==> Downloading https://ghcr.io/v2/linuxbrew/core/binutils/blobs/sha256:719fb08218906d67d42eaca5ade0b8deaec6dbb03184a9e968214187d7f04bfa ==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:719fb08218906d67d42eaca5ade0b8deaec6dbb03184a9e968214187d7f04bf ######################################################################## 100.0% ==> Downloading https://ghcr.io/v2/linuxbrew/core/gcc/manifests/11.2.0 ######################################################################## 100.0% ==> Downloading https://ghcr.io/v2/linuxbrew/core/gcc/blobs/sha256:b77106d6f2a36dd0c9a0a4396cc77a71e81880bb9984ca68a0f986253f537053 ==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:b77106d6f2a36dd0c9a0a4396cc77a71e81880bb9984ca68a0f986253f53705 ######################################################################## 100.0% ==> Installing dependencies for gcc: gmp, isl, mpfr, libmpc, zlib, zstd and binutils ==> Installing gcc dependency: gmp ==> Pouring gmp--6.2.1_1.x86_64_linux.bottle.tar.gz ? /home/linuxbrew/.linuxbrew/Cellar/gmp/6.2.1_1: 23 files, 3.9MB ==> Installing gcc dependency: isl ==> Pouring isl--0.24.x86_64_linux.bottle.tar.gz ? /home/linuxbrew/.linuxbrew/Cellar/isl/0.24: 74 files, 8.9MB ==> Installing gcc dependency: mpfr ==> Pouring mpfr--4.1.0.x86_64_linux.bottle.tar.gz ? /home/linuxbrew/.linuxbrew/Cellar/mpfr/4.1.0: 30 files, 7.9MB ==> Installing gcc dependency: libmpc ==> Pouring libmpc--1.2.1.x86_64_linux.bottle.tar.gz ? /home/linuxbrew/.linuxbrew/Cellar/libmpc/1.2.1: 14 files, 549.9KB ==> Installing gcc dependency: zlib ==> Pouring zlib--1.2.11.x86_64_linux.bottle.tar.gz ? /home/linuxbrew/.linuxbrew/Cellar/zlib/1.2.11: 12 files, 424.2KB ==> Installing gcc dependency: zstd ==> Pouring zstd--1.5.0.x86_64_linux.bottle.tar.gz ? /home/linuxbrew/.linuxbrew/Cellar/zstd/1.5.0: 31 files, 3.2MB ==> Installing gcc dependency: binutils ==> Pouring binutils--2.37.x86_64_linux.bottle.tar.gz ? /home/linuxbrew/.linuxbrew/Cellar/binutils/2.37: 4,594 files, 261.3MB ==> Installing gcc ==> Pouring gcc--11.2.0.x86_64_linux.bottle.tar.gz ==> Creating the GCC specs file: /home/linuxbrew/.linuxbrew/Cellar/gcc/11.2.0/lib/gcc/11/gcc/x86_64-pc-linux-gnu/11.2.0/specs ? /home/linuxbrew/.linuxbrew/Cellar/gcc/11.2.0: 2,194 files, 348.2MB Depencency(依存性)を解決しながらパッケージのインストールが完了しました。Homebrewでおなじみのビールのアイコンも表示されていますね! Homebrewでインストールされたgccは11.2.0という非常に新しいバージョンでした。これほど新しいバージョンがOSのリポジトリで提供されるのは数年かかるでしょうから、新しいもの好きのエンジニアにとっては嬉しいですね。 gccはOS側でもデフォルトで導入されている可能性が高いので、「gcc-11」という名前でインストールされている様です。既にパスが通っているのでシェル上で実行することで使用することが出来ました。 $ gcc-11 -v Reading specs from /home/linuxbrew/.linuxbrew/Cellar/gcc/11.2.0/lib/gcc/11/gcc/x86_64-pc-linux-gnu/11.2.0/specs COLLECT_GCC=gcc-11 COLLECT_LTO_WRAPPER=/home/linuxbrew/.linuxbrew/Cellar/gcc/11.2.0/libexec/gcc/x86_64-pc-linux-gnu/11.2.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../configure --prefix=/home/linuxbrew/.linuxbrew/Cellar/gcc/11.2.0 --libdir=/home/linuxbrew/.linuxbrew/Cellar/gcc/11.2.0/lib/gcc/11 --disable-nls --enable-checking=release --enable-languages=c,c++,objc,obj-c++,fortran,d --program-suffix=-11 --with-gmp=/home/linuxbrew/.linuxbrew/opt/gmp --with-mpfr=/home/linuxbrew/.linuxbrew/opt/mpfr --with-mpc=/home/linuxbrew/.linuxbrew/opt/libmpc --with-isl=/home/linuxbrew/.linuxbrew/opt/isl --with-zstd=/home/linuxbrew/.linuxbrew/opt/zstd --with-pkgversion='Homebrew GCC 11.2.0' --with-bugurl=https://github.com/Homebrew/linuxbrew-core/issues --enable-libphobos --with-boot-ldflags='-static-libstdc++ -static-libgcc ' --disable-multilib Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 11.2.0 (Homebrew GCC 11.2.0) まとめ Linuxにも公式版のHomebrewが存在しました。インストールも簡単で、導入されるパッケージも非常に新しいということで、特に開発環境や作業端末では活躍してくれるのではないかと思います。 WSLにも導入できますので、Windowsな皆さんも使ってみてください。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む