20210909のLinuxに関する記事は9件です。

Gitについてと Cent OS上での基本的な操作について

バージョン管理システムについて 様々なファイルは修正を繰り返したり、また修正前に戻ったりのが当たり前 →ファイルの履歴を管理する必要がある バージョン管理システム →ファイルの変更内容を保存して管理しておくためのツール Git Gitとは バージョン管理システムの1つ 修正前のバージョンに戻ったり、修正後に行けたり、手軽にバックアップを行うことができ、ソースコードの差分を確認することができる。 チーム開発でよく使用される。 Gitのインストール方法(CentOSの場合) 1.sudo yum install git-coreと入力(パスワードを入力する) 2.Is this ok [y/d/N]→yと入力 $sudo yum install git-core --省略-- Is this ok [y/d/N]:y git --versionと入力しインストールが成功したかを確認する $git --version Gitの初期設定 まずは使用するユーザーが誰なのか、その情報をGitに伝えるために名前とメールアドレスの登録を行う必要がある。 $git config --global user.name '<名前>' $git config --global user.email '<メールアドレス>' 必須ではないが見やすくするためにカラー出力の設定をする場合は以下のように行う $git config --global color.ui auto これまで設定した内容の確認はcatコマンドを使用する $cat ~/.gitconfig するとこんな形で表示される(例) $cat ~/.gitconfig [user] name=hoge email=fugafuga@hoge.com [color] ui=auto Gitの基本的な使い方 Gitの基本的なコマンド git init:初期化のためのコマンド、リポジトリを作成する git add:ファイルをバージョン管理の対象にし、リポジトリに履歴として追加するようにする git commit:リポジトリにファイルの変更履歴を追加する(コミットする) git status:ワークツリー(リポジトリの内容をファイルとして展開する場所)の状態を表示する git diff:変更した部分の差分の確認 git log:変更の履歴の確認 コミットについて コミット(リビジョン)とは →ある時点でのプロジェクトの状態のこと コミットする →Gitリポジトリに新しいリビジョンを追加する 実際の作業について ①リポジトリの作成 リポジトリ→Gitがファイルを保存する場所 新しいディレクトリの作成を行う 今回はtestdirという名前で作成 $mkdir -p ~/git/testdir ディレクトリの初期化を行う cdコマンドでtestdirに移動した後、git initコマンドで初期化を行う →.gitというディレクトリが生成される →これがGitリポジトリの実体 $cd ~/git/testdir $git init ls -aコマンドで作成されたかを確認する $ls -a この際に .git という表記があればリポジトリが作成されたとわかる ②バージョン管理するファイルの作成 testdir.shというシェルスクリプト (シェルのコマンドラインをあらかじめ記述しておくファイルのこと)を作成 #ファイルの作成 $touch testdir.sh #数値モードによるパーミッションの設定 $chmod 755 #vimを使って編集 $vim testdir.sh --編集作業-- ③git addコマンドでリポジトリに履歴として追加 履歴として追加する #testdir.shを追加するための指定 $git add testdir.sh ④git commitでリポジトリにファイルの登録 #-m オプションで指定 修正に対するメッセージの入力 $git commit -m ’メッセージの入力①’ リポジトリに新しいプロジェクトの状態が保存された →コミットした ⑤再編集 #vimを使って編集 $vim testdir.sh --編集作業-- ⑥git statusで現在のワークツリーの状態を確認 $git status --中略-- modified: testdir.sh --中略-- ⑤で修正を加えたことでtestdir.shにmodified(変更された)と表示 ⑥git diffで変更前後の差分を確認 $dit diff --変更内容が表示-- もう一度コミットする前に変更内容に誤りがないか確認 ⑦git addコマンドでリポジトリに履歴として再び追加 $git add testdir.sh ⑧git commitで再コミット $git commit -mオプションによるメッセージ入力を行わないと自動的にvimが起動 →vimを使って今回のコミットに対するログメッセージを記入(どのような変更を加えたか) コミットに対するログメッセージの書き方 1行目:変更した内容について 2行目:空行 3行目:変更を行った理由について 記入後 →:wq ⑨git logで変更内容の確認 $git log commit `40文字の文字列(コミットのオブジェクト名)①` Author:<名前><メールアドレス>が表示 Date:日時 ⑧のログメッセージの内容 commit `40文字の文字列(コミットのオブジェクト名)②` Author:<名前><メールアドレス>が表示 Date:日時 ④のメッセージの入力① このような内容が表示される git logをツリー状にする ※git log に --oneline --decorate --graphのオプションを付与することで git logをツリー状に確認することができる $git log --oneline --decorate --graph --git logがツリー状に表示-- 参考 -pオプションでコミットの差分(diff)も表示できる $git log -p オブジェクト名の先頭7文字のコミットを行なった直後の状態→現在のワークツリーまでの差分を表示 $git diff 'オブジェクト名の先頭7文字'
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【自分用メモ】PC への Fedora 34 導入手順

