20220115のLinuxに関する記事は5件です。

今使ってるLinuxをDockerイメージ化する

はじめに Dockerfileで宣言するFROM centos:7などのベースイメージは公式で配布するもの使用するのが一般的ですが、こういったベースイメージは実は自前の物を使う事もできます1。今回は自分が使用しているシステムをそのままDockerイメージ化する方法をまとめて置きます。 Dockerイメージの作り方 Linuxでベースイメージを作るにはそのままで稼働できるファイルの群れ、すなわちルートファイルシステム2が必要です。今回は使用中のLinuxシステムをそのままイメージ化することが目的なのでシステム自体を圧縮してファイル化します。 1. 全体のシステムをコピーする rsyncを使ってシステムのスナップショットを作ります。その時、/dev, /proc/, /sys/, /run, /mntは現在のマシーンに依存するディレクトリーなので除外します。 下記の例では/mnt/copyにシステムをコピーします。 rsync -avz /* /mnt/copy/ --exclude '/dev' --exclude '/proc' --exclude '/sys' --exclude '/run' --exclude '/mnt' 2. 除外したディレクトリーを生成する 除外したディレクトリーもまたシステムに必要なものなので空のディレクトリーを生成します。 mkdir /mnt/copy/sys /mnt/copy/dev /mnt/copy/proc /mnt/copy/run /mnt/copy/mnt 3. tar.gzに圧縮する 軽量化のためにtar.gzを使います。また、この時、ルートが/になるようにすることが重要です。今回は /mntの中で-Cオプションを使いました。 cd /mnt tar -czvf my-linux.tar.gz -C copy . 4. Tarballを使ってイメージを作る Tarballをそのままimportする方法3とDockerfile1を使う方法があります。 Tarballをそのまま取り入れる docker import my-linux.tar.gz Dockerfileでイメージをビルドする Dockerfile FROM scratch ADD my-linux.tar.gz / CMD ["/bin/bash"] docker build --tag my-linux:lastet . Create a base image, https://docs.docker.com/develop/develop-images/baseimages/ ↩ root ファイルシステム, https://www.ibm.com/docs/ja/aix/7.2?topic=tree-root-file-system ↩ docker import, https://docs.docker.com/engine/reference/commandline/import/ ↩
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

rc.localに権限付与

rc.localに記載しただけでは実行されなかった。 下記通り実行権限を付与する。 chmod 755 /etc/rc.d/rc.local
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

シェルスクリプト 出力文字列の部分色付け Linux sh bash sed echo printf

概要 シェルスクリプト出力結果の一部を指定して色つけしたい 実行環境は Mac or RHEL系 ※ 今回は紫色にするので  色数字に035 → [35mを使用する 形式例 シンプルに色つけ ESC=$(printf '\033') echo "${ESC}[35m色をつけたい文字列${ESC}[m" 開始/終了記号も変数化してみた ESC=$(printf '\033');COLS=$(printf '[35m');COLE=$(printf '[m') echo "${ESC}${COLS}色をつけたい文字列${ESC}${COLE}/g" sed:複数指定する(-E使用時の)場合 # ; で区切って複数書く sed -E "s/条件1/変更内容1/g; s/条件2/変更内容2/g" sed:条件で拾った内容をそのまま出力に流用 # () で囲って \1 で出力 sed -E "s/(条件1)/\1/g" サンプル コマンド ESC=$(printf '\033');COLS=$(printf '[35m');COLE=$(printf '[m'); \echo -e "hogehttppiyo\nhttppiyo\nhogehttpshoge" | \sed -E "s/(^http.*$)/${ESC}${COLS}\1${ESC}${COLE}/g; s/(https)/${ESC}${COLS}\1${ESC}${COLE}/g" シェルスクリプト #!/bin/sh ESC=$(printf '\033') COLS=$(printf '[35m') COLE=$(printf '[m') TEXT1="hogehttppiyo" TEXT2=`echo "http"` TEXT="${TEXT1}\n${TEXT2}piyo\nhogehttpshoge" \echo -e $TEXT | \sed -E \ "s/(^http.*$)/${ESC}${COLS}\1${ESC}${COLE}/g;\ s/(https)/${ESC}${COLS}\1${ESC}${COLE}/g" # Macでは echo -e の -e は不要なので消す 出力結果 応用 echo内容を 変数 に置き換えれば色々流用できそう。 あとはsedの正規表現が組めるか次第 参考
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【 Rocky Linux 8】一般ユーザーにsudoアクセス権を付与する方法

はじめに 一般ユーザーにsudoで管理コマンドを使わせたかった備忘録。 動作環境 Rocky Linux release 8.5 (Green Obsidian) sudoとは 一般ユーザーで管理コマンド実行するためのコマンド。sudoアクセス権が付与されている必要がある。 手順 testuserへの付与手順。 1. rootユーザーでログイン $ su - 2. sudo コマンドで適用されるポリシーの定義確認と変更 /etc/sudoers ファイルを開く # visudo wheel 管理グループに適用するポリシーを指定する sudo時、rootユーザーのパスワードを要求する場合、下をコメントアウト(デフォルト)。 ## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL ## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL sudo時、rootユーザーのパスワードを要求しない場合、上をコメントアウト。 ## Allows people in group wheel to run all commands # %wheel ALL=(ALL) ALL ## Same thing without a password %wheel ALL=(ALL) NOPASSWD: ALL /etc/sudoers ファイルを閉じる 3. 一般ユーザーをwheel管理グループに追加 # usermod --append -G wheel testuser 4. sudoアクセス権が付与されたことの確認 testuserのグループを確認する groupsにwheelが付与されていれば成功。 # id testuser uid=1000(testuser) gid=1000(testuser) groups=1000(testuser),10(wheel) sudoコマンドが使えることを確認する $ から # に代われば成功。 下の例はパスワードを要求しない場合。 [testuser@XXXXXXXX ~]$ sudo su - Last login: Sat Jan 15 11:28:41 JST 2022 on pts/0 [root@XXXXXXXX ~]# 参考 Product Documentation for Red Hat Enterprise Linux 8 24.2. ユーザーへの sudo アクセス権限の付与 man sudo CentOS7で一般ユーザがsudoを使えるようにする
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Raspberry Pi 4 に openSUSE をインストールする

はじめに 今回は Raspberry Pi 4 に openSUSE Leap 15.3 をのデスクトップ環境なしでインストールし、有線 LAN に接続した状態で起動して ssh ログインによって初期設定を行います。 環境 Raspberry Pi 4 Model B 8GB RAM macOS 10.15.7 Catalina balenaEtcher 1.5.79 openSUSE とは Linux ディストリビューションの一つで、Leap はその安定版です。便利なツールが多く、コマンド操作に不慣れな人でも SSH 越しに使いやすいディストリビューションだと思います。日本ではマイナーな OS ですが、Linux のコマンド操作に自身がない人にもおすすめです。 インストール OSのダウンロード 下記のコマンドで Raspberry Pi 4 向けのイメージをダウンロードします。公式 Wiki を参考に、GUI 無しの JeOS というエディションを選びました。 PC wget http://download.opensuse.org/distribution/leap/15.3/appliances/openSUSE-Leap-15.3-ARM-JeOS-raspberrypi.aarch64.raw.xz microSDカードへの書き込み balenaEtcher 等を用いて microSD カードに OS を焼きます。 次に、Raspberry Pi の起動時に sshd を自動起動するように、 microSD カードをPCにマウントして boot ディレクトリ内に空の ssh ファイルを作成します。 Mac の場合は以下のコマンドで作成できます。 PC touch /Volumes/EFI/EFI/BOOT/ssh Raspberry Pi 4 の起動とログイン ここでは Raspberry Pi 4 の IP アドレスを192.168.100.10とします。この値は環境によって変わりますので、ご自身の環境に合わせて変更してください。パスワードはlinuxです。 PC ssh root@192.168.100.10 初期設定 sshd の自動起動 まずは、次回以降も起動時に sshd が自動で起動するように設定します。 RaspberryPi systemctl enable sshd ホスト名の設定 ssh ログインを容易にするために、/etc/hostnameファイルを書き換えてホスト名を設定します。ここでは、ホスト名をfoobarに設定します。 RaspberryPi echo foobar > /etc/hostname パッケージの更新と追加 まずはリポジトリを更新します。(Ubuntuでいう $ apt update) RaspberryPi zypper refresh 次に、パッケージをアップデートします。(Ubuntuでいう $ apt upgrade) RaspberryPi zypper update 加えて、必要なパッケージをインストールします。 RaspberryPi zypper in -y system-group-wheel man emacs-nox zsh sensors avahi bind-utils git gcc sl ユーザーアカウントの作成 root アカウントの常用は危険ですので、ユーザーアカウントを作成し、今後はそちらを利用します。ここでは hoge という名前のユーザーを作成します。wheel グループに入れることにより、sudo が使えるようになります。 RaspberryPi useradd -m hoge -s $(which zsh) -G wheel 作成したユーザーのパスワードを設定します。 RaspberryPi passwd hoge 再起動して再ログイン アップデートや設定を適用するために再起動します。 RaspberryPi reboot 再ログインすることで、ユーザーとホスト名の設定が正しく反映されたことを確認します。 PC ssh hoge@foobar これで一先ずセットアップは完了です。ここから、ssh の root ログインを禁止したり、使いたいパッケージをインストールしたりして使い始めましょう。 参考 [1] https://en.opensuse.org/HCL:Raspberry_Pi4 [2] https://ja.opensuse.org/Portal:Distribution [3] https://www.mikan-tech.net/entry/raspi-lite-headless-setup
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む