ラベル Ubuntu の投稿を表示しています。 すべての投稿を表示
ラベル Ubuntu の投稿を表示しています。 すべての投稿を表示
2024年2月24日土曜日

Raspberry Pi 4上のUbuntuにKubernetesを構築する

本ブログでは、数回に分けてKubernetesの構築手順を記載してきた。

今回は、Raspberry Pi 4上のUbuntuに対してKubernetesを構築する手順を記載する。

環境

今回の手順を検証した環境は以下となる。

  • HW: Raspberry Pi 4 Model B(RAM 4GB)
  • OS: Ubuntu 22.04.4 LTS
  • コンテナランタイム: Docker : 24.0.1
  • CRI: cri-dockerd: 0.3.10-dev
  • Kubernetes: v1.28.5

手順

1. Dockerのインストール

Dockerのインストールはaptを使って実施するが、その際に利用する前提パッケージを先にインストールする。

sudo apt install apt-transport-https ca-certificates curl software-properties-common

Dockerのリポジトリを登録する。以前はapt-keyコマンドでも同様の登録ができてが、現在は非推奨となっていることから、curlでキー情報を入手し、登録する手順を実施する。

sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Docker CEやその他必要となるパッケージをインストールする。

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Dockerの初期設定として、daemon.jsonを作成する。

$ sudo vi /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "insecure-registries": [
    "192.168.11.50"
  ]
}

Dockerのサービスを起動する。

sudo systemctl daemon-reload
sudo systemctl enable docker
sudo systemctl restart docker

2. Kubernetesインストール

Dockerと同様、Kubernetesもaptでインストールするため、リポジトリを登録する。

Kubernetes 1.28.xを使用する場合

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring_1.28.gpg
echo \
  'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | \
  sudo tee /etc/apt/sources.list.d/kubernetes_1.28.list
sudo apt update

Kubernetes 1.29.xを使用する場合

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo \
  'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | \
  sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update

kubelet、kubeadm、kubectlをインストールする。今回は既存のKubernetesクラスターに追加するため、バージョンを1.28.5に固定している。さらにapt-mark holdをすることで、インストールしたパッケージが想定されないタイミングでバージョンアップされないようにしている。

sudo apt-get install kubelet=1.28.5-1.1 kubeadm=1.28.5-1.1 kubectl=1.28.5-1.1
sudo apt-mark hold kubelet kubeadm kubectl

kubeletのサービスを起動する。

sudo systemctl daemon-reload
sudo systemctl enable kubelet
sudo systemctl restart kubelet

3. Swap無効化

Kubernetesの前提条件として、Swapを無効化する必要がある。Raspberry PiのUbuntuの場合は、そもそもSwapが設定されておらず、totalの値が0になっているため、このまま作業を続行する。

$ free
               total        used        free      shared  buff/cache   available
Mem:         3880992      226264     2100932        3552     1553796     3472052
Swap:              0           0           0

4. cri-dockerdインストール

cri-dokerdはGo言語でコンパイルする必要があるため、まずはGoのインストールを行う。なお、Ubuntuの標準リポジトリのGoはバージョンが古いため、PPA (Personal Package Archives)のリポジトリ追加を行ったうえでインストールを行う。

sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt update
sudo apt install golang-go

なお、今回のインストールされたGoのバージョンは、1.21.7となる。

$ go version
go version go1.21.7 linux/arm64

cri-dockerdのビルドと配置を行う。