概要 PC を組んで Fedora 34 を入れた。 今後 OS 再インストールしたときに手順を再現できるように、自分用のメモ。 OS インスコ Fedora 34 の iso イメージをダウンロード、USB に焼き、PC にさして USB boot。 インストーラの各設定は以下。 言語 : English -> United States タイムゾーン : Japan Tokyo パーティション : Customize -> Btrfs -> 自動生成 ファイルシステムは悩んだが、Fedora なら Fedora の流儀に従うのが良いと思い、Btrfs を選択。 OS 初回起動時の初期設定 キーボード入力の input source は Japan Anthy。 初期設定 パッケージアプデ 何はともあれ。 $ sudo dnf update パッケージインストール 個人的にほしいやつ。 $ sudo dnf install vim-enhanced tcpdump strace etckeeper etckeeper # cd /etc # etckeeper init # etckeeper commit "input your comment." 日本語入力 input source はデフォルトで入っている Japan Anthy を選んだが、個人的に使いにくいので Mozc へ変更。 以下を参考に。 http://note.kurodigi.com/fedora34-ibus-mozc/ インタフェース名 デフォルトのインタフェース名がイマイチなので変更。 # nmcli c mod Wired\ connection\ 1 connection.id eno1 # systemctl reboot DNS 設定 何が悪いのか、運用しているとルータ(192.168.0.1)が突如 DNS の応答を返さなくなる事象が発生するようになった。 nameserver にパブリックの DNS サーバのアドレスを設定すると回避できる。 # nmcli c mod eno1 ipv4.dns <public dns server> # nmcli c mod eno1 ipv4.ignore-aut-dns yes # nmcli c up eno1 ルータのサポートに問い合わせるにしても、せめてパケットキャプチャを取って事象発生の契機くらいは特定したいところ。 プリンタのドライバ 以下からドライバをダウンロード、インストール。 https://cweb.canon.jp/e-support/software/index.html Linux 向けにもちゃんとドライバが提供されてて嬉しい。Canon さんさすがです。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

パケットの気持ちになってみよう PART3

