2022/07/25

Podman

Redhat 8 開始,提供了 podman,取代 docker,podman 是一種 daemonless container engine,使用時,可直接 alias docker=podman 完全取代 docker 的指令。

docker daemon 有個問題,如果 daemon 不存在,所有的 container 都無法運作。且 docker daemon 是所有 container process 的 parent process,所有 docker 的指令,都必須使用有 root 權限的使用者。

podman 直接與 image registry 溝通,而不是透過 daemon process 處理。 buildah 替代 Docker build,而跟 Image Registry 的溝通則被 skopeo取代。跟其他的 container 一樣,podman 是透過 OCI compliant 的 container runtime (runc, crun, runv) 作為 OS 的介面,執行 containers。

安裝

就直接用 dnf 安裝

dnf module install container-tools -y

以下是一些常用的指令

# search httpd image
podman search httpd --filter=is-official

# pull image
podman pull docker.io/library/httpd

# run httpd image
# -d 代表要列印 container ID
# -t 代表要加上 peudo-tty,才能用 interactive shell 執行任意指令
podman run -dt -name httpd1 -p 8080:80/tcp docker.io/library/httpd

# list images
podman images

# list process
podman ps

# start/stop
podman start httpd1
podman stop httpd1

# log
podman logs -l

service

因 podman 沒有 daemon process,故開機啟動時,無法像 docker 一樣,可以在 docker daemon process 啟動時,同時啟動 container。這時候必須要透過 system service 處理系統開機的自動啟動。

vi /etc/systemd/system/httpd1.service

[Unit]
Description=Graphite Docker Container
[Service]
Type=simple
TimeoutStartSec=0
Restart=on-failure
RestartSec=30s
ExecStart=/usr/bin/podman start -a httpd1
SyslogIdentifier=graphite
ExecStop=/usr/bin/podman stop -t 10 httpd1
[Install]
WantedBy=multi-user.target

然後用 systemd 啟動

systemctl daemon-reload

systemctl enable httpd1

systemctl start httpd1

References

Podman 淺談 - 為何你應該選擇 Podman 而不是 Docker? - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天

Podman 初次体验 | Yiran's Blog

Podman 容器设置开机启动 | 码农家园

用systemd设置podman 生成的容器开机自启动_lggirls的博客-CSDN博客_podman systemd启动

2022/07/11

如何建立 CentOS 7 Local Repo

安裝 httpd

yum install httpd

建立 local repo

yum install createrepo yum-utils

mkdir -p /var/www/html/repos/centos/{base,centosplus,extras,updates}

用 reposync 同步 packages

reposync -g -l -d -m --repoid=base --newest-only --download-metadata --download_path=/var/www/html/repos/centos/
reposync -g -l -d -m --repoid=centosplus --newest-only --download-metadata --download_path=/var/www/html/repos/centos/
reposync -g -l -d -m --repoid=extras --newest-only --download-metadata --download_path=/var/www/html/repos/centos/
reposync -g -l -d -m --repoid=updates --newest-only --download-metadata --download_path=/var/www/html/repos/centos/

vi /etc/cron.weekly/update-centos-repo

#!/bin/bash
##specify all local repositories in a single variable
LOCAL_REPOS="base centosplus extras updates epel"
##a loop to update repos one at a time 
for REPO in ${LOCAL_REPOS}; do
    reposync -g -l -d -m --repoid=$REPO --newest-only --download-metadata --download_path=/var/www/html/repos/centos/
    #createrepo -g comps.xml /var/www/html/repos/centos/$REPO/
    createrepo --update /var/www/html/repos/centos/$REPO/
done

啟動 script

chmod 755 /etc/cron.weekly/update-centos-repo

設定 Local Repo

vim /etc/yum.repos.d/local-repos.repo

[local-base]
name=CentOS Base
baseurl=http://repos.server.ip/repos/centos/base/
gpgcheck=0
enabled=1

[local-centosplus]
name=CentOS CentOSPlus
baseurl=http://repos.server.ip/repos/centos/centosplus/
gpgcheck=0
enabled=1

[local-extras]
name=CentOS Extras
baseurl=http://repos.server.ip/repos/centos/extras/
gpgcheck=0
enabled=1

[local-updates]
name=CentOS Updates
baseurl=http://repos.server.ip/repos/centos/updates/
gpgcheck=0
enabled=1

測試

yum repolist

References

How to Setup Local HTTP Yum Repository on CentOS 7

建立 local http yum repository on Centos 7

Setup local YUM/DNF repo server Rocky Linux 8 [Step-by-Step] | GoLinuxCloud

Create a Centos Repository Mirror – UNIX fu

2022/07/04

認知無線電 Cognitive Radio, CR