go build -o bin/cri-dockerd
sudo install -o root -g root -m 0755 bin/cri-dockerd /usr/local/bin/cri-dockerd
sudo cp -a packaging/systemd/* /etc/systemd/system
sudo sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service

cri-dockerdのサービスを起動する。

sudo systemctl daemon-reload
sudo systemctl enable cri-docker.service
sudo systemctl start cri-docker.socket

5. Kubernetes起動

最後にKubernetesを起動するが、初めてKubernetesクラスターを構成する場合はkubeadm initを、既存のクラスターに参加する場合はkubeadm joinを行う。

それぞれ、過去記事を参考に対応をいただきたい。

新規にKubernetesクラスターを構成する場合

既存のKubernetesクラスターに参加する場合

今回は既存のクラスターに参加した。結果、以下の通りUbuntu 22.04.4 LTSのノードがKubernetesに登録できた。

$ kubectl get node -o=wide
NAME        STATUS   ROLES           AGE    VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                    KERNEL-VERSION              CONTAINER-RUNTIME
t1015rasp   Ready    control-plane   26h    v1.28.5   192.168.3.5   <none>        Ubuntu 22.04.4 LTS          5.15.0-1046-raspi           docker://25.0.3
t3051kube   Ready    control-plane   276d   v1.28.5   192.168.3.1   <none>        AlmaLinux 8.6 (Sky Tiger)   4.18.0-372.9.1.el8.x86_64   docker://24.0.6
t3052kube   Ready    control-plane   276d   v1.28.5   192.168.3.2   <none>        AlmaLinux 8.6 (Sky Tiger)   4.18.0-372.9.1.el8.x86_64   docker://24.0.6

以上で、Raspberry Pi 4上のUbuntuに対してKubernetesを構築する手順は完了となる。

2023年12月23日土曜日

UbuntuにZabbix Agent 2をインストールする手順

Zabbix Agentは過去のバージョンから利用されているZabbix Agentとは別に、新たにGo言語ベースで作り直されたZabbix Agent 2が存在する。

過去Windows環境にZabbix Agent 2をインストールする手順は記載した。

今回は、Ubuntuに対してZabbix Agent 2をインストールする手順を記載する。

環境

導入対象となるOSとZabbixのバージョンは以下の通り。

  • OS : Ubuntu 22.04.2 LTS
  • Zabbix Agent 2 : 6.0

Ubuntuは初期状態ではcurlコマンドが使えない場合があるので、その場合は以下の通りインストールをしておくこと。

$ sudo apt install curl

手順

1. zabbix-releaseをインストール

以下URLから最新のzabbix-releaseのパッケージファイルのURLを確認する。

バージョン URL
6.0 https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/
6.2 https://repo.zabbix.com/zabbix/6.2/ubuntu/pool/main/z/zabbix-release/
6.4 https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/

今回の場合は、Ubuntu 22.04.2 LTSに対して、Zabbix 6.0のエージェントをインストールすることから、https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest%2Bubuntu22.04_all.debをcurlを使ってダウンロードしてインストールする。

$ curl -LO https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest%2Bubuntu22.04_all.deb
$ sudo dpkg -i zabbix-release_latest%2Bubuntu22.04_all.deb
以前に未選択のパッケージ zabbix-release を選択しています。
(データベースを読み込んでいます ... 現在 204627 個のファイルとディレクトリがインストールされています。)
zabbix-release_latest%2Bubuntu22.04_all.deb を展開する準備をしています ...
zabbix-release (1:6.0-4+ubuntu22.04) を展開しています...
zabbix-release (1:6.0-4+ubuntu22.04) を設定しています ...

$ sudo apt update

2. Zabbix Agnet 2をインストール

$ apt search zabbix-agent
ソート中... 完了
全文検索... 完了
pcp-export-zabbix-agent/jammy 5.3.6-1build1 amd64
  Module for exporting PCP metrics to Zabbix agent

zabbix-agent/jammy 1:6.0.25-1+ubuntu22.04 amd64
  Zabbix network monitoring solution - agent

zabbix-agent-dbgsym/jammy 1:6.0.25-1+ubuntu22.04 amd64
  debug symbols for zabbix-agent

zabbix-agent2/jammy 1:6.0.25-1+ubuntu22.04 amd64
  Zabbix network monitoring solution - agent

zabbix-agent2-dbgsym/jammy 1:6.0.25-1+ubuntu22.04 amd64
  debug symbols for zabbix-agent2

zabbix-agent2-plugin-mongodb/jammy 1:6.0.25-1+ubuntu22.04 amd64
  Zabbix Agent2 plugin for monitoring MongoDB installations

zabbix-agent2-plugin-postgresql/jammy 1:6.0.25-2+ubuntu22.04 amd64
  Zabbix Agent2 plugin for monitoring PostgreSQL installations
$ sudo apt install zabbix-agent2

$ systemctl status zabbix-agent2
● zabbix-agent2.service - Zabbix Agent 2
     Loaded: loaded (/lib/systemd/system/zabbix-agent2.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2023-12-16 20:34:53 JST; 25s ago
   Main PID: 4798 (zabbix_agent2)
      Tasks: 10 (limit: 4599)
     Memory: 4.5M
        CPU: 21ms
     CGroup: /system.slice/zabbix-agent2.service
             mq4798 /usr/sbin/zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf

12月 16 20:34:53 t1082ubnt systemd[1]: Started Zabbix Agent 2.
12月 16 20:34:53 t1082ubnt zabbix_agent2[4798]: Starting Zabbix Agent 2 (6.0.25)
12月 16 20:34:53 t1082ubnt zabbix_agent2[4798]: Zabbix Agent2 hostname: [Zabbix server]
12月 16 20:34:53 t1082ubnt zabbix_agent2[4798]: Press Ctrl+C to exit.

3. 設定ファイルを修正

/etc/zabbix/zabbix_agent2.confのファイルを修正し、Zabbix Serverと疎通できるようにする。最低限以下の通り設定すれば動作する。

Server=[Zabbix ServerのIPアドレス]
ServerActive=[Zabbix ServerのIPアドレス]
Hostname=[Ubuntuのホスト名]

設定反映のため、Zabbix Agent 2を再起動する。

$ sudo systemctl restart zabbix-agent2

以上で、Ubuntuに対してZabbix Agent 2をインストールする手順は完了となる。

2023年8月2日水曜日

Ubuntu 20.04 LTS/22.04 LTSのインストール手順&初期設定手順

先日、日本におけるLinuxディストリビューションの検索数のトレンドを調べたところ、Ubuntuの検索数がCentOSやDebianと比較すると圧倒的に多いことがわかった。普段インフラエンジニアとして業務に携わる場合、ほぼRed Hat系のOS一択になっていたので、この結果は意外なものであった。

仕事で使うことがないことに加え、以前のUbuntuでは、デスクトップ環境が「Unity」と呼ばれるUbuntu独自のもので、個人的に使い勝手が悪かったこともあり、敬遠してしまっていた。しかし、現在のUbuntuではデスクトップ環境はGNOMEになったということもあり、今回インストールして使ってみることにした。

なお、本記事では「Ubuntu 20.04 LTS」及び「Ubuntu 22.04 LTS」にて動作確認をしている。

Ubuntuをダウンロードする

Ubuntuには本家からダウンロードできる「Ubuntu Desktop」と「Ubuntu Server」だけでなく、日本語環境利用に最適化された「Ubuntu 日本語 Remix イメージ」が存在する。日本語環境で使用することから、「Ubuntu 日本語 Remix イメージ」をダウンロードして進める。ダウンロードするバージョンは「Ubuntu 20.04 LTS」または「Ubuntu 22.04 LTS」となる。

Ubuntuをインストールする

  1. 「ようこそ」では「Ubuntuをインストール」を選択する。

  2. 「キーボードレイアウト」では「Japanese」を選択する。

  3. 「アップデートと他のソフトウェア」では「通常のインストール」を選択する。

  4. 「インストールの種類」では「ディスクを削除してUbuntuをインストール」を選択する。

  5. 「どこに住んでいますか?」では「Tokyo」を選択する。

  6. 「あなたの情報を入力してください」では必要な情報を入力する。今回は以下で設定した。

    • あなたの名前:ubnt
    • コンピューターの名前:デフォルトでは「<ユーザ名>-virtual-machine」となる。今回はホスト名に修正
    • ユーザー名の入力:ubnt

  7. インストールが開始される。環境にもよるが10分ほどでインストールは完了する。

Ubuntuの初期設定を行う

インストール完了後の初期設定として以下を実施していく。

  • ネットワーク設定・プロキシ設定
  • aptのプロキシ設定
  • SSH有効化
  • open-vm-toolsをインストール
  • xrdpのインストール
  • 時刻同期

ネットワーク設定・プロキシ設定

GUIの「アクティビティ」→「設定」→「ネットワーク」を開き、以下を設定する。ここで設定するプロキシサーバを設定することで、GUI上の「端末」などではhttp_proxyなどの環境変数が設定されるようだ。

  • 有線:IPv4を「手動」に設定し、固定IPアドレスを設定 (DHCP環境で問題ない場合は「自動 (DHCP)」で設定
  • ネットワークプロキシ:プロキシ環境の場合は、プロキシサーバを設定

aptのプロキシ設定

GUIでプロキシ設定を行っても、GUIでソフトウェアの更新を実施した際に失敗する。これはaptのプロキシ設定が不足することが原因となるため、「/etc/apt/apt.conf」のファイルを新規作成し、以下の通りプロキシ設定を追加する。

$ sudo vi /etc/apt/apt.conf
Acquire::http::proxy "http://192.168.33.23:8080";
Acquire::https::proxy "http://192.168.33.23:8080";
Acquire::ftp::proxy "http://192.168.33.23:8080";

「不完全な言語サポート」の対応を実施

インストール後、「不完全な言語サポート」のメッセージが表示される。

GUIでも実施可能であるが、コマンドラインで実施する場合は、以下の通りcheck-language-supportで不足する言語を確認したのち、aptで不足する言語のインストールを行う。

$ check-language-support
firefox-locale-en hunspell-en-au hunspell-en-ca hunspell-en-gb hunspell-en-us hunspell-en-za hyphen-en-ca hyphen-en-gb hyphen-en-us language-pack-en language-pack-gnome-en libreoffice-help-en-gb libreoffice-help-en-us libreoffice-l10n-en-gb libreoffice-l10n-en-za mythes-en-au mythes-en-us thunderbird-locale-en thunderbird-locale-en-gb thunderbird-locale-en-us wamerican wbritish

$ sudo apt update
$ sudo apt install $(check-language-support)

SSH有効化

Ubuntu DesktopではSSHサーバがデフォルトではインストールされていないため、インストールする。

$ sudo apt install openssh-server -y

open-vm-toolsをインストール

Ubuntu Desktopではopen-vm-toolsがデフォルトではインストールされていないため、インストールする。

$ sudo apt install open-vm-tools -y
$ sudo reboot

xrdpのインストール

Windowsと同様にリモートデスクトップ接続 (RDP) によるリモート操作を有効にするため、xrdpをインストールする。xrdpをインストールするだけで必要な設定は十分であり、即座にリモートデスクトップによる接続が可能になり、非常に使い勝手がよい。

$ sudo apt install xrdp -y
$ xrdp -v
xrdp 0.9.12
  A Remote Desktop Protocol Server.
  Copyright (C) 2004-2018 Jay Sorg, Neutrino Labs, and all contributors.
  See https://github.com/neutrinolabs/xrdp for more information.

時刻同期

Ubuntuでは時刻同期ではChronyでもNTPDでもなく、「systemd-timesyncd」で実装されている。

ただし、初期では同期先のNTPサーバの設定がされていないため、時刻同期サービスは動いていたとしても同期はされていない状態となっている。同期状態はtimedatectl statusコマンドで確認できるが、インストール直後は「System clock synchronized」の値が「No」になっている。

$ timedatectl status
               Local time: 日 2020-06-07 15:01:54 JST
           Universal time: 日 2020-06-07 06:01:54 UTC
                 RTC time: 日 2020-06-07 06:01:54    
                Time zone: Asia/Tokyo (JST, +0900)   
System clock synchronized: no                        
              NTP service: active                    
          RTC in local TZ: no                     

設定は「/etc/systemd/timesyncd.conf」に対して行う。デフォルトではすべてコメントアウトされているので、上位NTPサーバの設定のみ追加する。

$ sudo vi /etc/systemd/timesyncd.conf
[Time]
NTP=192.168.33.23   ←★アンコメントして上位のNTPサーバを追加
#FallbackNTP=ntp.ubuntu.com
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048

設定修正後、「systemd-timesyncd」サービスを再起動する。念のため、サービスの自動起動も有効にしておこう。

$ sudo systemctl restart systemd-timesyncd
$ sudo systemctl enable systemd-timesyncd

「System clock synchronized」が「yes」に変わったことを確認する。

$ timedatectl status
               Local time: 日 2020-06-07 15:14:02 JST
           Universal time: 日 2020-06-07 06:14:02 UTC
                 RTC time: 日 2020-06-07 06:14:02    
                Time zone: Asia/Tokyo (JST, +0900)   
System clock synchronized: yes                       
              NTP service: active                    
          RTC in local TZ: no               

まとめ

上記設定にて、リモートデスクトップ接続して利用できるUbuntuのデスクトップ環境が構築できた。インストール後から積極的に使用しているが、Windwosにはない便利なソフトウェアも多数あることから重宝し始めている。

このまま、将来的にはWindows環境からUbuntu環境に作業環境を移したいと考えている。実際に、本記事の作成はUbuntu環境のgeditをメインに使用して作成をしており、Windowsで実施していた作業は、すべてUbuntuで実施できそうだ。

参考

更新履歴

  • 2020/6/14 新規作成
  • 2023/8/2 Ubuntu 22.04における記述を追記
  • 2023/8/27 時刻同期について自動起動有効化のコマンド追記
2020年6月30日火曜日

Ubuntu 20.04でシステム領域のディスク容量の拡張を行う

Ubuntu 20.04を仮想環境で動かしているのだが、システム領域のディスク容量はデフォルトの16GBで運用していた。しかし、Linuxとはいえ、各種GUIのソフトウェアをインストールすることで、残り容量が心もとなくなってきた。

そこで、ディスク容量を拡張をすることにしたのだが、UbuntuではRHEL系のLinuxとはパーティションの切り方が異なっており、手順にも差異があった。Ubuntuにおけるディスク容量の拡張手順を本記事にて記載することにする。

環境

  • Ubuntu 20.04 LTS

ディスク容量拡張手順

UbuntuはRHEL系のLinuxとは異なり、LVMが使用されていない。以下、dfコマンドの結果となるが、マウントポイント「/」には「/dev/sda5」が直接マウントされていることがわかる(★箇所)。今回は、この領域を16GBから18GBに拡張することにする。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            1.9G     0  1.9G   0% /dev
tmpfs           394M  1.8M  392M   1% /run
/dev/sda5        16G   10G  4.5G  70% /   ★
tmpfs           2.0G  274M  1.7G  14% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/loop1       55M   55M     0 100% /snap/core18/1754
/dev/loop0      243M  243M     0 100% /snap/gnome-3-34-1804/27
/dev/loop2       63M   63M     0 100% /snap/gtk-common-themes/1506
/dev/loop3       50M   50M     0 100% /snap/snap-store/433
/dev/loop4       28M   28M     0 100% /snap/snapd/7264
/dev/sda1       511M  4.0K  511M   1% /boot/efi
tmpfs           394M   36K  394M   1% /run/user/125
tmpfs           394M   48K  394M   1% /run/user/1000

1. 拡張したディスクを認識

仮想ディスクを拡張しても容量を自動認識しなかったため、拡張したディスクをコマンドにて認識させる。コマンド自体はRHEL系のLinuxと同様のコマンドとなるが、Ubuntuでは、原則sudoを使って実行する必要があるため、sudo sh -c <command>といった形で実行する。このように実行しないと、リダイレクトやパイプを含むコマンドが正常に実行できない。

$ sudo sh -c "echo 1 > /sys/class/block/sda/device/rescan"

2. パーティションを拡張

パーティションの拡張はpartedコマンドで行う。

Ubuntu 20.04では、2番目のパーティションが拡張パーティション (extended) となっており、5番目のパーティションが論理パーティション (logical) として作成されている。

$ sudo parted /dev/sda
GNU Parted 3.3
/dev/sda を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) p free                                                           
モデル: VMware Virtual disk (scsi)
ディスク /dev/sda: 19.3GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ: 

番号  開始    終了    サイズ  タイプ    ファイルシステム  フラグ
      1024B   1049kB  1048kB            空き容量
 1    1049kB  538MB   537MB   primary   fat32             boot
      538MB   539MB   1048kB            空き容量
 2    539MB   17.2GB  16.6GB  extended
 5    539MB   17.2GB  16.6GB  logical   ext4
      17.2GB  19.3GB  2149MB            空き容量

まずは、拡張パーティションから拡張する。「使用中です。それでも実行しますか?」というメッセージが表示されるが、パーティションの拡張はオンラインで実行可能であるため、「y」を選択し続行すれば問題ない。

(parted) resizepart 2
警告: パーティション /dev/sda2 は使用中です。それでも実行しますか?
はい(Y)/Yes/いいえ(N)/No? y                                               
終了?  [17.2GB]? 100%
(parted) p free                                                           
モデル: VMware Virtual disk (scsi)
ディスク /dev/sda: 19.3GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ: 

番号  開始    終了    サイズ  タイプ    ファイルシステム  フラグ
      1024B   1049kB  1048kB            空き容量
 1    1049kB  538MB   537MB   primary   fat32             boot
      538MB   539MB   1048kB            空き容量
 2    539MB   19.3GB  18.8GB  extended
 5    539MB   17.2GB  16.6GB  logical   ext4
      17.2GB  19.3GB  2149MB            空き容量

拡張パーティションの容量が拡張された後、論理パーティションを拡張する。

(parted) resizepart 5
警告: パーティション /dev/sda5 は使用中です。それでも実行しますか?
はい(Y)/Yes/いいえ(N)/No? y                                               
終了?  [17.2GB]? 100%                                                     
(parted) p free                                                           
モデル: VMware Virtual disk (scsi)
ディスク /dev/sda: 19.3GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ: 

番号  開始    終了    サイズ  タイプ    ファイルシステム  フラグ
      1024B   1049kB  1048kB            空き容量
 1    1049kB  538MB   537MB   primary   fat32             boot
      538MB   539MB   1048kB            空き容量
 2    539MB   19.3GB  18.8GB  extended
 5    539MB   19.3GB  18.8GB  logical   ext4

以上でパーティション拡張が完了となるので、partedコマンドを終了する。

(parted) q                                                                
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。

3. ファイルシステムを拡張

Ubuntu 20.04のファイルシステムはext4を使用しているので、resize2fsを使って拡張する。拡張する対象は、論理パーティションの「/dev/sda5」となる。

$ sudo resize2fs /dev/sda5
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/sda5 is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/sda5 is now 4587008 (4k) blocks long.

4. 拡張後の確認

最後にdfコマンドで確認すると、★箇所の「/dev/sda5」の容量が16GBから18GBに拡張されていることがわかる。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            1.9G     0  1.9G   0% /dev
tmpfs           394M  1.8M  392M   1% /run
/dev/sda5        18G   10G  6.4G  62% /   ★
tmpfs           2.0G  222M  1.8G  12% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/loop1       55M   55M     0 100% /snap/core18/1754
/dev/loop0      243M  243M     0 100% /snap/gnome-3-34-1804/27
/dev/loop2       63M   63M     0 100% /snap/gtk-common-themes/1506
/dev/loop3       50M   50M     0 100% /snap/snap-store/433
/dev/loop4       28M   28M     0 100% /snap/snapd/7264
/dev/sda1       511M  4.0K  511M   1% /boot/efi
tmpfs           394M   36K  394M   1% /run/user/125
tmpfs           394M   48K  394M   1% /run/user/1000

以上で、Ubuntu 20.04におけるディスク容量の拡張作業は完了となる。

【注意事項】「エラー: 重なりのあるパーティションは持てません。」のエラーについて

拡張パーティションの前に論理パーティションを拡張しようとすると、「エラー: 重なりのあるパーティションは持てません。」と表示され失敗する。手順で説明したとおり、必ず拡張パーティションを拡張してから論理パーティションを拡張するようにしよう。

$ sudo parted /dev//sda
GNU Parted 3.3
/dev/sda を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) p free                                                           
モデル: VMware Virtual disk (scsi)
ディスク /dev/sda: 19.3GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ: 

番号  開始    終了    サイズ  タイプ    ファイルシステム  フラグ
      1024B   1049kB  1048kB            空き容量
 1    1049kB  538MB   537MB   primary   fat32             boot
      538MB   539MB   1048kB            空き容量
 2    539MB   17.2GB  16.6GB  extended
 5    539MB   17.2GB  16.6GB  logical   ext4
      17.2GB  19.3GB  2149MB            空き容量

(parted) resizepart 5                                                     
警告: パーティション /dev/sda5 は使用中です。それでも実行しますか?
はい(Y)/Yes/いいえ(N)/No? y                                               
終了?  [17.2GB]? 100%                                                     
エラー: 重なりのあるパーティションは持てません。
2020年6月21日日曜日

Ubuntu 20.04のGoogle Chromeで、プロキシ経由でインターネット接続できなくなった場合の対処手順

Ubuntuをメインのデスクトップ環境として、日々使うようにしているのだが、ある日突然Google Chromeにプロキシ設定が適用されなくなり、インターネット閲覧ができなくなる事象が発生した。本件の解消方法について、簡単ではあるが記載する。

環境

  • Ubuntu 20.04 LTS

Google Chromeをプロキシ経由で接続できるようにする手順

CLIでGoogle Chromeを起動する際にプロキシ設定を行う

Google Chromeを実行する際に、--proxy-server="<Proxy IP Address>:<Proxy Port>"のオプションを付与することで、プロキシ設定を行った上でGoogle Chromeを起動することができる。

$ /usr/bin/google-chrome-stable --proxy-server="<Proxy IP Address>:<Proxy Port>" &

しかし、毎回ターミナルからコマンドを実行するのも手間がかかるので、次にGUIのアプリケーションメニューからGoogle Chromeを起動する際にプロキシ設定がされるように設定を行う。

GUIのアプリケーションメニューの設定を修正する

Ubuntuのアプリケーションメニューの起動オプションに、CLIで実施したのと同様に--proxy-server="<Proxy IP Address>:<Proxy Port>"オプションを付与することで対処する。しかし、Ubuntuのアプリケーションのメニューは、そのままではGUIで編集することができない(おそらく設定ファイルを直接修正すれば対処できるが未検証)ので、アプリケーションメニューの管理ツールである「メニューエディター (MenuLibre)」をインストールする。

$ sudo apt install menulibre -y

インストール後、アプリケーションメニューに「メニューエディター」が追加されているので選択する。

左メニューの「インターネット」→「Google Chrome」を選択する。

「アクション」ボタンを押すと、「新しいウインドウ」と「新しいシークレット ウインドウ」の2つが設定されているので、それぞれの起動コマンドに、--proxy-server="<Proxy IP Address>:<Proxy Port>"のオプションを追加する。私の環境では以下のように設定した。

  • 新しいウインドウ:/usr/bin/google-chrome-stable --proxy-server="192.168.33.23:8080"
  • 新しいシークレット ウインドウ:/usr/bin/google-chrome-stable --incognito --proxy-server="192.168.33.23:8080"

上記設定を実施したのち、左上の「ランチャーを保存」ボタンを押して設定を保存する。

設定後、メニューからGoogle Chromeを起動すると、問題なくプロキシ経由でインターネット接続できるようになった。

2019年1月5日土曜日

Xubuntu 18.04にxrdpを使ってRDPでリモートデスクトップ接続をする

おおよそ1年前に、Xubuntu 16.04にxrdpをインストールして、リモートデスクトップをするという記事を書いた。

★以前の記事はこちら↓

Xubuntu 16.04にxrdpを使ってRDPでリモートデスクトップ接続をする
https://tech-mmmm.blogspot.com/2017/08/xubuntu-1604xrdprdp.html

ふと、Xubuntu公式サイトを見ると、18.04が2018年4月にリリースされたようなので、16.04をやめて18.04に入れ替えることにした。

結論から言うと、xrdpのバージョンが上がっており、前回必要だった細かな設定変更はすべて不要となっており、使い勝手が向上していた。

xrdpインストール手順

インストールは非常に簡単で、apr-getでインストールするだけである。

# apt-get install xrdp
------------------------------
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  xorgxrdp
提案パッケージ:
  guacamole xrdp-pulseaudio-installer
以下のパッケージが新たにインストールされます:
  xorgxrdp xrdp
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
498 kB のアーカイブを取得する必要があります。
この操作後に追加で 3,303 kB のディスク容量が消費されます。
続行しますか? [Y/n] y   ←★"y"を入力
取得:1 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 xorgxrdp amd64 0.9.5-2 [78.7 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 xrdp amd64 0.9.5-2 [419 kB]
498 kB を 1秒 で取得しました (336 kB/s)

~(中略)~

systemd (237-3ubuntu10.3) のトリガを処理しています ...
man-db (2.8.3-2) のトリガを処理しています ...
xorgxrdp (0.9.5-2) を設定しています ...
libc-bin (2.27-3ubuntu1) のトリガを処理しています ...
ureadahead (0.100.0-20) のトリガを処理しています ...
------------------------------

インストールが完了したら、バージョンを確認してみよう。

# xrdp --version
------------------------------
xrdp: A Remote Desktop Protocol server.
Copyright (C) Jay Sorg 2004-2014
See http://www.xrdp.org for more information.
Version 0.9.5
------------------------------

Xubuntu 16.04のxrdpのバージョンは0.6系だったが、今回は0.9系となっている。以下URLで2019年1月現在のxrdpの最新バージョンを確認すると、0.9.9のようなので、そこそこ新しいものが導入されているようだ。

GitHub - neutrinolabs/xrdp
https://github.com/neutrinolabs/xrdp/releases

使ってみる

早速リモートデスクトップ接続をしてみると、ログイン画面は表示されユーザー名とパスワード入力はできるのだが、ログイン以降の画面が表示されないという事象が発生した。詳細な原因は不明だが、これはxrdpインストール以降一度も再起動をしていないと発生するようだ。一度OSを再起動するとうまく接続できた。


デフォルトで、キーボードのキー配置は英語配列ではなく日本語配列になっている。ターミナルのTAB保管も問題なく利用できる。さらに、クリップボードを利用したコピー&ペーストによるファイル転送もできるようになっており、WindowsでRDPを利用している場合と比較しても遜色がない。

というわけで、xubuntu 16.04の頃よりもxrdpのバージョンが上がっており、簡単にRDPできるようになっていることから、xubuntu 18.04の利用はかなりお勧めとなる。

2017年8月18日金曜日

Xubuntu 16.04にxrdpを使ってRDPでリモートデスクトップ接続をする

LinuxをデスクトップPCとして使いたいと思いXubuntuを使ってみることにした。なぜXubuntuを選択したかというと、Ubuntuの標準デスクトップ環境であるUnityが個人的に使いづらかったというのが理由となる。

Linuxに対してリモートデスクトップ接続する場合は、VNCを使うのが昔は一般的だったが、今ではWindowsのRDP (Remote Desktop Protocol)によるリモートデスクトップ接続も簡単にできるようになったので、その方法を記載する。

xrdpのインストール

apt-getを使ってxrdpをインストールするだけで、簡単にRDPでリモートデスクトップ接続できるLinuxができあがる。

# apt-get install xrdp
------------------------------
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  vnc4server xbase-clients
提案パッケージ:
  vnc-java x11-xfs-utils
以下のパッケージが新たにインストールされます:
  vnc4server xbase-clients xrdp
アップグレード: 0 個、新規インストール: 3 個、削除: 0 個、保留: 3 個。

~(中略)~

xrdp (0.6.1-2) を設定しています ...
systemd (229-4ubuntu19) のトリガを処理しています ...
ureadahead (0.100.0-19) のトリガを処理しています ...
------------------------------

試しに、Windowsマシンから「リモートデスクトップ接続」を使ってXubuntuにRDP接続をしてみる。いつもと違う警告が表示されるものの、特に問題なく接続できた。

ちなみにバージョンを確認すると、0.6系となっており、最新版は0.9系であるため、古いバージョンとなっている。

# xrdp --version
------------------------------
xrdp: A Remote Desktop Protocol server.
Copyright (C) Jay Sorg 2004-2011
See http://xrdp.sourceforge.net for more information.
Version 0.6.1   ←★バージョンが古い
------------------------------

最新版をインストールするには以下URLのスクリプトを使ってコンパイルしてインストールするらしいのだが、コンパイルが途中で失敗するため頓挫した。

・日本xrdpユーザ会 - X11RDP-o-Matic
https://xrdp.vmeta.jp/X11RDP-o-Matic

キーボード配列を日本語配列で認識させる

xrdpでログインして、ターミナルなどを開いて「shift+2」などを押すとわかるが、「"」ではなく「@」と表示されてしまう。これは、キーボード配列を英語配列で認識してしまっていることが原因のようだ。このままでは漢字変換もできない状態となるため、修正を行う。

日本語配列に変更する場合は、まず、以下URLから「km-0411.ini」というファイルをダウンロードする。

・日本xrdpユーザ会 - キー配列について
https://xrdp.vmeta.jp/%E3%82%AD%E3%83%BC%E9%85%8D%E5%88%97%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

ダウンロードしたファイルを/etc/xrdp直下に配置する。

# cd /etc/xrdp
# ls -l
------------------------------
合計 100
-rw-r--r-- 1 xrdp xrdp 8756 10月 26  2014 km-0407.ini
-rw-r--r-- 1 xrdp xrdp 8655 10月 26  2014 km-0409.ini
-rw-r--r-- 1 xrdp xrdp 8744 10月 26  2014 km-040c.ini
-rw-r--r-- 1 xrdp xrdp 8732 10月 26  2014 km-0410.ini
-rw-r--r-- 1 root root 8703  8月 14 15:40 km-0411.ini   ←★これを配置
-rw-r--r-- 1 xrdp xrdp 9169 10月 26  2014 km-0419.ini

~(以下略)~
------------------------------

他ファイルとオーナーを合わせた後、別名でシンボリックリンクを張る。

# cd /etc/xrdp
# chown xrdp:xrdp km-0411.ini
# ln -s km-0411.ini km-e0200411.ini
# ln -s km-0411.ini km-e0010411.ini

最後にxrdpを再起動して反映させれば完了。

# systemctl restart xrdp

ターミナルでTAB補完を使えるようにする

xrdpでログインし、ターミナルを開いてコマンドのTAB補完を試みると、なぜか動作せず、ウィンドウの切り替え動作をしてしまう事象が発生した。

対処方法は、ホームディレクトリ~/.config/xfce4/xfconf/xfce-perchannel-xmlのファイルを以下の通り修正する。

------------------------------
修正前:       <property name="&lt;Super&gt;Tab" type="string" value="switch_window_key"/>
修正後:       <property name="&lt;Super&gt;Tab" type="empty"/>
------------------------------

実際に接続してみる

Windowsのリモートデスクトップ接続を使って、xrdpをインストールしたLinuxのIPアドレスに接続すると、以下のようなログイン画面が表示されるので、ユーザーとパスワードを入力してログインする。


以下の通り、XubuntuのXfceのデスクトップ環境が表示された。


人気の投稿