PART3 パケットを転送してみよう なにやらネットワークを理解するためにパケットの気持ちになって考えるのが流行っているらしいので、実際にやってみたいと思います。PART3ではパケットの転送を行う簡易的な仮想スイッチを用いて、OSの内部でパケットがどのように処理されているかを理解します(できるといいな・・・)。    日経XTECH 『“パケットの気持ち”になってネットワークを理解する』    AWS 『ネットワークの勉強方法を聞いてみた。』 PART1とPART2ではRAWソケットアプリケーションでパケットの送受信する方法およびパケットを解析したり生成したりする方法を説明しました。これらはどちらかいうとサーバやPCなどエンドポイントの機器の動作です。ネットワークはそれらの機器に加え、スイッチやルータなどパケットを中継する機器も動作しています。PART3ではL2スイッチをおこなうカーネルモジュールを例にそれらの機器において行われているパケットの転送処理について学んでいきます。 1 ツールの概要  機能概要: 簡易的なL2スイッチの機能をもつカーネルモジュールおよびその管理コマンドが含みます  動作環境: Linux CentOS8  開発言語: C言語  関連技術: Ethernet, L2スイッチ, デバイスドライバ 1.1 カーネルモジュール(vswitch.ko) vswitch.koはLinuxサーバに搭載された複数のNICをポートとして接続し、ポート間でパケットの転送を行う機能をOSに追加するカーネルモジュールです。最大で24本のNICをポートとして接続し、ポート間でパケットの転送を行います。 1.2 管理コマンド(vswconfig) vswconfigは以下のサブコマンドを持つ管理コマンドです。仮想スイッチの構築や解体に使用します。 サブコマンド 説明 add vswitchにNICを接続します delete vswitchからNICを切断します show 接続中のNICの一覧を表示します。 2 処理概要 2.1 受信ハンドラの登録 vswconfig add コマンドを実行すると vswitch.ko ではカーネル関数 netdev_rx_handler_register() により指定されたNICに対してパケットの受信ハンドラを登録し、NICをプロミスキャスモードに設定します。   vswitch_packet.c: vswitch_rx_handler_register() 2.2 パケットの受信 NICでパケットを受信した場合、2.1で登録した受信ハンドラが呼び出されます。受信ハンドラでは以下の処理を行います。 ・受信パケットの送信元MACアドレスと受信したポートをFDB(Forwarding Database)に設定します。 ・BPDUやLLDP等、転送の必要がないL2の制御用パケットを破棄します。 ・パケットの転送処理を呼び出します。   vswitch_packet.c: vswitch_rx() 2.3 パケットの転送 ・宛先MACアドレスがユニキャストの場合、FDBから転送先のポートを検索します。 ・有効な転送先ポートが見つかった場合、カーネル 関数dev_queue_xmit() により該当ポートからパケットを送信します。  ・転送先ポートが見つからない場合や宛先がマルチキャストアドレスの場合、パケットを受信したポートを除く全てのポートからパケットを送信します。   vswitch_packet.c: vswitch_forward() 3 ツールの実行 3.1 事前準備 本ツールはカーネルモジュールを含みますので不具合が発生した場合、OSがクラッシュする場合があります。検証用のVM等、クラッシュしても差し支えのない環境を用意した上で本ツールをダウンロードしてください。 3.2 カーネルモジュールのビルド vswitch.koをコンパイルして所定の場所に配置します。 $ cd /home/user/Networking/simple_vswitch/src/drv $ make make -C /lib/modules/4.18.0-305.12.1.el8_4.x86_64/build M=/home/user/Networking/simple_vswitch/src/drv modules make[1]: ディレクトリ '/usr/src/kernels/4.18.0-305.12.1.el8_4.x86_64' に入ります CC [M] /home/user/Networking/simple_vswitch/src/drv/vswitch_main.o CC [M] /home/user/Networking/simple_vswitch/src/drv/vswitch_packet.o CC [M] /home/user/Networking/simple_vswitch/src/drv/vswitch_fdb.o LD [M] /home/user/Networking/simple_vswitch/src/drv/vswitch.o Building modules, stage 2. MODPOST 1 modules CC /home/user/Networking/simple_vswitch/src/drv/vswitch.mod.o LD [M] /home/user/Networking/simple_vswitch/src/drv/vswitch.ko make[1]: ディレクトリ '/usr/src/kernels/4.18.0-305.12.1.el8_4.x86_64' から出ます [takahiro@mujina drv]$ make install install -m 0444 vswitch.ko ../../bin/drv $ 3.3 管理コマンドのビルド vswconfigをコンパイルして所定の場所に配置します。 $ cd /home/user/Networking/simple_vswitch/src/cmd $ make /usr/bin/gcc -I ../../src/drv -O -Wall vswconfig.c -o vswconfig $ make install install -m 0555 vswconfig ../../bin/cmd $ 3.4 カーネルモジュールのロード スクリプト Install.sh を実行してカーネルモジュール vswitck.ko をロードします。 $ cd /home/user/Networking/simple_vswitch/test/script $ sudo ./Install.sh vswitch is installed. 3.5 テスト用ネットワークの構築 スクリプト construct-tap-bridge.sh を実行し検証用の veth pair を4組作成し、以下のようなテスト用ネットワークを構築します。 vswitchのポート 通信用NIC 通信用Namespace IPアドレス veth1-vsw veth1    NS1 192.168.100.101 veth2-vsw veth2     NS2 192.168.100.102 veth3-vsw veth3    NS3 192.168.100.103 veth4-vsw veth4    NS4 192.168.100.104 $ cd /home/user/Networking/simple_vswitch/test/script $ sudo ./construct-tap-bridge.sh 103: veth1-vsw@if102: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 72:c8:09:d8:b2:a8 brd ff:ff:ff:ff:ff:ff link-netns NS1 inet6 fe80::70c8:9ff:fed8:b2a8/64 scope link tentative valid_lft forever preferred_lft forever 102: veth1@if103: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 2e:db:1f:fb:38:06 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 192.168.100.101/24 scope global veth1 valid_lft forever preferred_lft forever inet6 fe80::2cdb:1fff:fefb:3806/64 scope link tentative valid_lft forever preferred_lft forever 105: veth2-vsw@if104: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether de:d6:1e:cf:11:1e brd ff:ff:ff:ff:ff:ff link-netns NS2 inet6 fe80::dcd6:1eff:fecf:111e/64 scope link tentative valid_lft forever preferred_lft forever 104: veth2@if105: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 5e:56:40:f5:29:00 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 192.168.100.102/24 scope global veth2 valid_lft forever preferred_lft forever inet6 fe80::5c56:40ff:fef5:2900/64 scope link tentative valid_lft forever preferred_lft forever 107: veth3-vsw@if106: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 36:e4:8d:8a:f3:36 brd ff:ff:ff:ff:ff:ff link-netns NS3 inet6 fe80::34e4:8dff:fe8a:f336/64 scope link tentative valid_lft forever preferred_lft forever 106: veth3@if107: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 8e:e1:19:b5:25:42 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 192.168.100.103/24 scope global veth3 valid_lft forever preferred_lft forever inet6 fe80::8ce1:19ff:feb5:2542/64 scope link tentative valid_lft forever preferred_lft forever 109: veth4-vsw@if108: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 5a:65:18:60:98:72 brd ff:ff:ff:ff:ff:ff link-netns NS4 inet6 fe80::5865:18ff:fe60:9872/64 scope link tentative valid_lft forever preferred_lft forever 108: veth4@if109: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 46:21:74:96:1a:40 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 192.168.100.104/24 scope global veth4 valid_lft forever preferred_lft forever inet6 fe80::4421:74ff:fe96:1a40/64 scope link tentative valid_lft forever preferred_lft forever $ $ sudo ../../bin/cmd/vswconfig show veth1-vsw veth2-vsw veth3-vsw veth4-vsw 3.6 通信の確認 各ネームスペースにおいて、他のネームスペースに対してpingコマンド等を実行し、通信ができることを確認します。通信が疎通しているのであれば switch.koによるパケットの転送が機能していると判断できます。 $ sudo ip netns exec NS1 192.168.100.102 exec of "192.168.100.102" failed: No such file or directory [takahiro@mujina script]$ sudo ip netns exec NS1 ping 192.168.100.102 PING 192.168.100.102 (192.168.100.102) 56(84) bytes of data. 64 bytes from 192.168.100.102: icmp_seq=1 ttl=64 time=0.126 ms 64 bytes from 192.168.100.102: icmp_seq=2 ttl=64 time=0.048 ms 64 bytes from 192.168.100.102: icmp_seq=3 ttl=64 time=0.061 ms ^C --- 192.168.100.102 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2026ms rtt min/avg/max/mdev = 0.048/0.078/0.126/0.034 ms $ $ sudo ip netns exec NS2 ping 192.168.100.103 PING 192.168.100.103 (192.168.100.103) 56(84) bytes of data. 64 bytes from 192.168.100.103: icmp_seq=1 ttl=64 time=0.125 ms 64 bytes from 192.168.100.103: icmp_seq=2 ttl=64 time=0.050 ms 64 bytes from 192.168.100.103: icmp_seq=3 ttl=64 time=0.044 ms ^C --- 192.168.100.103 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2036ms rtt min/avg/max/mdev = 0.044/0.073/0.125/0.036 ms $ $ sudo ip netns exec NS3 ping 192.168.100.104 PING 192.168.100.104 (192.168.100.104) 56(84) bytes of data. 64 bytes from 192.168.100.104: icmp_seq=1 ttl=64 time=0.089 ms 64 bytes from 192.168.100.104: icmp_seq=2 ttl=64 time=0.047 ms 64 bytes from 192.168.100.104: icmp_seq=3 ttl=64 time=0.046 ms ^C --- 192.168.100.104 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2078ms rtt min/avg/max/mdev = 0.046/0.060/0.089/0.021 ms $ $ sudo ip netns exec NS4 ping 192.168.100.101 PING 192.168.100.101 (192.168.100.101) 56(84) bytes of data. 64 bytes from 192.168.100.101: icmp_seq=1 ttl=64 time=0.090 ms 64 bytes from 192.168.100.101: icmp_seq=2 ttl=64 time=0.050 ms 64 bytes from 192.168.100.101: icmp_seq=3 ttl=64 time=0.046 ms ^C --- 192.168.100.101 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2075ms rtt min/avg/max/mdev = 0.046/0.062/0.090/0.019 ms 3.7 テスト用ネットワークの解体 スクリプト destruct-tap-bridge.sh を実行し検証用のネットワークを解体します。 $ cd /home/user/Networking/simple_vswitch/test/script $sudo ./destruct-tap-bridge.sh 3.8 カーネルモジュールのアンロード スクリプト Uninstall.sh を実行してカーネルモジュール vswitck.ko をアンロードします。 $ cd /home/user/Networking/simple_vswitch/test/script $ sudo ./Uninstall.sh vswitch is uninstalled. 4 パケット転送処理のカスタマイズ 本ツールではごく単純なパケット転送処理しか実装していませんが、これにパケットのフィルタリングやカプセル化、暗号化といった処理を追加することで、Linuxベースで様々な仮想的なネットワーク機器を開発することが可能です。我こそはと思う方はぜひ挑戦してみてください。 5 結論: パケットの気持ちになって考えるとは? そもそも、パケットの気持ちになって考えるとはどういうことでしょうか? 私はそのやり方の一つとして、パケットを処理するプログラムを自分で書いてみるのがよいのではないかと思います。突き詰めるとパケットは単なる電気信号のビット列ということになりますが、それらは様々なプロトコルの組み合わせでもあります。実際に手を動かしてイーサネットやIPパケットを解析したり操作したりすることがパケットの気持ちを考えることにつながると思います。 付録A 技術情報 vswitc.koの技術情報を参考として記載します。 A.2 テーブル一覧 vswitch.ko では以下の制御情報によりパケットの転送を処理します。 vswitch.h データ型 説明 pport_t vswitchのポート情報 vswitch_fdb_entry FDBのレコード A.2 関数一覧 vswitch.koは以下の関数により実装されています。これらはカーネルから呼び出されるコールバック関数および、そのサブルーチンです。 vswitch_main.c 関数 説明 vswitch_init モジュールのロード vswitch_exit モジュールのアンロード vswitch_open openシステムコールのコールバック関数 vswitch_close closeシステムコールのコールバック関数 vswitch_ioctl ioctlシステムコールのコールバック関数 vswitch_read readシステムコールのコールバック関数 ioc_add_port ポートの追加 ioc_delete_port ポートの削除 remove_allports 全ポートの削除 ioc_get_ports ポート一覧の取得 find_port_by_name 名前によるポートの検索 find_port_by_dev net_deviceによるポートの検索 vswitch_timer_callback タイマーのコールバック関数 vswitch_netdev_handler net_deviceのイベントハンドラ vswitch_packet.c 関数 説明 vswitch_rx_handler_register パケット受信ハンドラを登録しプロミスキャスモードを設定 vswitch_rx_handler_unregister パケット受信ハンドラの削除しプロミスキャスモードを解除 vswitch_rx パケット受信ハンドラ vswitch_forward パケットの転送 vswitch_fdb.c 関数 説明 vswitch_set_fdb 簡易FDBの設定・アップデート vswitch_search_fdb 簡易FDBの検索 vswitch_countdown_fdb 簡易FDBの有効期限の管理 vswitch_remove_fdb_list 簡易FDBの削除 vswitch_disable_fdb 特定のポートの簡易FDBを無効化
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