1999年Joseph Mitola博士提出認知無線電 Cognitive Radio 的概念,最初定義為「一種能感知周圍環境並能適應環境的無線電」,CR具有學習能力,能與周圍環境交換資訊,感知和利用在該空間的可用頻譜,並限制和降低衝突。

認知無線電網路在認知過程中主要完成四個功能:頻譜感知、頻譜管理、頻譜共享和頻譜移動。Mitola的認知無線電是以軟體無線電爲平台,並讓軟體無線電智能化,強調有「學習」能力。

美國 FCC 提出了 CR 的簡化版本,建議任何具有動態根據環境改變發射參數的無線電,都可稱為 CR。無線電裝置能夠自動判斷頻道的狀態,並切換到可用的頻道。

兩個或多個具有認知無線電功能的無線電設備要建立一個通訊通道,必須先有一個同意採用什麼頻率、功率和調變機制的方法。一種技術是使用基地台在參與設備之間傳遞訊息。基地台只用於交換連線資料,然後認知無線電設備切換到協商一致的設定上。

在通話過程中,認知無線電設備必須連續監測通道和其它頻率,因為其它(非認知無線電)授權用戶可能突然啟動通話。他們比認知無線電設備的優先順序高,必須避免有害的干擾。在這種可能發生的情形中,認知無線電的作用是檢測授權用戶,建立並同意另一個閒置頻率,然後中斷當時的連接設定。

應用

  1. WRAN

    目的就是使用CR技術將分配給電視廣播的VHF/UHF頻帶(北美為54~862MHz)的頻率用作寬帶訪問線路,有效利用空閒頻道。IEEE 802.22 於2005年9月完成了對WRAN的功能需求和信道模型文檔,並於2006年3月形成了最終的合併提案作為編寫標準的基礎。

  2. UWB

    UWB技術產生於20世紀60年代,當時主要應用於脈衝雷達(ImpulseRadar),美國軍方利用其進行安全通信中的精確定位和成像。至20世紀90年代之前,UWB主要應用於軍事領域,之後UWB技術開始應用於民用領域。UWB由於具有傳輸速率高、系統容量大、抵抗多徑能力強、功耗低、成本低等優點,被認為是下一代無線通信的革命性技術,而且是未來多媒體寬帶無線通信中最具潛力的技術。

  3. WLAN

    IEEE802.11 標準為基礎的無線技術已經成為WLAN技術的主流,認知無線電技術能通過不斷掃描頻譜段,獲得這些可用頻道的環境和質量的認知資訊,自適應地接入較好的通訊頻道,這正是解決WLAN頻段擁擠問題的方法。

  4. Mesh

    無線Mesh網絡是近年來出現的具有一種無線多跳(Multi-hop)的網絡結構。在Mesh網絡中,每個節點可以和一個或者多個對等節點直接通信;同時也能模擬路由器的功能,從鄰近節點接收消息並進行中繼轉發。Mesh網絡通過鄰近節點之間的低功率傳輸取代了遠距離節點間的大功率傳輸,實現了低成本的通訊。網絡中所有節點之間是相互協作的,如果Mesh網絡中的一條鏈路失效了,網絡可以通過替代鏈路將信息路由到目的地,優化了頻譜的使用。

    認知無線電和無線Mesh結合,是在增大網絡密度和提高服務吞吐量的發展趨勢下提出來的,適用於可能有嚴重的線路競爭情況的人口密集城市的無線寬頻。認知Mesh網絡通過中繼方式可以有效地擴展網路覆蓋範圍,當一個無線Mesh網的骨幹網絡是由認知接入點和固定中繼點組成時,無線Mesh網的覆蓋範圍能夠大大增加。

  5. Ad-Hoc

    一般的 Ad-hoc網絡在發送資料前會先確定路由。認知無線電技術能夠即時收集資訊並向各方通知尚未使用的頻率信息,適用於具有不可提前預測的頻譜使用模式的應用場景。當認知無線電技術應用於低功耗多跳Ad-hoc網絡,能夠滿足分佈式認知用户之間的通信需求。基於認知無線電技術的Ad-hoc網絡需要新的支持分佈式頻率共享的MAC協定和路由協定。

DFS

802.11a工作於5GHz頻帶(在美國為U-NII頻段:5.15-5.25GHz、5.25-5.35GHz、5.725-5.825GHz),它採用OFDM(正交分頻多工)技術。802.11a支援的資料速率最高可達54Mbps。

但在歐洲軍方的雷達系統廣泛運用這一頻率(其中探測隱型飛機的雷達就使用這一頻率)。在歐洲出售的WLAN產品必須具備TPS和DFS這兩個功能,即發射功率控制和動態頻率選擇。TPS是為了防止無線產品發放過大的功率來干擾軍方雷達。DFS是為了使無線產品主動探測軍方使用的頻率,並主動選擇另一個頻率,以避開軍方頻率。通過這種方式,也可以避免其它WLAN干擾。

References