2019年11月9日土曜日

ブートローダ(GRUB系)について

概要

ハードディスからOSを読み込んで起動するプログラムをブートローダといいます。
代表的なブートローダがGRUBであり、GRUBには「GRUB Legacy」と「GRUB2」があります。
ここではGRUB2の設定方法についての情報を記載します。

要点

  • GRUB2の設定
  • GRUB2の設定は/etc/default/grubファイルに設定パラメータを記載してから、
    grub-mkconfigコマンドを実行することで、/boot/grub/grub.cfgに設定が反映されます。

    ※/etc/default/grubの設定例
    
     # cat /etc/default/grubの結果 【準備中】
    
    

    パラメータ名 意味
    GRUB_TIMEOUT 起動メニューがタイムアウトするまでの秒数

  • grub-mkconfigコマンド
  • /etc/default/grubの設定を反映するには、grub-mkconfigコマンドを使います。
    設定ファイルに反映させる場合には、「-o」のオプションをつけて、「/boot/grub/grub.cfg」
    を引数として記載する必要があります。

    
     # grub-mkconfig -o /boot/grub/grub.cfg 【準備中】
    
    

Linuxのパーティションについて

概要

Linuxをインストールする際に設定するパーティションに関しての情報をまとめます。

要点

Linuxをインストールする際には以下のディレクトリを、それぞれ別のパーティションに分割して利用するのが 一般的なようです。
  • /home
  • 一般ユーザのデータが格納されます。/home/アカウント名/というような形でフォルダが作成されるので、
    大人数が使用するシステムだとサイズを大きくする必要があります。

  • /var
  • ログファイルなどが格納されるフォルダです。ここのサイズを大きくするとそれだけ多くのログを残せます。
    ここのパーティションを分けないと、例えばログのサイズが膨大なものになった場合に、ほかのディレクトリへ
    影響を与えてしまう可能性があります。

  • /usr
  • プログラムやライブラリなどが格納されるディレクトリなので運用中にサイズが大きくなることが少ないです。

  • /boot
  • カーネルなどが格納されているディレクトリです。

  • スワップ領域
  • 仮想メモリとして利用される領域で搭載している物理メモリの1,2倍のサイズを割り当てることが多いようです。

  • /(ルート)
  • 上位以外のパーティションを設定していないディレクトリが/(ルート)配下に割り当てられます。

  • パーティションの確認方法
  • 実際にどのような割合でパーティションが割り当てられているかを確認するにはfdiskコマンドを使用します。 以下はラズパイで見た様子なので2つにしか分かれていないように見えます。
    
     # fdisk -l
     Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors
     Units: sectors of 1 * 512 = 512 bytes
     Sector size (logical/physical): 512 bytes / 4096 bytes
     I/O size (minimum/optimal): 4096 bytes / 4096 bytes
     (省略)
     Device         Boot  Start      End  Sectors  Size Id Type
     /dev/mmcblk0p1        8192   532479   524288  256M  c W95 FAT32 (LBA)
     /dev/mmcblk0p2      532480 15196159 14663680    7G 83 Linux
    
    

2019年11月8日金曜日

systemdについて

概要

Linuxのプロセス起動に使われているsystemdについての情報をまとめます。


要点

  • systemd関連のプロセス
  • systemdはLinux上のサービスを管理する仕組みで、以下のデーモンプロセスによって構成されています。

    デーモンプロセス 説明
    systemd systemdのメインプロセス
    systemd-timesyncd 時刻同期関連のプロセス
    ystemd-logind ログイン関連のプロセス
    systemd-udevd デバイス検知関連のプロセス
    systemd-journald ジャーナル(systemd関連のログ)管理をするプロセス

  • systemdで扱うUnit
  • SystemdはUnitと呼ばれる単位でサービスを管理しています。 Unitはファイルの拡張子で分類することができ、通常のプロセスであればserviceファイルを使いますが、
    ほかにも以下の種類があります。

    ファイルの拡張子 説明
    service プロセスを起動する
    device デバイスを表す
    mount ファイルシステムをマウントする
    swap スワップ領域を有効にする
    target Unitファイルをグループ化する

  • systemctlコマンドによるUnitの管理
  • systemdを使ったUnitの管理にはsystemctlコマンドを使用します。

    主なサブコマンド 説明
    status Unitの稼働状況を確認する
    start Unitを起動する
    stop Unitを停止する
    enable Unitの自動起動を有効にする
    disable Unitの自動起動を無効にする
    list-unit-files Unitの一覧を表示する

    
     $ systemctl status ssh
     ● ssh.service - OpenBSD Secure Shell server
        Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
        Active: active (running) since Fri 2019-11-08 20:24:52 JST; 17h ago
          Docs: man:sshd(8)
                man:sshd_config(5)
       Process: 408 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
      Main PID: 423 (sshd)
         Tasks: 1 (limit: 2200)
        Memory: 4.0M
        CGroup: /system.slice/ssh.service
                mq423 /usr/sbin/sshd -D
    
     11月 08 20:24:52 raspberrypi systemd[1]: Starting OpenBSD Secure Shell server...
     11月 08 20:24:52 raspberrypi sshd[423]: Server listening on 0.0.0.0 port 22.
     11月 08 20:24:52 raspberrypi sshd[423]: Server listening on :: port 22.
    
    