博多弁(?)でコマンドの由来まとめ!英語が分かるとプログラミングが優しい言語になる❤

博多弁でプログラミング言語を英語で! コマンド一覧 コマンド 英単語 日本語 ls list リスト見して❤ mv move 動かしとくよ~ cd change directory ディレクトリを変えとってね rm remove ”取り除く”って覚えたけど”消す”かな mkdir make directory ディレクトリ作ってね rmdir remove directory ディレクトリを消しちょくれ chown change owner オーナー変えろー! chmod change mode モード変えるけんね cat concatanate 結合しちゃうよ/// 随時追加していくけんねっ!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux ubuntu20.04 インストール 忘備録

インストーラの言語の選択 選択 今回は「English」 Keyboard configuration キーボードレイアウト 項目 選択 Layout japanese Variant japanese Network connections ネットワークインターフェイス ネットワークインターフェイス ネットワーク機能を利用するために必要な通信装置や、オペレーティングシステム(OS)上での装置の利用設定、装置の機能 利用するPCに搭載された優先LANポートや無線LANポートが一覧で表示される。 NAME(=ネットワークポート名)接続したPCの環境によって変化する 未接続の場合は「not connected」,接続状態の際はDHCPV4欄にIPアドレスが表示される。 Wifi接続する場合は「wl*」のネットワークポート>「EditWiFi」>「choose*network」でネットワークを選択し、パスワードを入力して接続する。 DHCPとは DHCPとは「Dynamic Host Configuration Protocol」の略で、 IPv4ネットワークにおいて (中略) 各種設定に必要な情報を入手して、自動的に設定を行えるようになります。 https://www.nic.ad.jp/ja/basics/terms/dhcp.html Configure proxy /Proxyサーバー設定 項目 選択 Proxy address 今回は変更なし(=空欄のまま) Configure Ubuntu archive mirror /updateやinstallを行う際のサイトを指定 ソフトのupdateやinstallを行う際にダウンロードするサイトを指定します。基本的には近いサイトが自動で選択されますので変更する必要はありません。「Done」を選択してEnterキーを押下します。 https://server-network-note.net/2021/01/ubuntu-20-04-lts-server-install/ 項目 選択 Mirror address 今回は変更なし(=デフォルトのまま) Guided storage configuration 項目 選択 Use an entire disk 今回はこちらを選択 Set up this disk as an LMV group 今回はこちらを選択 Encrpt the LVM group with LUKS 非選択 Use an entire disk 項目 説明 entire 全体 md126 imsm RAID 0 項目 説明 md Mdadm:md (multiple device) administers or manages 126 imsm Intel Intel Matrix Storage Manager は、RAIDシステム(以下、ディスクアレイ)を管理するユーティリティ RAID 0 複数のHDD,SSHにデータを分散して書き込む方式。RAIDは、RAID0~RAID6まである。 partition 1 existing,already formatted as ntfs not mounted 項目 説明 partition HDDやSSDその他メモリスティックなどにもうけることが出来る「しきり」https://eng-entrance.com/linux-partition ntfs 「NT File System」の略https://wa3.i-3-i.info/word13131.html Set up this disk as an LVM group 項目 説明 LVM LVM(logical volume manager)とは、複数のハードディスクやパーティションにまたがった記憶領域をひとつのボリュームグループにまとめ、単一の論理ボリューム(LV)として扱うことのできるディスク管理機能主にLinuxをはじめとしたUNIX系のOSで利用できる機能の1つ。https://www.idcf.jp/words/lvm.html Encrpt the LVM group with LUKS 項目 説明 Encrpt 暗号化 LUKS (Linux Unified Key Setup. ラックス)とは、Linuxに実装するためにClemens Fruhwirthにより作られたディスク暗号化の仕様。https://ja.wikipedia.org/wiki/LUKS Strage configuration ストレージの設定の確認画面になります。設定を確認したら「Done」を選択してEnterキーを押下して下さい。 https://server-network-note.net/2021/01/ubuntu-20-04-lts-server-install/ 英文 日本語訳 選択 Confirm destractive action.Selecting continue below will begin the disks selected to be formatted.You will not be able to return to this or a previous screen once the installation has started.Are you sure you want to continue? 破壊的なアクションを確認します。以下で続行を選択すると、フォーマット対象として選択されたディスクが開始されます。インストールが開始されると、この画面または前の画面に戻ることはできません。続行してもよろしいですか? Continue 参考
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

