- 投稿日:2019-09-27T22:43:56+09:00
Linux基礎(ファイルシステムのマウントとアンマウント)
ファイルシステムのマウント
パーティションにファイルシステムを作成した後、マウントを行う必要がる。このマウントとは、パーティションとあるディレクトリを関連づけること。マウントしたファイルシステムが結合されるディレクトリがマウントポイントと呼ばれる。このマウントにより、そのパーティションにファイルやディレクトリを作成したり、利用することができるようになる。
- ファイルシステムのマウント
恒常的なマウントを行うためには、以下の2つの作業を行う必要がある。
- /etc/fstabファイルの編集
- mountコマンドの実行、または再起動(init6)の実行
※/etc/fstabファイルの編集を行わずにmountコマンドだけを実行した場合、再起動後に無効になる。
/etc/fstabファイル
/etc/fstabファイルの書式は以下の通り。以下の書式例では、①はUUIDとして表示されているが、新たに追加する設定は、以下の書式の記述によりマウントすることは可能。
- /etc/fstabファイルの書式
項番 フィールド 設定内容 ① マウントするデバイスファイル名 マウントするデバイスファイル名またはボリュームラベルを指定 ② マウントポイント マウントポイントとなるディレクトリの絶対パスを指定 ③ ファイルシステムの種類 ①のファイルシステムの指定。下表1を参照 ④ マウントオプション ①のマウントオプション指定。※下表2を参照 ⑤ dump dumpコマンドによるバックアップ対象となるかどうかを指定
0:バックアップする必要がない
1:バックアップする必要がある⑥ fsck システム起動時にfsckコマンドでチェックを行う時の順序を指定
0:fsckコマンドでファイルシステムをチェックしない
1:ルートファイルシステム(/)に指定する数値
2以上:その他のファイルシステムに指定する数値
- 表1- ファイルシステムの種類
ファイルシステム 説明 ext2 Linuxの標準ファイルシステム ext3 ext2の機能拡張版(現在の主流) ext4 ext2の機能拡張版(現在の主流) reiserfs 高速なジャーナリングファイルシステム xfs SGI開発によるジャーナリングファイルシステム jfs IBM開発によるジャーナリングファイルシステム iso9660 CD-ROMのファイルシステム msdos MS-DOSのファイルシステム
- 表2- マウントオプションの種類
オプション 説明 async ファイルシステムの入出力を非同期で実行 auto mount -a コマンドの実行時にマウントする noauto mount -a コマンドの実行にマウントしない defaults デフォルトのオプションを設定(async, auto, dev, exec, nouser, rw, suid) exec バイナリの実行を許可 noexec バイナリの実行を禁止 ro 読み取り専用モードでマウント rw 読み書き可能モードでマウント unhide 隠しファイルも表示 suid SUIDとSGIDの有効化 user 一般ユーザーにマウントを許可する users 一般ユーザーにマウントを許可し、マウントを実行していないユーザーにアンマウントを許可 nouser 一般ユーザーのマウントを許可しない mountコマンド
/etc/fstabファイルの変更を行った後、mountコマンドを実行するか再起動(init 6)する必要がある。
mount [オプション] デバイス名
オプション 説明 -a /etc/fstabファイルに記述されているファイルシステムを全てマウント(noautoは除く) -o マウントオプションの指定 -t ファイルシステム ファイルシステムの種類を指定 # /dev/sda6のファイルシステムを、/home3ディレクトリにマウント $ mount /dev/sda6 /home3現在マウントされているファイルシステムをアンマウントするためには、unmountコマンドを使用する。
unmount [オプション] デバイス名/マウントポイント
オプション 説明 -a /etc/mtabファイルに記述されているファイルシステムを全てアンマウント -t 引数に指定したファイルシステム形式のファイルシステムのみをアンマウント # /dev/sda6がマウントされている/home3ディレクトリをアンマウント $ unmount /dev/sda6 /home3※/etc/mtabファイルはmountコマンドやunmountコマンドがしようしているファイルであり、ユーザーが手動変更できないファイル。
- 投稿日:2019-09-27T22:20:13+09:00
ncコマンドでサービスの接続疎通確認
はじめに
サービスの接続疎通確認はインフラ構築に必須なの作業内容です。
以前はping、telnetなどコマンドを利用しますが、セキュリティ制限など使えない場合があります。
ncコマンドを使うと便利です。
また、サーバのポート状況確認にはssコマンドも便利です。http,httpsの確認はcurl、wgetなどのコマンドでHTMLを見えますので、良いと思います。
その以外はncコマンドで良いと思います。ncとは
ncはNetcatです。
Netcatは、Unix系OSコマンドラインアプリケーションの一つ。TCPやUDPのパケットを読み書きするバックエンドとして機能するツールです。インストール
Ubuntuなどは標準入っていますが、もし入っていない場合はインストール:
Ubuntuの例:
apt -y install netcat
使い方
root@ubuntu:~# nc -help OpenBSD netcat (Debian patchlevel 1.187-1ubuntu0.1) usage: nc [-46CDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl] [-m minttl] [-O length] [-P proxy_username] [-p source_port] [-q seconds] [-s source] [-T keyword] [-V rtable] [-W recvlimit] [-w timeout] [-X proxy_protocol] [-x proxy_address[:port]] [destination] [port] Command Summary: -4 Use IPv4 -6 Use IPv6 -b Allow broadcast -C Send CRLF as line-ending -D Enable the debug socket option -d Detach from stdin -F Pass socket fd -h This help text -I length TCP receive buffer length -i interval Delay interval for lines sent, ports scanned -k Keep inbound sockets open for multiple connects -l Listen mode, for inbound connects -M ttl Outgoing TTL / Hop Limit -m minttl Minimum incoming TTL / Hop Limit -N Shutdown the network socket after EOF on stdin -n Suppress name/port resolutions -O length TCP send buffer length -P proxyuser Username for proxy authentication -p port Specify local port for remote connects -q secs quit after EOF on stdin and delay of secs -r Randomize remote ports -S Enable the TCP MD5 signature option -s source Local source address -T keyword TOS value -t Answer TELNET negotiation -U Use UNIX domain socket -u UDP mode -V rtable Specify alternate routing table -v Verbose -W recvlimit Terminate after receiving a number of packets -w timeout Timeout for connects and final net reads -X proto Proxy protocol: "4", "5" (SOCKS) or "connect" -x addr[:port] Specify proxy address and port -Z DCCP mode -z Zero-I/O mode [used for scanning] Port numbers can be individual or ranges: lo-hi [inclusive]MongoDBの27017ポートを接続できるかのコマンド
失敗例
root@ubuntu:~# nc -v -w 1 172.18.98.153 27017 nc: connect to 172.18.98.153 port 27017 (tcp) failed: Connection refused成功例
root@ubuntu:~# nc -v -w 1 172.18.98.153 27017 Connection to 172.18.98.153 9000 port [tcp/*] succeeded!ファイルの送信、受信
サーバに監視
nc -l 1234 > filename.outクライアントから送付
echo test > test.txt nc -N 172.18.98.1531234 < test.txtサーバ側のfilename.outを見ると、testというデータが受信できました。
サーバにポートの確認
ssコマンド
これでサーバのポート状況を確認できます。ssコマンドは使いやすいですね。
root@ubuntu:~# ss -help Usage: ss [ OPTIONS ] ss [ OPTIONS ] [ FILTER ] -h, --help this message -V, --version output version information -n, --numeric don't resolve service names -r, --resolve resolve host names -a, --all display all sockets -l, --listening display listening sockets -o, --options show timer information -e, --extended show detailed socket information -m, --memory show socket memory usage -p, --processes show process using socket -i, --info show internal TCP information -s, --summary show socket usage summary -b, --bpf show bpf filter socket information -E, --events continually display sockets as they are destroyed -Z, --context display process SELinux security contexts -z, --contexts display process and socket SELinux security contexts -N, --net switch to the specified network namespace name -4, --ipv4 display only IP version 4 sockets -6, --ipv6 display only IP version 6 sockets -0, --packet display PACKET sockets -t, --tcp display only TCP sockets -S, --sctp display only SCTP sockets -u, --udp display only UDP sockets -d, --dccp display only DCCP sockets -w, --raw display only RAW sockets -x, --unix display only Unix domain sockets --vsock display only vsock sockets -f, --family=FAMILY display sockets of type FAMILY FAMILY := {inet|inet6|link|unix|netlink|vsock|help} -K, --kill forcibly close sockets, display what was closed -H, --no-header Suppress header line -A, --query=QUERY, --socket=QUERY QUERY := {all|inet|tcp|udp|raw|unix|unix_dgram|unix_stream|unix_seqpacket|packet|netlink|vsock_stream|vsock_dgram}[,QUERY] -D, --diag=FILE Dump raw information about TCP sockets to FILE -F, --filter=FILE read filter information from FILE FILTER := [ state STATE-FILTER ] [ EXPRESSION ] STATE-FILTER := {all|connected|synchronized|bucket|big|TCP-STATES} TCP-STATES := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|closed|close-wait|last-ack|listening|closing} connected := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing} synchronized := {established|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing} bucket := {syn-recv|time-wait} big := {established|syn-sent|fin-wait-{1,2}|closed|close-wait|last-ack|listening|closing}netstatコマンド(歴史長い)
netstat -antu
-a:現在のすべての接続を表示する
-n:一切の名前解決を行わない
-t:TCPポートを表示する
-u:UDPポートを表示する参考URL:http://manpages.ubuntu.com/manpages/bionic/man1/nc_openbsd.1.html
以上
- 投稿日:2019-09-27T17:23:19+09:00
Linux上で文字バケして指定できないディレクトリを消したい
文字バケして削除できないディレクトリが・・・!
[root@Dev01 xxxx]# ls -la 合計 0 drwxr-xr-x 2 nobody nobody 32 9月 26 23:32 ?? drwxr-xr-x 3 nobody nobody 17 9月 27 15:41 . drwxr-xr-x 3 nobody nobody 20 9月 27 15:41 .. [root@mobileDev01 mission]# rm -r ?? rm: cannot lstat `??': そのようなファイルやディレクトリはありませんノード番号を調べる
[root@mobileDev01 mission]# ls -i 978522588 ??ノード番号を使ってファイルを削除する
find . -inum 978522588 -exec rm -rf {} \;
- 投稿日:2019-09-27T09:28:25+09:00
Linuxでプロンプトの色を変更する方法(個人メモ)
プロンプトの色を変更する
- いろんな環境のターミナルを開いてる場合(それが良くないっていう指摘もありそうだけど),違う環境を操作しないようにターミナルに色を付けたい.
- 以下を ~/.bashrc に記載する(CentOSの場合で,他のOSは不明).
PS1_COLOR_BEGIN="\[\e[1;36m\]" PS1_COLOR_END="\[\e[m\]" export PS1="${PS1_COLOR_BEGIN}[\u@\h \W]\\$ ${PS1_COLOR_END}"
- 簡単に言うと,ここから xxx色です,という指定を入れる,という記述.実際にコマンドを入力する際は白にしたかったので,ENDを入れている.
- どういう指定が可能かは未確認.
- 投稿日:2019-09-27T08:50:50+09:00
--(double dash)
Linuxのコンソールコマンドで、--以降はオプションと見做すなという指示を送る仕組み。
例えば、-fileという名前のファイルを削除したい時
// -fileがオプションとみなされてエラーとなる。 $ rm -file rm: 無効なオプション -- 'l' // --により-fileを文字列とみなせるようになる。 $ rm -- -filegrepで-vというキーワードを検索したい時
$ cat file string -v $ grep string file string // -vはnot検索を行うためのgrepのオプション $ grep -v string file -v $ grep -v file (-vという文字列を検索できない) $ grep -- -v file -v
- 投稿日:2019-09-27T02:00:56+09:00
NanoPi Fire3 のkernelをBuildする
はじめに
一般にLinux Kernel Buildは一仕事です。
訳あってNanoPi Fire3-LTSの独自カーネルを作りましたので、ここにまとめます。摘要
通常,Linux Kernel Build是一项工作。
我翻译了NanoPi Fire3-LTS的原始内核,所以这里是一个总结。資料を読む
まずこれをしっかり読んでください。
Kernel Sourceを入手する
資料を読んだ方は分かってますね。
kernel.org の生のSource ではダメですgit clone https://github.com/friendlyarm/linux.git -b nanopi2-v4.4.y --depth 1gitでfriendlyarmの特製パッチが当たったものを入手してください。
時計を合わせる
makeを使う前には時計を合わせましょう。
ntpdate ntp.jst.mfeed.ad.jpBuild環境を整える
ここでは調達したNanoPi Fire3しかLinuxを持っていないという前提で行きます。もちろんx86_64のLinuxを持っていればクロスコンパイル環境を作りそちらでBuildすることは可能です、というかソースコードはそういう前提で作られています。
cd /usr/bin ln -s gcc aarch64-linux-gcc ln -s ld aarch64-linux-ld ln -s nm aarch64-linux-nm ln -s ar aarch64-linux-ar ln -s objcopy aarc64-linux-objcopyお分かりでしょう。
クロスコンパイラーの代わりにレジデントコンパイラーを充ててしまいます。.config を作る
普通動いているkernelの/bootにbuildしたときのconfigが残してありこれを改造して独自カーネルを作りますが、fire3にはありませんし、kernel自身からconfigを取り出せるようにもなっていません。素から作っては見たものの案の定走りません。.configは自動生成されるのです。
touch .scmversion make nanopi3_linux_defconfig
Kernel Huck する
作業に自信がある方はこの工程でconfigをいじり、ドライバーを整理します。
慎重な方はここはいじらず最後まで推奨カーネルが動くことを検査してから、2度目に行うが良いでしょう。apt install ncurses-dev make manuconfig
たくさんの項目があります。
肝心なものを削ると、立ち上がらなくなります。build
make -k -j4数時間かかります。-j8を指定したいところですが、memory不足でかえって遅くなるようです。
寝る前に仕掛けてさっさと寝ましょう。
起きたらエラーが出てました。
こういう時にmake -k を指定するとエラーが影響しないところは先に進めてくれます。
/usr/src/linux/arch/arm64/include/asm/vdso.h
です。
42行目に
#define vdso_offset_sigtamp 0x06c0
を書き加えたらおとなしくなりました。
まあ、この程度は気のせいでしょう (^^;backupする
ここでおもむろにSDをバックアップします。
SDをreaderに挿します。ddrescue -f /dev/mmcblk0 /dev/sda
backupのSDを抜き、安全なところに保管してから、
mount /dev/mmcblk0p1 /boot make install reboot
どうでしょう?上がりますか?