起動とshutdownコマンド

概要

Linuxの起動時処理の見方と、シャットダウンコマンドの使い方についての情報をまとめます。

要点

  • 起動時のカーネルの処理
  • Linux起動時のカーネルの処理内容はdmesgコマンドで確認することができます。
    
    $dmesg
    
    
    dmesgの内容は/var/log/dmesgにも保存されます。

  • システムのシャットダウン
  • システムを停止する際には、電源ケーブルを抜いたり電源ボタンを押したりするのではなく、shutdownコマンドを使用することで安全に停止することができます。
    オプション 説明
    -h シャットダウンする
    -r 再起動する
    -k シャットダウンは行わず、
    警告メッセージをログインしている人全員に通知

    ※すぐに再起動したいとき
    
     # shutdown -r now
    
    

    ※警告メッセージを出して、5分後にシャットダウンするとき
    
     # shutdown -h +5 "Please logout!"
     Shutdown scheduled for Fri 2019-11-08 16:48:11 JST, use 'shutdown -c' to cancel.
    
    
    ※このようなメッセージが出ます
    
     Please logout!
     The system is going down for poweroff at Fri 2019-11-08 16:48:11 JST!
    
    

    ※23:00に再起動をするとき
    
     # shutdown -r 23:00
     Shutdown scheduled for Fri 2019-11-08 23:00:00 JST, use 'shutdown -c' to cancel.
    
    

ハード基礎知識


概要

デバイス情報を確認するためのLinuxコマンドについての情報をまとめます。

要点

  • CPU情報の確認
  • Linuxのデバイスに関する情報は/proc配下のファイルで確認する事ができます。
    
     $ cat /proc/cpuinfo
     processor       : 0
     model name      : ARMv7 Processor rev 4 (v7l)
     BogoMIPS        : 38.40
     Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
     CPU implementer : 0x41
     CPU architecture: 7
     CPU variant     : 0x0
     CPU part        : 0xd03
     CPU revision    : 4
     (以下省略)
    
    
  • PCIデバイスの情報を表示
  • PCが使用可能なPCIデバイス情報は、lspciコマンドで表示することができます。
    
    $lspci
    
    
  • USBデバイスの情報を表示
  • 接続しているUSBデバイスの情報は、lsusbコマンドで表示することができます。

    ※lsusbコマンドでよく使うオプション
    オプション 説明
    -v 詳細に表示する
    -t 階層をツリー構成で表示する

    
     $ lsusb -t
     /:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
         |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
             |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
    
    

  • カーネルモジュールの確認
  • Linuxでデバイスを利用するために必要なプログラムをカーネルモジュールといい、デバイスを使用する際にはロードしておく必要があります。 現在ロードされているカーネルモジュールを確認するにはlsmodコマンドを使います。
    
     $ lsmod
     Module                  Size  Used by
     fuse                  110592  3
     rfcomm                 49152  4
     bnep                   20480  2
     hci_uart               40960  1
     btbcm                  16384  1 hci_uart
    (以下省略)
    
    
    必要なカーネルモジュールを手動でロードする際にはmodproveコマンドを使用します。
    
    # modprobe XXXX
    
    

2019年11月2日土曜日

LEDの点灯、消灯


概要

LEDの点灯、消灯をするコマンドを作成します。

やったこと

  • LEDを接続する
  • コマンドを作成する

ラズベリーパイの立ち上げ


概要

少し前に買った、RaspberryPi3 Model B があったので、いろいろやってみます。
リモートデスクトップを使えるように設定するところまでやりました。
これで、本体だけ放置しておいても、いじれるような環境になりました。

やったこと

  1. 物の準備
  2. SDカードのフォーマット
  3. SDカードにイメージファイルの書き込み
  4. ネットワークの設定
  5. SSH接続の確認
  6. リモートデスクトップ接続の確認
  7. IPアドレス固定の設定