bootの設定を変更してLinuxのISOイメージDVDを起動

はじめに PCからWindowsを削除し、ubuntu20.04のISOイメージDVDからLinaxをインストールしていきます。 本記事は、主にboot設定に関しての記述をメインにします。 ブート(boot)とは 「PCを立ち上げる」という意味。 BIOSメニューの一種。 BIOS(バイオス)とは Basic Input Output System パソコンの土台部分であるマザーボードに搭載 OSが起動する前のタイミングで、キーボードやマウス、パソコンの頭脳部分であるCPUなどの管理や制御を担う BIOS画面サンプル BIOSのメニュー画面 Main(System Info、CMOS) 日時設定やメモリ情報など基本情報の表示や設定の初期化。 Advanced(Tools、Integrated) システムの詳細設定や接続に関するものの設定が行えます。(CPU、メモリー、IDE、スーパーIO、トラステッド・コンピューティング、USBなど) Security ユーザーおよびスーバーバイザのパスワードを設定 スーバーバイザ:PC管理者や、OSの意 Boot 起動デバイスに関する優先順位を設定 Exit BIOS画面を終了する BIOS画面に入る方法 メーカー 操作 VAIO(SONY) 電源ボタン押下後、F2連打 BootMode Legacy UEFI LegacyよりUEFIの方が新しい。 LinuxのISOイメージDVDを起動 Boot Priority DVDから起動する場合は「External Device」の優先順位を一番上に上げる。 Exit に移動し、変更を保存して終了する。 DVDが立ち上がりインストール画面に遷移する。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

