- 投稿日:2019-10-04T11:04:01+09:00
【Linux】シェルスクリプトについて学んだことを書く
はじめに
シェルスクリプトについて、学んだことを備忘録としてまとめる。
shにするかbashにするか
- shの特徴
- 長い歴史を持つ反面,現在では設計が古い
- 過去のシェルスクリプトの多くがsh向けに書かれている
- Debian系ディストリビューションではshをdashとシェルで実装
- Red Hat系ディストリビューションはshをbashの別名として実装(shとbashに実体はRed Hat系では同じ)
- bashの特徴
- shよりもシェルスクリプトを書く上で便利な機能が用意されている
- 現代のLinuxでは,bashはほぼデフォルトでインストールされている
shよりもbashを検討したほうがいい
理由
- シェルスクリプトの互換性・移植性が高い
→shはすべてのLinuxに存在するが,OSによって実装の差異がある
- 便利な機能が用意されている
→算術計算する際,shでは外部コマンドexprを使用する必要があるが,bashで外部コマンドなしに計算可能(シェル内部の機能なため,動作も高速)
シェルスクリプトの実行形
ファイルの先頭に
#!
で始まる行を追加する必要があるが,これはshebang(シバン,シェバン)と呼ばれるもの.
Linuxカーネルが#!
を確認すると,その後ろのコマンドを実行する.
#!/bin/bash
は「このシェルスクリプトは/bin/bashで動かす」という意味.
シバンを書くことにより,/bin/bash
をコマンドラインに書かなくても,ファイル名を指定することにより,シェルスクリプトを実行できるalias_set.sh#!/bin/bash alias lsalf='ls -alf'$ lsalf #エイリアス未設定 lsalf: コマンドが見つかりません $ source ./alias_set.sh #sourceコマンドでエイリアス設定 $ lsalf arg.sh if-bin.sh getdate.sh homesize.sh tes1.sh . parameters.sh rootls.sh alias_set.sh 2019-10-02 .. $ lsalfsh #エイリアスは未設定 lsalfsh: コマンドが見つかりません $ cat alias_set.sh #lsalfの名前をlsalfshに変更後,catで内容表示 #!/bin/bash alias lsalfsh='ls -lf' #lsalfshに変更 $ ./alias_set.sh #シェルスクリプトを実行 $ lsalfsh #シェルスクリプト終了後もエイリアスは未設定 lsalfsh: コマンドが見つかりませんこれはなぜ起こるのか.
まずsourceコマンドでは,カレントシェルでシェルスクリプトが実行されるため,現在の環境が引き継がれる.
それに対し,ファイル名で実行した場合には,サブシェルでシェルスクリプトが実行されるため,元のシェルとは別物であり,エイリアスの設定は引き継がれない.(環境変数は引き継がれる)
サブシェルとは,現在のシェルから新しく起動される子プロセスのシェルのこと.$ ./rootls.sh root directory 合計 483908 drwxr-xr-x 2 root root 4096 9月 30 11:54 bin drwxr-xr-x 3 root root 4096 9月 30 11:56 boot drwxrwxr-x 2 root root 4096 9月 30 00:24 cdrom drwxr-xr-x 18 root root 4020 9月 30 21:54 dev 略変数名の参照
変数の値を参照するには,変数名の前に
$
を付ける
変数の書き方の注意
- 代入時には$を付けない
- =の前後にはスペースを入れない
- 変数名に利用できる文字はアルファベットと数値とアンスコのみ
- {}を使用して変数名の区切りを明示する
- ex) 変数名(filename)+任意の文字列(str)を連結して標準出力する場合
- ダメな例⇒echo filename_str
- 正しい例⇒echo {filename}_str
クウォーティング
クウォーティングで囲まれた文字列は一つの単語として認識される
''
と""
の違いについて
変数展開が有効かどうか
シングルクォート:$
による変数の展開が行われない
ダブルクォート:$
による変数の展開が行われるコマンド置換
getdate.sh#!/bin/bash filename=$(date '+%Y-%m-%d') touch "$filename"$ ./getdate.sh $ ls -l 合計 16 -rw-r--r-- 1 gyokoyama gyokoyama 0 10月 2 08:00 2019-10-02 -rwxr-xr-x 1 gyokoyama gyokoyama 60 10月 2 07:59 getdate.sh -rwxr-xr-x 1 gyokoyama gyokoyama 32 10月 1 08:03 homesize.sh -rwxr-xr-x 1 gyokoyama gyokoyama 50 10月 1 09:01 rootls.sh -rwxr-xr-x 1 gyokoyama gyokoyama 20 10月 1 08:15 tes1.sh2019-10-02というファイル名が追加されている.
位置パラメータ
parameters.sh#!/bin/bash echo "\$0 = $0" echo "\$1 = $1" echo "\$2 = $2" echo "\$3 = $3" echo "\$4 = $4" echo "\$5 = $5"$ ./parameters.sh aaa bb ccccc $0 = ./parameters.sh $1 = aaa $2 = bb $3 = ccccc $4 = $5 =ワイルドカードの使用
*
:任意の文字列の代わりになる.文字列の長さは0でもよい.
?
:任意の1文字の代わりになる.
[]
:かぎ括弧の中に記述した任意の1文字の代わりになる。連続する文字コードの指定には - 記号が使える。たとえば, [a-c] は [abc] と同じ意味.$ ls 2019-10-02 getdate.sh homesize.sh parameters.sh rootls.sh tes1.sh $ ./parameters.sh * $0 = ./parameters.sh $1 = 2019-10-02 $2 = getdate.sh $3 = homesize.sh $4 = parameters.sh $5 = rootls.sh引数の個数
コマンドライン引数に指定された引数の個数は
$#
という変数で参照できる.
最後の行にecho "\$# = $#"
を追記.paraters.sh#!/bin/bash echo "\$0 = $0" echo "\$1 = $1" echo "\$2 = $2" echo "\$3 = $3" echo "\$4 = $4" echo "\$5 = $5" echo "\$# = $#"$ ./parameters.sh * $0 = ./parameters.sh $1 = 2019-10-02 $2 = getdate.sh $3 = homesize.sh $4 = parameters.sh $5 = rootls.sh $# = 6$./parameters.sh aaa bb c $0 = ./parameters.sh $1 = aaa $2 = bb $3 = c $4 = $5 = $# = 3引数全体の参照
$@
,$*
を使用して,引数を分割せず全て一括りのようにして参照する.arg.sh#!/bin/bash echo "\$@ = $@" echo "\$* = $*"$ ./arg.sh aa bbbb cc $@ = aa bbbb cc $* = aa bbbb cc
$@
,$*
の違い
$@
は位置パラメータがそれぞれ1つずつの文字列として展開される(上記の例では,'aa' 'bbbb' 'cc'として展開)$*
は引数全体が1つの文字列として展開されている(上記の例では,'aa bbbb cc'として展開)if文の制御構造
if-bin.sh#!/bin/bash if [ "$1" = "bin" ]; then echo "ok" else echo "NG" fi$ ./if-bin.sh bin ok $ ./if-bin.sh bash NG記述の注意点
if [ "$1" = "bin" ] then
⇒条件を書いた後に;
を省略するとエラー(then
を改行すればセミコロン不要)
if ["$1" = "bin"]
⇒[]
の前後に半角スペースがないとエラーif文の仕組み
シェルスクリプトでは,if文の後ろに置くのは「コマンド」であって,条件式ではない.
[
は単なる括弧ではなく,bashの組み込みコマンド.
[
コマンドは引数に書かれた条件式を判定し,その条件が正しければ0,そうでなければ0以外を返すコマンド.if文では0か0以外かどうかで真偽を判定
if直後の文は終了ステータスの値で真偽を判定するため,[
コマンド以外でも可能.評価演算子等を組み合わせて活用する.終了ステータス
終了ステータスとはどういうものか.
lsやgrepコマンドなどは,終了時にある整数値を返す.その整数値のことを終了ステータスという.コマンドが正常に終了した場合は0,エラー時は0以外を返す.
exit status = 0
,exit status = 1
とかの整数値が終了ステータスにあたる.
- 投稿日:2019-10-04T11:00:46+09:00
Linux基礎(ShellScript)
シェルスクリプトとは
スクリプト(特定の処理を行うために作成したプログラム)をシェルプログラムで記述したもの。このシェルスクリプトを使用することで一連のコマンドライン作業を自動化することもできる。シェルスクリプトを記述するためには1行目に実行するシェルを宣言する。
#!/bin/bash
実行コマンド(4種類)
# sourceコマンド $ source testing.sh # bashコマンド $ bash testing.sh # コマンドは省略してスクリプトファイルの前に「 . 」と入力してスクリプトを実行することも可能 $ . testing.sh # シェルスクリプトファイルに実行権を与えた場合は、ファイル名を入力するだけで実行可能 $ ./testing.shシェルスクリプトの特殊変数理解
変数名 説明 $0 シェルスクリプトファイル名 $1 1番目の引数 ※2番目の引数の場合は$2とする $$ 現在のシェルのプロセス番号 $# コマンドラインに与えられた引数の数 $? シェルが最後に実行したコマンドの終了ステータス(0=正常終了, 1=異常終了, それ以外はエラー) $@ 全ての引数(区切りはスペース) $* 全ての引数(区切りは環境変数IFSで指定したもの)) ユーザ入力
readコマンド
readコマンドはユーザからの入力値を受け取り、変数に格納してそれを次の処理で使用したい場合に使用するコマンド。
#!/bin/bash echo -n "名前を入力してください。" read yourname echo "${yourname}さん。入力ありがとう。"条件分岐処理
条件分岐が行われる条件式の真偽を判断して結果を返す。
条件式理解
- ファイル/ディレクトリに関する条件式
条件式 実行結果 -d ディレクトリ名 指定したディレクトリがあれば真 -f ファイル名 指定したファイルが通常ファイルであり、存在すれば真 -s ファイル 指定したファイルのサイズが0より大きいファイルであれば真 -L ファイル 指定したファイルがシンボリックリンクであるファイルであれば真 -r ファイル 指定したファイルが存在して、かつ読み込み可能であれば真 -w ファイル 指定したファイルが存在して、かつ書き込み可能であれば真 -x ファイル 指定したファイルが存在して、かつ実行可能であれば真 -e ファイル 指定したファイルがあれば真 ファイル1 -nt ファイル2 指定したファイル1が、指定したファイル2よりも修正時刻が新しければ真 ファイル1 -ot ファイル2 指定したファイル1が、指定したファイル2よりも修正時刻が古ければ真
- 文字列に関する条件式
条件式 実行結果 -n 文字列 文字列の長さが0より大きければ真 -z 文字列 文字列の長さが0であれば真 文字列1 = 文字列2 文字列1と文字列2が等しければ真 文字列1 != 文字列2 文字列1と文字列2が等しくなければ真
- 数値に関する条件式
条件式 実行結果 数値1 -eq 数値2 数値1と数値2が等しければ真 数値1 -ne 数値2 数値1と数値2が等しくなければ真 数値1 -ge 数値2 数値1が数値2以上であれば真 数値1 -gt 数値2 数値1が数値2より大きければ真 数値1 -le 数値2 数値1が数値2以下であれば真 数値1 -lt 数値2 数値1が数値2より小さければ真
- 論理結合に関する条件式
条件式 実行結果 !条件 条件式が偽であれば真 条件1 -a 条件2 条件1と条件2の両方の条件式が真であれば真 条件1 -o 条件2 条件1と条件2のどちらかの条件式が真であれば真 if分岐
コードサンプル
#!/bin/bash read number if [ $number -gt 10 ] then echo "10より大きい" elif [ $number -eq 10 ] then echo "10と等しい" else echo "10より小さい" fi繰り返し処理
for文
繰り返しの処理を実行するためには for 文を使用。指定したリストに沿って処理を繰り返す。
コードサンプル
#!/bin/bash Levels=("Level1" "Level2" "Level3") echo ${Levels[@]} for VAR in ${Levels[@]} do echo LinuC $VAR done#!/bin/bash for NUM in `seq 1 10` do echo LinuC ${NUM} donewhile文
条件文が真である間は、繰り返しの処理を実行するためには while 文を使用。
#!/bin/bash while read LINE do echo "LinuC Level ${LINE}" done < test.txt #リダイレクション < でテキストファイル test.txt からの入力に切り替えています。done < test.txt #により、test.txtファイルの内容を読み込む処理を実行。そのファイル内容はLINE変数に1行 #ごとに読み込まれて格納される。readコマンドで読み込まれるLINE変数が空になるまで「真」と判断 #されて、最終行まで読み込んだ後は「偽」と判断されたwhile文が完了する。繰り返し処理で活用するコマンド
seqコマンド
シェルスクリプトで、数値を1つずつ増加または減少させる処理を行うために利用するコマンド
# seq 開始数値 終了数値 $ seq 1 5 1 2 3 4 5 # seq 終了数値 $ seq 5 1 2 3 4 5
- 投稿日:2019-10-04T10:44:49+09:00
Linux基礎(Shellについて)
シェルとは
コマンドを解釈して実行するプログラムのこと。Linuxシステムの作業は端末で行うがLinuxシステムへのログイン時に端末ごとに入力するコマンドを解釈し、実行するプログラム(シェル)が動作し始める。シェルはいくつかの種類があり、ユーザは好みに応じて実行するシェルを選択できる。
Linuxで利用できるシェルには以下のような種類がある。一般的にはBashが利用される。
シェル プログラム名称 説明 Bシェル sh UNIX V67(1978年リリース)から標準添付されているUNIXの基本的なシェル Cシェル csh C言語スタイルの構文を持ったUNIX系OSの代表的なシェル TCシェル tcsh Cシェルの派生版の中で特にユーザーインターフェイス部分を中心に拡張されたシェル Kシェル ksh Bシェルと上位互換を保ちながら、Cシェルなどから優れた機能を取り込んだシェル Bash bash UNIX系のシェルの一つであり、Linuxで用いられている標準のシェル システムへのログイン直後に起動するシェルは、ログインシェルと呼ばれていて、これはユーザごとに定義できる。ユーザごとのログインシェルは、/etc/passwdファイルに記述されている。以下では、adminというユーザのログインシェルが「bash」であることがわかる。
# ログインシェルの確認 $ more /etc/passwd admin:x:500:500:CentOS-6.4-i386:/home/admin:/bin/bash # 現在ログインしている自身が使用しているシェルは ps $$ コマンドで確認すること $ ps $$ PID TTY STAT TIME COMMAND 17264 pts/1 S 0:00 -bash作業終了を通知しシェルを終了するためにはlogoutコマンドを入力。exitコマンドでもシェルは終了。
コマンドの入力方法
入力キー 説明 Tabキー コマンドやディレクトリ名などをの文字列を補完する Ctrl + A 行の先頭へカーソルを移動する Ctrl + C 実行処理を中断する Ctrl + D カーソル上にある文字列を1文字削除する Ctrl + E 行の最後へカーソルを移動する Ctrl + H カーソルの左側の文字列を1文字削除する Ctrl + L 画面をクリアして、現在の行だけ再表示する Ctrl + Q 画面への出力を再開する Ctrl + S 画面への出力を停止する Ctrl + Z 実行処理を一時停止する シェルがbashである場合、以下の特殊記号(メタキャラクタ)を使用してディレクトリの移動が可能。
メタキャラクタ 説明 . カレントディレクトリを表す .. 一つ前のディレクトリを表す ~ ホームディレクトリを表す メタキャラクタとは
複数のファイルを簡単に指定する際に使用する特殊な記号のこと。メタキャラクタにより個別にファイルを指定することなく複数のファイルを指定できる。メタキャラクタには次の記号がある。
メタキャラクタ 説明 * 任意の0文字以上の文字列
例|111.txt、abc.txtのファイルは「*.txt」と表せれる? 任意の1文字の文字列
例|1.txt、a.txtのファイルは「?.txt」と表せれる[ ] []の任意の1文字の文字列
例|aa.txt、ab.txt、abc.txtのファイルは「[abc].txt」と表せれる{ } カンマで区切られた文字列
例|data1、data2は「data{1,2}」と表せれる
- 投稿日:2019-10-04T07:22:51+09:00
CentOS6 系で squid が利用できる file descriptor の数を増やす方法
CentOS 6 系の場合です。
- 利用可能な file descriptor 数の現在値の確認します。
1-1. システム全体
ulimit -a で open files を確認します。
...(snip)... open files (-n) 1024 ...(snip)...1-2. squid
squid が現在利用可能な file descriptor の数を確認します。
$ squidclient mgr:info | grep 'file descri' Maximum number of file descriptors:1024 Available number of file descriptors:1016 Reserved number of file descriptors: 100以下の方法でも確認できます。
$ less /var/log/squid/cache.log ...(snip)... With 1024 file descriptors available ...(snip)...上記から分かったことなんですが、
デフォルトで squid は、1024 の file descriptor を利用できるようです。では、この数を増やしてみましょう。
一例として、65535 にしてみます。
- squid が利用できる file descriptor の数を増やします。
2-1. /etc/security/limits.conf に以下を追記します。
* - nofile 65535これは、すべてのユーザーの、file descriptor の soft, hard 設定を 65535 にする、です。
ログアウトします。
ulimit -a で open files を確認します。...(snip)... open files (-n) 65535 ...(snip)...ここで、/etc/squid/squid.conf に以下を追加しましょう。
max_filedesc 65535service squid restar
再度、squid が現在利用可能な file descriptor の数を確認します。
$ squidclient mgr:info | grep 'file descri' Maximum number of file descriptors:65535 Available number of file descriptors:65527 Reserved number of file descriptors: 100以下の方法でも確認できますよ。
$ less /var/log/squid/cache.log ...(snip)... With 65535 file descriptors available ...(snip)...それとも、/proc//limits でも確認できます。
利用できる file descriptor の数が増えた。
ここで、疑問なんですけど。。
以下のコマンドを実行して数を確認すると、こんなん出てきます。$ cat /proc/sys/fs/file-max 386196実際は、上記の file-max の値は越えられない、ってことですかね。
65535 なら、十分範囲内ですから、まあいいか。。お腹すいたァ。。
- 投稿日:2019-10-04T03:28:16+09:00
Raspberry Pi Desktop (Buster) を USB フラッシュドライブから起動して使う
はじめに
Raspberry Pi Desktop という Debian をベースにした Linux ディストリビューションがありまして、これはラズベリーパイ財団からリリースされています。
PC および Mac で動作し、Live-DVD を作成したり、仮想マシンで実行したり、HDD へインストールする事も可能です。
この記事は Raspberry Pi Desktop を USB フラッシュドライブ (USB メモリ) にインストールしようというもので、過去に Stretch をインストールした記事の焼き直しです。
セットアップ
必要なもの
作業は Windows 10 上で行うものとします。インストールには 16GB 程の USB フラッシュドライブが必要です。Live-DVD で動作するくらいなので 8GB でも動くとは思いますが、アップデート等を行うとすぐに容量不足になってしまうと思います。
Stretch をインストールした時のものをフォーマットして使います。
ISO イメージのダウンロード
トレントが使えるのならトレントを使った方が早く DL できます。uTorrent Portable とかで DL するのをオススメします。
記事を書いた時点の最新版 ISO のファイル名は 2019-09-25-rpd-x86-buster.iso (Debian Buster) でした。
起動可能な USB フラッシュドライブを作成
Rufus を使ったやり方
- 書き込み先の USB フラッシュドライブ を選択
- Raspberry Pi Desktop の ISO イメージを選択
- [保存領域のサイズ] のスライダーを目一杯右へ。
- [スタート] で書き込む
途中で以下のようなダイアログが出たら [はい] を押して進みます。
フォーマット確認画面も出ます。
※ 永続ストレージ (保存領域) の確保のトコだけは注意が必要です。Etcher を使ったやり方
- Raspberry Pi Desktop の ISO イメージを選択
- 書き込み先の USB フラッシュドライブ を選択
- [Flash!] で書き込む
※ 当方の環境だと Portable 版は DL も起動もやたら時間が掛かりました。実行中なのかわからないくらい待たされたので、タスクマネージャで確認しながらやりました。
その他の方法
その他の方法でイメージを書き込むと永続ストレージが正しく使えず、手動でパーティションを作成/調整する必要が出てくるかもしれません。
起動
UEFI / BIOS で USB フラッシュドライブから起動するように設定しておきます。USB フラッシュドライブを PC や Mac に挿して電源を入れると起動メニューが表示されます。
- Run with persistence: [実行] 永続ストレージを保存に使う
- Run and reset persistence: [実行] 永続ストレージを初期化して保存に使う
- Run without persistence: [実行] 永続ストレージを使わない
- Graphical install: [インストール] グラフィカル
- Install: [インストール] テキストベース
- Install with speech synthesis: [インストール] テキストベース + 音声読み上げ
- Help: [ヘルプ]
〔Enter〕 キーを押すか、そのまま 10 秒待ちましょう。
初回起動時はちょっと時間が掛かります。
Raspberry Pi Desktop が起動しました。設定
Raspberry Pi Desktop の各種設定はアプリケーションメニュー (ラズベリーアイコン) から [Preferences | Raspberry Pi Configuration]([設定 | Raspberry Pi の設定]) で行いますが、初回起動時にも設定画面が出てきます。
国
- Country: Japan
- Language: Japanese
- Timezone: Tokyo
パスワード設定
初期パスワードであるraspberry
でいいのなら空欄のまま [Next] を押します。無線 LAN 設定 (無線 LAN アダプタが有効の場合)
無線 LAN アダプタが有効の場合には追加の設定画面が出てきます。
Wi-Fi ネットワークの選択
接続する Wi-Fi ネットワークを選択します。
この手順をスキップするなら [Skip] を、設定を続けるなら [Next] を押します。Wi-Fi パスワードの入力
Wi-Fi ネットワークへのパスワードを入力します。
この手順をスキップするなら [Skip] を、設定を続けるなら [Next] を押します。ソフトウエアアップデート
この手順をスキップするなら [Skip] を、アップデートを行うなら [Next] を押します。完了
設定を反映するために [Restart] を押して再起動する必要があります。再起動すると...ちゃんと日本語化できました。Live-DVD からの起動とは異なり、ちゃんと設定は (永続ストレージに) 保存されます。
再起動しても日本語化できない場合には永続ストレージが正しく作られていないと思われます。何度やっても設定の保存に失敗する場合は USB フラッシュドライブを初期化してからやり直してみてください。
システムのアップデート
apt-get update
で apt のパッケージリストを更新しておきます。$ sudo apt-get update日本語フォントのインストール
とりあえず noto-cjk / IPA / IPA EX / takao が入っていればいいかと思います。
$ sudo apt-get install fonts-noto-cjk fonts-noto-cjk-extra fonts-ipafont fonts-ipaexfont fonts-takaoUI のフォント変更
デスクトップの何もない所を右クリックし [デスクトップの設定] を選択 (またはアプリケーションメニューから [設定 | Appearance Settings] )。
[System] タブの [Font] を
Noto Sans CJK
に変更 (フォントの種類は任意です)。無線 LAN の国設定 (初回起動時に無線 LAN の設定を行っていない場合)
アプリケーションメニュー (ラズベリーアイコン) から [Preferences | Raspberry Pi Configuration]([設定 | Raspberry Pi の設定])を開き、[ローカライゼーション] タブの [無線 LAN の国設定] を設定します。
- Country: JP Japan
raspi-config
からも設定できます。$ sudo raspi-configChromium (ブラウザ) の日本語化
Chromium を日本語化するには言語パックをインストールします。
$ sudo apt-get install chromium-l10n
検索エンジンがDuckDuckGo
になっているので、
※ 事前に takao フォントがインストールされていないと永続ストレージが壊れるかもしれません。
LibreOffice (Office スイート) の日本語化
LibreOffice を日本語化するには言語パックをインストールします。
$ sudo apt-get install libreoffice-help-jaScratch 2 (プログラミング言語) の日本語化
Scratch 2 を日本語化するには、右上の地球アイコンをクリックし [日本語] または [にほんご] を選びます。
IM (入力メソッド)
IM フレームワーク Fcitx と Google 日本語入力のオープンソース版である Mozc を導入します。
$ sudo apt-get install fcitx-mozc $ sudo reboot念のために再起動しておきます。再起動後は〔半角/全角〕または〔Ctrl〕+〔SPACE〕で IM をオンオフできるようになります。
ハードウェアクロックをローカルタイムに変更
運用的には Windows と Linux のデュアルブートという事になりますが、Raspberry Pi Desktop を終了して Windows を起動すると時刻が 9 時間ズレると思います。これを回避するには、ハードウェアクロックをローカルタイムとして設定します。
$ sudo hwclock --systohc --localtimeWindows 側の設定を変更する方法もあるのですが、Raspberry Pi Desktop が間借りしている状況なので Raspberry Pi Desktop 側で設定変更すべきだと思います。
リモートデスクトップ
Stretch には VNC がありましたが、Buster にはないようなので RDP サーバである xrdp をインストールします。
$ sudo apt-get install xrdpWindows 10 から RDP 接続するとこのようなログイン画面が表示されますので、username / password を入力します。
ログイン後は普通のデスクトップです。
SSH
アプリケーションメニュー (ラズベリーアイコン) から [Preferences | Raspberry Pi Configuration]([設定 | Raspberry Pi の設定])を開き、[インターフェイス] タブで SSH を有効化できます。
raspi-config
からも設定できます。$ sudo raspi-config---------------------------
PuTTY Fatal Error
---------------------------
Disconnected: No supported authentication methods available (server sent: publickey)
---------------------------
OK
---------------------------このようなエラーが出ます。これを回避するには
/etc/ssh/sshd_config
をいじります。$ sudo nano /etc/ssh/sshd_config
PasswordAuthentication
を yes に変更します。PasswordAuthentication yes書き換えたら sshd を再起動します。
$ sudo systemctl restart ssh初期パスワードのままだと、Raspbian 起動時に警告が出るようになります。
ちょっとウザいです。See also:
おわりに
日本語化の設定も Stretch に比べて簡単になっているようですね。
See also:
- 投稿日:2019-10-04T00:41:48+09:00
UbuntuでUnable to locate packageのエラー解決法
ことの発端
dockerのUbuntuコンテナにvim等をインストールしようとしたら、
E: Unable to locate package
と出てきてエラーになったので、解決方法を書きます。作業環境
MacOS dockerコンテナ利用
Ubuntu VERSION 18.04.2
vimさえ入っていない解決方法
aptをアップデートする。以上で解決しました。
# apt updateそして、vimをインストールする
# apt install vim以上で、E: Unable to locate package のエラーが出ないでVimをインストール出来ました。
あとがき
Unable to locate package で検索したら、いくつか同じ解決方法が出てきますね。あと、apt-getは古いらしいので、aptを利用しました。