fedora34 (Wayland) で、VMwareの解像度自動調整機能が動作しないとき

自分の備忘録として。 RHEL9.xのベースとなるfedora34を触っていたら、VMwareの解像度自動調整機能が動作しなかったので、その解決策。 sudo cp -p /etc/vmware-tools/tools.conf.example /etc/vmware-tools/tools.conf sudo sed -i -e 's/#enable=true/enable=true/' /etc/vmware-tools/tools.conf sudo systemctl restart vmtoolsd テストした環境 $ uname -a Linux fedora 5.13.13-200.fc34.x86_64 #1 SMP Thu Aug 26 17:06:39 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux $ rpm -qa | grep vm-tools open-vm-tools-11.3.0-1.fc34.x86_64 open-vm-tools-desktop-11.3.0-1.fc34.x86_64
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

自作Cコンパイラからpcreを使ったstring librariesを削除しました。

version 1.2.7リリースです。 ちょっとシンプルにするため削除しました。エディッタのvicoのほうにライブラリを移動しました。 使いたい方はvicoからヘッダーをコピーしてください。 あとはg++に依存してましたがclang++に変えました。 ちょっと考えているのはboehm GC版のコレクションライブラリです。 今日中に入れるかもしれません。 ライブラリはシンプルにしたいというが思いあります
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

教養としての5GC(free5gc+UERANSIMで学ぶ5Gコアネットワーク)その3

前回まではfree5gcをInstallしてコールテストを行い主にRANと5GCの間の通信を見てみました。 今回は5GC内で何が起きているのかを見てみましょう。 1. 5GC内のプロトコル 第2回でも書きましたが5GC内ではHTTP/2が使われています。以下の図の黄色の部分です。 5GC内はSBA(Service Based Architecture)という仕様になっていて、従来のEPCとは違って全NFがフルメッシュで通信できるバス型のアーキテクチャになっています。それぞれのNF間はSBI(Service Based Interface)と呼ばれるAPIを使って通信します。テレコムのコアな世界にもようやくAPIが入って来たかと感慨深いものがあります。。 1.1 プロトコルスタック 5GC内では以下のHTTP/2上のスタックで通信します。Applicationの部分にJSONフォーマットのメッセージを使います。 引用元:3GPP TS29.500 具体的には以下の様に各NFがProducerやCosumerという役割を担い、Cosumer側がProducer側にWebAPIの各種Requestを送信し、各NFのServiceを利用する事になります。 引用元:3GPP TS29.501 2. 5g-trace-visualizer install それでは各NF間の実際のやり取りを見てみましょう。Wirersharkを使ってもHTTP/2通信は見えるのですが、今回は5g-trace-visualizerという便利なpythonツールがあるので、こちらを使ってみましょう。 Install手順は以下のReadmeに書いてある通りでwireshark/tsharkのほかにplantuml.jarという別のjavaのモジュールが必要です。 tsharkのパスだけそのままInstallしただけだとうまく動作しないので以下の様にディレクトリを掘ってそこにtsharkをコピーしました。WiresharkPortableとやらをちゃんとInstallすればよいのかもしれませんが、まぁtsharkをaptで入れているんだしという事で。。 q14537@free5gc:~/free5gc/5g-trace-visualizer$ ls -lR wireshark/ wireshark/: total 4 drwxrwxr-x 3 q14537 q14537 4096 Sep 8 15:36 WiresharkPortable_3.2.3 -rw-rw-r-- 1 q14537 q14537 0 Sep 8 15:35 'WiresharkPortable_x.y.z folders place here' wireshark/WiresharkPortable_3.2.3: total 4 drwxrwxr-x 3 q14537 q14537 4096 Sep 8 15:36 App wireshark/WiresharkPortable_3.2.3/App: total 4 drwxrwxr-x 2 q14537 q14537 4096 Sep 8 15:36 Wireshark wireshark/WiresharkPortable_3.2.3/App/Wireshark: total 312 -rwxr-xr-x 1 q14537 q14537 315560 Sep 8 15:36 tshark 3. pcapファイルの読み込み 無事Installが終われば以下のコマンドで5g-trace-visualizerにキャプチャしたファイルを処理させます。5GC NF達がそれぞれ通信するので、その通信に使用するポート番号を-http2portsオプションで指定してHTTP/2としてデコードさせます。Wiresharkの”...としてデコード”のオプションでHTTP2と指定してあげてもHTTP/2としてデコード出来たりするのですが、出来ないパケットもあったりします。5g-trace-visualizerならポートをちゃんと指定してあげれば綺麗にデコードしくれます。 5g-trace-visualizer$ python3 trace_visualizer.py -wireshark "3.2.3" -http2ports "80,8080,35170,42632,40798,43088,43108,47154,27017,50818,50826,50840,54138,54852,50900,60194" -limit 200 -simple_diagrams True ../5GC_Registration.pcap うまく動作すれば*.svgファイルが生成されます。これをChromeなどのブラウザから開いてあげると以下の様なコールフローが出てきます。 このフローの上の箱たちを見てもらえれば良いと思うのですが、それぞれのNF間で通信がずらーっと出てきます。nnrf-discとか見えているものが各NF達がAPIを通して公開しているサービス名になります。この箱の名前は5g-trace-visualizerがキャプチャファイルの中身から自動で付加してくれる様でとても便利ですね。 各NFで定義されているサービスは以下のサイトで詳細が見えます。 たとえばnnrf-discであれば以下の通りです。 全部を追っていくのはとても大変なのでお任せしますが、前回でもとりあげたPDU Session Establishmentの部分だけ少し詳しく見てみましょう。 4. AMF<->SMF PDU Session Establisment 1.まずNGAPでPDU Session Establishment RequestをAMFが受けます。 29. AMF->NRFにNSSFはどこかを訪ねます。NRFはDNSみたいな役割なので5GC内のサービスを使いたい場合はまず問い合わせが行きます。今回はスライス情報が欲しいのでNSSFのAPIのURL情報を聞きます。 59. AMFはNRFから教えてもらったNSSFのWebAPIにAMF->NSSFにスライスに関する情報を訪ねます。 112. AMF->SMFにこんな加入者からPDU Session確立したい要求を受けたんだけどIPv4アドレスとかアサインしてくれない?とRequestを送っています。 ちなみにWiresharkだと以下の様に見えます。Wiresharkだと必要なパラメータだけ詳細展開できるので、特定の部分だけを見たい場合はWiresharkを使ったほうが見やすいと思います。 以上の様に膨大な情報がやりとりされているので全部を一度に理解する必要はないと思いますが、JSONでテキストなのでデコードしたメッセージを眺めて、このパラメータの意味はなんだろうと調べていくと理解が深まるのではと思います。 5. 最後に 今回はHTTP/2の部分を少し細かく見てみました。3GPPのコールフローと比較しながら一通りすべてのメッセージのパラメータの展開をして見ていくとより良いと思います。 次回はUERANSIMをInstallしてUE+gNodeBとfree5gcをインテグレーションしてみます。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む