- 投稿日:2020-05-16T22:31:42+09:00
Vimライトユーザーのための「Vim以外でVimする」
この記事を見たらできるようになること
- たぶんLinux全般
- どんなアプリケーション上でも、変換キー(任意のキーに変更可能)を押している間、Vimのノーマルモードを擬似的に再現できるようになる
- Vimだとホームポジションから遠いキーバインドはEmacsのものを採用しています
この記事の対象者
中途半端にVimの世界に足を踏み入れてしまい、以下のような状況の方
- Vimのキーバインドがないとイライラしちゃう
- でも、常にVimを起動させておいて、Vimで書いて他のアプリにヤンクする、というほどの中毒者ではない
- Vimで開発環境を完璧にするのも面倒でついついIDEを使っちゃう
- vscodeでvimバインドを使うと、vscode本体のキーバインドと食い合ってムキーってなっちゃう
とりあえずやってみたい人のための奴
①このレポジトリを適当な場所にクローンする
【迷ったらこれ】
ターミナル上で以下を入力$ cd && git clone https://github.com/mojamozya/allapps-vimlike.git②bashrcとかに以下を追記
【迷ったらこれ】
$ echo 'xkbcomp -I$HOME/allapps-vimlike/.xkb ~/allapps-vimlike/.xkb/keymap/mykbd $DISPLAY 2> /dev/null' >> ~/.bashrcとりあえずこれでレポジトリのSimply mapped (Mapped with XKB)って書いてる奴はできるようになるよ
起動時にターミナル立ち上げる設定にしてない人は、起動させる度にターミナル立ち上げてください
③Autokeyをインストールする
$ sudo apt install autokey-gtkGnomeじゃない人はautokey-qtとかかも、しらんけど
④autokeyの画面を開く
$ autokey
⑤ダウンロードしたレポジトリをAutokeyで有効にする
Autokeyの仕様上、ここがちょっとややこしいです。
とりあえずautokeyにデフォルトで入っているフォルダとかフレーズとかは全部削除しちゃって構いません。Autokeyの画面にて、メニューバーの
File
->New
->Folder
を選んだ後、
Use Default
を選択し、general
というフォルダをデフォルトの場所に作ってください。
~/.config/autokey/dataにgeneralというフォルダができている筈なので、
そこにallapps-vimlike/.autokey/general/vimlike
のシンボリックリンクを作ります。【迷ったらこれ】
Autokeyの画面から上述の通りにgeneral
というフォルダをデフォルトの場所に作ったあと、$ ln -s ~/allapps-vimlike/.autokey/general/vimlike ~/.config/autokey/data/general⑥動作チェックして問題なければ、autokeyを起動時に立ち上がるようにする
ubuntuとかならsessionに追加すればいいだけですが、
他のディストリビューションの人は自分で調べてみてください。bashrcに
autokey
とか追加してもいいかもしれませんが、
ターミナルが立ち上がる度にautokeyが再起動されるのは、ちょっとダルいかも使い方
- Autokeyを起動させた状態
- xkbcompでxkbの設定ファイルを読み込んだ後
なら使えます。
変換キーがをHyperキーにマッピングしているので、
キーマッピングはHyper = 変換 と読んでください。変換キー以外をHyperにする方法はまあたぶんxkbまわりのソースの雰囲気見れば分かるよ。
需要があれば具体的な方法も書きますが地味に面倒なので割愛します。キーマップ紹介と補足
(単純なキーマップはレポジトリにも書いてあります)
シンプルなやつ
Vimと同じくカーソルはhjklです。
つまり変換キーとhjklを同時に押せば、それぞれカーソルキーになります。Escは
Ctrl+[
と、小指が届かなかったとき対策のCtrl+@
にも振っています。
(僕はよく[と@を押し間違えます)ポイントとしては、
;
と:
にそれぞれBackSpaceとDeleteを振っているところでしょうか。
元来のVimほど削除の小回りが聞くわけではないので、
;を押すことで削除をすることによって、Vimっぽくはないものの普通に便利なショートカットにしています。
(ただ小指で;を連打すると疲れるので、iあたりをBackSpaceにするのもいいかもしれませんね。):はまあそのノリで、「Backspaceの右側を押したら、カーソルの右側が消えるよ」という感覚でしょうか。
Vimな気分が強いときはxを押します。どっちでもいいと思います。a と e をEmacs風のキーバインドにしているのも特徴です。
変換キーと同時押しする都合上、
^を押すときにも多少のストレスがかかり、
Shift + $ を押すときには、
喫煙者が3時間タバコを吸えていないときぐらいストレスがかかります。なので、ここにはEmacのキーバインドを採用してみました。
* aはアルファベットの先頭だから行頭、
* eはend of line のe
とでも覚えてみるのもいいかもしれませんね。
Pushed keys Mapped Keys Like Usage Hyper + h ← Vim Cursor key Hyper + j ↓ Vim Cursor key Hyper + k ↑ Vim Cursor key Hyper + l → Vim Cursor key Hyper + ; BackSpace Original Backspace Hyper + x BackSpace Original Backspace Hyper + : Delete Original Delete Hyper + a Home Emacs Move cursor to the head of line Hyper + e End Emacs Move cursor to the end of line Hyper + m Enter Emacs Enter key Hyper + Ctrl + [ Esc Vim Esc (Mapped with AutoKey) Hyper + Ctrl + @ Esc Vim Esc (Mapped with AutoKey) カーソルをマクロっぽい感じで動かすやつ
ここからはちょっとだけ複雑なことをしています。
{Ctrl + カーソルキーでなんかいい感じにカーソルを移動させてくれるのって、
e
IMEの機能?OSの機能?
そんなことは知りませんが、ちょっとだけVimのとか
b`っぽい挙動になってくれるのです。でも
e
をEmacsバインドで使っちゃってるので、
挙動がe
に似ているw
にCtrl + →
を割り当ててみました。
Ctrl + →
はどっちかというとe
に近いんだけどね。
でも所詮e
とも細かいところは違うから、どっちだっていいや。同様に
b
にCtrl + ←
を割り当てています。あとは、
o
とかね。
Endキーで行末に移動してからEnterキーを押すマクロを設定することで、
擬似的にVimのo
を再現しています。
Shift + o
の再現の仕方は難しい。
IDEのインデントをいい感じにしたいならこのまま。
一番上の行にいるときにも作動させたいなら、Home -> Enter -> ↑
かな?
Pushed keys Mapped Keys Like Usage Hyper + Shift + b Ctrl + ← Vim Move cursor to the head of word Hyper + Shift + w Ctrl + Shift + → Vim Secelt the range from current cursor to the head of word Hyper + w Ctrl + → Vim Move cursor to the end of word Hyper + Shift + w Ctrl + Shift + → Vim Secelt the range from current cursor to the end of word Hyper + o End -> Enter Vim Make a line below current cursor Hyper + Shift + o ↑ -> End -> Enter Vim Make a line above current cursor Shortcut (Mapped with Autokey)
あとはショートカットですね。
個人的には、Ctrl + x
とCtrl + c
とCtrl + v
が隣にあるのが
とても気に食わないんですよね。
コピーしようと思ったらペーストしてもうたやんけ!しばくぞ!
とよくなっちゃいます。
ということで、dやらyやらpやらに振っています。
dd
やyy
は再現するのが難しかったので、Shift + d
とShift + y
だけ再現しました。
(Shift + y
は標準にはなかったっけ?勝手に.vimrcに追加してるだけかも)そうすると、aで行頭に戻ってShift + d (y)で削除(ヤンク)できるのでまあいいかと。
EmacsでいうCtrl + a -> Ctrl + k
的な? Emacs詳しくないから知らんけど。あと
Ctrl + z
は押すときに指が窮屈になるので好きくありません。
Ctrl + Shift + z
でRedoも、押し間違えのリスクがあって好きくありません。
なのでu
とCtrl * r
で再現しました。
Pushed keys Mapped Keys Like Usage Hyper + u Ctrl + z Vim Undo Hyper + Ctrl + r Ctrl + Shift + z Vim Redo Hyper + y Ctrl + c Vim Copy Hyper + Shift + y Ctrl + End -> Ctrl + c -> → Vim Copy the range from current cursor to the end of line Hyper + d Ctrl + x Vim Cut Hyper + Shift + d Ctrl + Shift + End -> Ctrl + x Vim Cut the range from current cursor to the end of line Hyper + p Ctrl + v Vim Paste vscode使いへ
vscodeで使うときはKeyboard: Dispatchを
keyCode
にするといいと思うよ
こうするとvscodeの一部のショートカットの挙動がびみょくなるかもだから、
そのときはvscodeのkeyboard shortcutsをいじったら治るよその他
パソコンが物故割れても責任は取れませんTT
なにか質問があればどうぞ。
- 投稿日:2020-05-16T22:16:52+09:00
vlocks for Bare-Metal Mutual Exclusion(1/2)
https://www.kernel.org/doc/html/latest/arm/vlocks.html
vlocks for Bare-Metal Mutual Exclusion
Voting Locks, or “vlocks” provide a simple low-level mutual exclusion mechanism, with reasonable but minimal requirements on the memory system.
Voting Locks あるいは "vlock" は、シンプルで低レベルのmutal exclusion mechanismを実現するものである。これは、メモリシステムへの最小の要求だけが必要とされる、リーズナブルです。
These are intended to be used to coordinate critical activity among CPUs which are otherwise non-coherent, in situations where the hardware provides no other mechanism to support this and ordinary spinlocks cannot be used.
これは、一貫性の無いCPU間でのクリティカルなアクティビティの調整に利用する事を目的としています。ハードウェアがこれをサポートする他のメカニズムを提供せず、通常のスピンロックが利用できない状況で利用できます。
vlocks make use of the atomicity provided by the memory system for writes to a single memory location. To arbitrate, every CPU “votes for itself”, by storing a unique number to a common memory location. The final value seen in that memory location when all the votes have been cast identifies the winner.
vlockは、メモリシステムによって提供される原子性(atomicity)を利用して、single memory locationへ書き込みします。調停するために、全てのCPUでは"自分に投票し"、共有メモリ市にユニークな数値を書き込みます。すべての投票が行われたとき、memory locationに表示される最終の値によって、勝者が識別されます。
In order to make sure that the election produces an unambiguous result in finite time, a CPU will only enter the election in the first place if no winner has been chosen and the election does not appear to have started yet.
投票が有限の時間で、確実に結果を生み出すために、勝者が決定されておらず、投票がまだ始まっていない場合のみ、CPUは投票を行います。
Algorithm
The easiest way to explain the vlocks algorithm is with some pseudo-code:
vlock algorithmを例示する簡単な方法は、疑似コードを利用する事である。
int currently_voting[NR_CPUS] = { 0, }; int last_vote = -1; /* no votes yet */ bool vlock_trylock(int this_cpu) { /* signal our desire to vote */ /* 投票をしたい気持ちをsignalする */ currently_voting[this_cpu] = 1; if (last_vote != -1) { /* someone already volunteered himself */ /* 誰かすでに志願している */ currently_voting[this_cpu] = 0; return false; /* not ourself */ /* それは自分ではない */ } /* let's suggest ourself */ /* 自分自身を提案する */ last_vote = this_cpu; currently_voting[this_cpu] = 0; /* then wait until everyone else is done voting */ /* それ以外の全員が投票を完了するまで待機 */ for_each_cpu(i) { while (currently_voting[i] != 0) /* wait */; } /* result */ /* 結果 */ if (last_vote == this_cpu) return true; /* we won */ /* 勝利 */ return false; } bool vlock_unlock(void) { last_vote = -1; }The currently_voting[] array provides a way for the CPUs to determine whether an election is in progress, and plays a role analogous to the “entering” array in Lamport’s bakery algorithm [1].
current_voting []配列は、CPUが投票が進行中であるかどうかを判断する方法を提供し、Lamportのbakery algorithm の「entering」配列と同様の役割を果たします[1]。
However, once the election has started, the underlying memory system atomicity is used to pick the winner. This avoids the need for a static priority rule to act as a tie-breaker, or any counters which could overflow.
しkし、一度投票が開始すると、根底にあるメモリシステムの原始性を用いて、勝者の選出に使われます。これにより、tie-breakerとして機能する静的優先順位のルール、あるいは、オーバーフローする可能性のあるカウンターが必要なくなります。
As long as the last_vote variable is globally visible to all CPUs, it will contain only one value that won’t change once every CPU has cleared its currently_voting flag.
last_vote変数がすべてのCPUにglobalに可視である限り、すべてのCPUがcurrent_voting flagをクリアするまで変更されない1つの値のみが含まれます。
Features and limitations
・vlocks are not intended to be fair. In the contended case, it is the last CPU which attempts to get the lock which will be most likely to win.
vlocks are therefore best suited to situations where it is necessary to pick a unique winner, but it does not matter which CPU actually wins.
- vlockは平等であるように糸されていません。競合するケースでは、"最後の"CPUが、ロックを取得しようとする中で最も勝つ可能性が高くなります。しかたがって、vlockは唯一の勝者を決定する必要がある状況には最も適していますが、実際にどのCPUが勝者となるのかは気にしていません。
・Like other similar mechanisms, vlocks will not scale well to a large number of CPUs.
vlocks can be cascaded in a voting hierarchy to permit better scaling if necessary, as in the following hypothetical example for 4096 CPUs:
vlocksは、必要に応じてより良いscalingするために、投票階層をカスケード接続できます。例えば、4096 CPUを潜在的に有するようなケース。
もともと、Linux Kernelのソースコードの一部なので、GPLv2扱いになる(はずの認識)。
https://www.kernel.org/doc/html/latest/index.html
Licensing documentation
The following describes the license of the Linux kernel source code (GPLv2), how to properly mark the license of individual files in the source tree, as well as links to the full license text.
https://www.kernel.org/doc/html/latest/process/license-rules.html#kernel-licensing
- 投稿日:2020-05-16T17:27:57+09:00
eclipse.iniに-vmを指定する方法
Eclipseを実行するJVMをeclipse.iniに
-vm
オプションで指定する。
が、CentOSでOpenJDK11のjavaw.exe
がなかった、ので調べてみた。
- 参考 : Eclipse を起動する Java VM を指定する :Tips & FAQ | arbk-works Blog
- 凡例 :
JAVA_HOME
: javaのインストールディレクトリ実行ファイルのパスを指定する方法
これまでこの方法でしか指定したことがなかった、しかも
javaw
がWindows用って知らなかった。javawはどうもWindowsのために用意されたコマンドみたいですね。Windows環境向けの記事でjavaw.exeを使う解説があった場合、Linux/Mac環境では素直にjavaコマンドに置き換えましょう。
Linux/Mac に javaw コマンドがない…だと…; Windowsの場合 -vm JAVA_HOME¥bin¥javaw.exe ; Linuxの場合(CentOS) -vm JAVA_HOME/bin/javaディレクトリパスを指定する方法
; Windowsの場合 -vm JAVA_HOME\bin ; Linuxの場合(CentOS) -vm JAVA_HOME/bin共有ライブラリのパスを指定する方法
Java11より前だと若干パスが違うようだ。
OpenJDK 11 - Change inlibjvm.so
default location ? · Issue #137 · LeeKamentsky/python-javabridge; Windowsの場合 -vm JAVA_HOME\bin\client\jvm.dll ; または JAVA_HOME\bin\server\jvm.dll ; Linuxの場合(CentOS) -vm JAVA_HOME/bin/libjvm.so ; または JAVA_HOME/lib/server/libjvm.so
- 投稿日:2020-05-16T15:39:35+09:00
dotenvって何?
これ何
機密情報を扱う時にどうするんだっけ?みたいなのをまとめる。
まとめ
- 機密情報はそのままコードに保存しちゃダメ
.env
にまとめるがgitに保存する場合は機密情報を除いて.env.sample
にすることが多い- 多くの言語で
.env
を扱うパッケージが存在するenvファイルとは
アプリケーションの中で「DBの情報」や「サーバーの情報」「外部APIの連携情報」など第三者に見せたくない機密情報が存在する。機密情報は、コードとは別に環境変数として情報を保存する。
ローカルでは、複数プロジェクトが存在し、プロジェクトごとに異なる環境変数を取り扱いたい。また、新しく加わるメンバーのためにも環境変数の設定ファイルをまとめておきたい。
そのため、
.envファイル
として、機密情報をまとめたファイルを作成し、情報を管理する。
.envファイル
はgitにそのまま載せると機密情報がgitに乗ってしまうため、.gitignore
に.envファイル
を追加し、.env.sample
というサンプルのファイルを置くことが多い環境変数について
環境変数の追加・閲覧・削除の方法を簡単にまとめる。
# 環境変数の設定 $ export GERU="mew" # GERUという名前の環境変数に「mew」という値を入れる # 環境変数の確認 $ echo $GERU # GERUという名前の環境変数の中身を見る mew # 設定されている環境変数の確認 $ printenv # 設定されている環境変数を全て確認する ... GERU=mew ... # 設定されている環境変数を削除する $ unset GERU # 設定されている環境変数の削除 $ echo $GERU # 設定が削除されたので、出力しても表示されない.envについて
いろんな言語で.envで環境変数を取り扱うパッケージが開発され、利用されています。
Ruby[dotenv]
Javascript[dotenv]
Python[python-dotenv]
まとめ
- 機密情報はそのままコードに保存しちゃダメ
.env
にまとめるがgitに保存する場合は機密情報を除いて.env.sample
にすることが多い- 多くの言語で
.env
を扱うパッケージが存在する参考文献
- 投稿日:2020-05-16T15:34:21+09:00
ネットワーク(主にLinux)メモ
ネットワークに関してLinux(ubuntu18.04)で勉強した際に、わからなかった箇所を備忘録
としてここに残しておきます。netns(network namespace)
PC常に独立したネットワークを構築できる
例: sudo ip netns add helloworld でhellowroldというネットワークを作る
- sudo ip netns exec helloworld bash でhelloworld上でbashを起動。exitでぬける
- sudo ip netns delete helloworldでhelloworldを削除。
network namespace同士をつなげるには以下のようにvethを使う
- 例: sudo ip link add ns1-veth0 type veth peer name ns2-veth0 (ns1とns2をつなぐ)
- 加えて
- sudo ip link set ns1-veth0 netns ns1
- sudo ip link set ns2-veth0 netns ns2
をつけることでnetwork namespaceに追加できる ただし、これではip addressがないので以下のようにつける- sudo ip netns exec ns1 ip address add 192.0.2.1/24 dev ns1-veth0
- sudo ip netns exec ns2 ip address add 192.0.2.2/24 dev ns2-veth0
また、ネットワークのステートをdownからupにする必要もあるため、以下のように行う
- sudo ip netns exec ns1 ip link set ns1-veth0 up
- sudo ip netns exec ns2 ip link set ns2-veth0 up同一ネットワーク以外の場所へ通信する際は、デフォルトルートを設定する
- ルータへのルートをデフォルトルートとすることで、ルーティングテーブルにないipアドレスへのリクエストをルータへ送ることができる
- それでもできない場合は以下の設定が足りない
- sudo ip netns exec (ルータ名) sysctl net.ipv4.ip_forward=1
これはipv4のルータとして動くことができるかを示したものルータ同士の通信でも、ルーティングテーブルは必要。そのため、ローカルなものはコマンド送信でルーティングテーブルを追加するスタティックルーティングでテーブルに追加。グローバルなものは動的ルーティング(BGP, OSPFなどといったプロトコルが使われる)を行う
ブリッジ
- スイッチングハブと同義
UDP
ポートとは、マンションにおける部屋のようなもの。16bitの数値になる。
- ポートの値はアプリケーションで決まっている。
- 0~1023 : システムポート
- 1024~49151 : ユーザポート、or レジスタポート
- 49152~65535 : ダイナミックポート or プライベートポート
nc -ulnv ip (address) (port番号)
でサーバとして起動。
「-u:UDP通信」
「-l:サーバとして動作」
「-n:ipアドレスをDNSで名前解決させないようにする」
「-v:コマンドの表示を詳細にするため」nc -u ip (address) (port番号)
でクライアントとして起動tcp
接続時は、3WAYハンドシェイクで接続確認を行う
- ヘッダにある、6bitのコントロールビットでSYN,ACKなどのフラグを確認する
- SYN : このbitがたったパケットを送り合うことでお互いにシーケンス番号を同期する。つまり、データの順番を管理する
- ACK : 該当のbitが立っていることでACKとして認識する
文字列を送る際はコントロールビットのフラグにPが含まれる
アプリケーション層
HTTP
使用するポートナンバーはTCPの80
- echo -en "GET / HTTP/1.0¥r¥n¥r¥n" | nc 127.0.0.1 80
- curl -X GET -D - http://127.0.0.1
のような形でhttpリクエストを発行できる
- また、サーバも、python3があれば
- sudo python3 -m http.server -b 127.0.0.1 80
のようにしてサーバを起動できる。このとき、アクセス時に表示されるページはカレントディレクトリ上のindex.htmlとなる
DNS
DNSサーバーは外部のものを使うことがよくある。例えばgoogleのもの(8.8.8.8)など
- どのDNSを用いるかは、PC上のリゾルバが決定する
ローカル上では、linuxの場合、「/etc/hosts」ファイル内で、DNS解決用のリストが記載してある
使用するポートはUDPの53番ポート
DHCP
役割としては
- ip アドレスの割り振り
- ルーティングテーブルの作成
- 名前解決に利用するネームサーバの指定 を行う
通信方式はサーバ・クライアント方式。主にDHCPサーバの機能をルータが担うことが多い
使用するポートはUDPの67番ポート
NAT(NAPT)
ローカルアドレスとグローバルアドレスの変換を行う。
iptablesコマンドを用いてlinuxでは使用
pythonでのソケットプログラミング
socket() : ソケットでどんな通信を行うかを指定する
bind() : 接続を待ち受けるIPアドレスとポート番号を指定する
listen() : 接続の待ち受けを開始する
accept() : 接続したクライアントを処理する(この関数内で接続待ちを行う)
send()/recv() : バイト列を受信する
close() : 接続を閉じるその他
127.0.0.1 : ループバックアドレス。自身とネットワークの通信を行いたいときに用いる
tcpdump : コンピュータ上を流れるtcp/ipのデータをキャプチャ(sniffing)する
ルーティングテーブルがないと、外部への通信はできない。
- ルーティングテーブルを見るには、「ip route show」
- 外部への通信を行うには、デフォルトルートが必要
- デフォルトルートとは、他の宛先に一致しないときに使われるルーティングエントリ
- 投稿日:2020-05-16T15:33:01+09:00
suコマンドのハイフン(-)の曖昧なところを今すぐ解消しよう!!
まずはおさらいから
Linuxで現在のユーザーから別のユーザーに切り替えるときのコマンドが
su
です。
ちなみに、これって substitute user の略なんですって。(参考: su (Unix) - Wikipedia)
substituteは「代わりに使う」という意味です。ポケモンのみがわりという技も英語でsubstituteといいます。
switch user とか super user の略ではないんですね。コマンドの使い方
$ su [-] <user name>基本的なコマンドの使い方は上の通りで、ユーザー名を指定しないとsuper user(root)になりますね。
ハイフンって何の意味があるの?
su
コマンドの-
には環境変数を引き継ぐという意味があります。
つまり、-
をつけると初めからそのユーザーでログインしたのと同じことになります。
$ su - anotherUser
- 環境変数を引き継ぐ
- 最初からanotherUserでログインしたのと同じ状況になる
$ su anotherUser
- 環境変数を引き継がない
さいごに
たまにはこんなあっさりした投稿もいいかなw
- 投稿日:2020-05-16T13:45:33+09:00
Ubuntuで絵文字 fonts-noto-color-emoji インストール後に一部のアプリで文字がおかしくなる
Ubuntu 20.04で確認。
Ubuntuで絵文字を表示するには、
fonts-noto-color-emoji
パッケージをインストールする。
インストールするだけで、Chromeなどでも絵文字が適用されるようになる。sudo apt install fonts-noto-color-emojiしかし、それ以降、数字が黒文字の全角になったり、妙なSerif(明朝体)になったりした。
何の文字があたっているかfont-managerで調べていると、Noto Color Emojiが該当した。
フォントの優先順位を確認するfc-matchを使うと、Noto Color Emojiが最初に出てくるようになった。
fc-match -a | head -5 NotoColorEmoji.ttf: "Noto Color Emoji" "Regular" DejaVuSans.ttf: "DejaVu Sans" "Book" DejaVuSansCondensed.ttf: "DejaVu Sans" "Condensed" DejaVuSans-ExtraLight.ttf: "DejaVu Sans" "ExtraLight" DejaVuSans-Bold.ttf: "DejaVu Sans" "Bold"おそらく、Noto Color Emojiのインストールでこれが優先順位の先頭になり、一部最も上位のフォントしか使わないアプリケーションで、このフォントだけが使われるようになって、このようなことになっていると思われる。
フォントの優先順位を操作する ~/.config/fontconfig/fonts.conf をみてみると、Noto Color Emojを先頭に挿入する操作が書かれていた。
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'> <fontconfig> <match> <test name="family"> <string>sans-serif</string> </test> <edit mode="prepend" binding="strong" name="family"> <string>Noto Color Emoji</string> </edit> </match> <match> <test name="family"> <string>serif</string> </test> <edit mode="prepend" binding="strong" name="family"> <string>Noto Color Emoji</string> </edit> </match>これに、Noto Sans/Serif CJK JPに変更した。
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'> <fontconfig> <match> <test name="family"> <string>sans-serif</string> </test> <edit mode="prepend" binding="strong" name="family"> <string>Noto Sans CJK JP</string> </edit> </match> <match> <test name="family"> <string>serif</string> </test> <edit mode="prepend" binding="strong" name="family"> <string>Noto Serif CJK JP</string> </edit> </match>確認すると、順位が下がっていた。
fc-match -a | head -10 NotoSansCJK-Regular.ttc: "Noto Sans CJK JP" "Regular" NotoSansCJK-Medium.ttc: "Noto Sans CJK JP" "Medium" NotoSansCJK-DemiLight.ttc: "Noto Sans CJK JP" "DemiLight" NotoSansCJK-Light.ttc: "Noto Sans CJK JP" "Light" NotoSansCJK-Thin.ttc: "Noto Sans CJK JP" "Thin" NotoSansCJK-Bold.ttc: "Noto Sans CJK JP" "Bold" NotoSansCJK-Black.ttc: "Noto Sans CJK JP" "Black" NotoColorEmoji.ttf: "Noto Color Emoji" "Regular"引き続きChromeなどでは絵文字が利用でき、加えてNoto Color Emojiが不必要にあたっていたアプリでも正常に表示されるようになった。
- 投稿日:2020-05-16T11:51:44+09:00
え?君のChrostiniそんなもん?だっさwww - Part1 日本語化
免責事項
当記事は以下の環境にて検証済みであり、端末やOSのバージョン(ChromeOS, Linux)によっては必ずしも成功するとは限りません。また、記事の内容を実行したことによって生じた損害については一切の責任は負いませんのでご了承ください。
あと、画像多めなので少し重いかもです。環境Lenovo Chromebook S330 CPU: 4xMediaTek MT8173C@2.10GHz(aarch64) RAM: LPDDR3 4GB OS: ChromeOS 81.0.4044.141(2020/5/16(Sat)時点最新版)Chrostiniナニソレオイシイノ
美味しいです。とっても。食べられません。でも、すっごい良い機能です。ChromebookでLinuxが使えるんですよ?裏蓋開けたりブートローダーいじったりしなくても。それに、仮想環境の中で動くからもしやらかしても最悪再インストールしなおせばいいだけだし、ChromeOS側の緩急に与える影響もすごく小さい。
この記事では、「Chrostini使いたいけどどうすればいいかよくわからない...。」というような迷える子羊たちのために書かれた記事ですので、玄人諸君にはあまり合わないかもしれません。超絶丁寧に説明するので最後まで読んでいってね。あぁ、読み方は「くろすてぃーに」だと思います。目標
↓こんな感じになります。かっこいいでしょ。↓(ユーザー名が違うのは開発用じゃなくて僕が普段使ってる環境で撮ったスクショだからだよ)
今回は、とりあえず日本語化をしてGUIソフトで日本語入力できるようにするところまでやります。Linux ON!
さぁ、Linuxを使えるようにしましょう。最新版のChromeOSなら特別なことは不要ですが、少しいじります
(どっちなんだよ)
デフォルトでは、Linuxよインストールしたときのユーザー名はChromeOSで使われいるGoogleIDになります。ユーザー名の例Konohage@example.com だったらユーザー名は Konohage Horiemon@example.com だったらユーザー名は Horiemonこんな感じ。嫌だね。どうしましょうか。
Chromeでこのページを開いて、一番上の'Allow picking your Chrostini username'をDefaultからEnabledにしてください。すると、下の方に'Restart'が出てくるので、これを押して再起動してください。
これで、Chrostiniのユーザー名を設定できるようになりました。
じゃあ、インストールしましょう。
設定を開いて。。。「Linux(ベータ版)」を押して。。。
Linuxをオンにする!!!
と、こんな漢字の画面が出てきます。ユーザー名を選択しましょう。ここでタイプミスとか変な名前にすると、99%変更不可能なので、気をつけましょう。僕は一回やりました。
で、インストール!!!します。
結構時間かかるので首をろくろっ首のようにして待ちましょう。まあ、5分くらいですかね。待ってる間の暇つぶしには、僕はゲームをやるかな...?Krunkerはブラウザでできて、楽しいゾ。FPS楽しい!(゚∀゚)アヒャ
インストールが終わると、こうなります。
Linuxのプロンプトですね。おめでとうございます!Linuxが動きました!更新タイム
さあ、Linuxが動きました。嬉しい!!!けど、ソフトを更新しないとダメです!やっていきましょう。
更新$ sudo apt update -y && sudo apt upgrade -yこのコマンドをCtrl+CでコピーしてCtrl+Shift+V1で貼り付けて、Enter!!
わーーーーーーっていろいろ出てくるけど、基本待つだけ。待ちませう。で、上のスクショのようにプロンプトが帰ってきたら2OK。更新は終了。待ってる間にコマンドの解説。
解説$ sudo apt update -y && sudo apt upgrade -y 1. sudo: 管理者権限でコマンドを実行するためのコマンド。システムに変更を与えるコマンドは基本的にはこれが必要。「すどー」「すど」「すどぅ」が読み方かな。人によって違ったりするよ。 2. apt: パッケージ(ソフトウェア)を管理するコマンド。「あぷと」であってるはず。~~どこかの塾と同じです~~ 3. apt update: パッケージのリストを更新するコマンド。 4. apt upgrade: インストールされているパッケージをすべて更新するコマンド。 5. -y: aptコマンドにつけているオプション。これをつけなかったら、インストール時に色々聞かれてはいいいえで答えないといけなくなって面倒だからつけてる。 6. &&: 2つのコマンドを同時に実行できるやつ。更新は終わりましたか?じゃあ次に移りましょう。
パスワードを設定しとこう
デフォルトではユーザーにはパスワードが設定されていません。すると、次回のところで困るので設定しておきましょう。
パスワード変更$ sudo passwd $USERNAME
必ずsudoをつけてください。つけないと不可能です。(現在のパスワードを求められるが設定されていないため)日本語化
英語でいいんだというツワモノはここはやる必要ありません。()
まずはこれを実行して言語を変更しましょう。dpkg-reconfigure$ sudo dpkg-reconfigure localeすると、こんな感じになります。
矢印キーで下へ行って、'en_US.UTF-8'を探して、見つけたらスペースキーを押して'*'を消しましょう。
そして、'ja_JP.UTF-8'を探して、スペースキーで'*'をつけてください。
そうしたら、enterキーを押して
'ja_JP.UTF-8'のところでもう一回enter
こんな感じになったらOK。プロンプトで$ clear
を実行して画面をお掃除しましょう。
次に、日本語入力をできるようにしましょう。fcitxのインストール$ sudo apt install fcitx fcitx-mozc nano -y
$ apt install
はパッケージをインストールするためのコマンドです。sudoをつけてください。結構時間がかかるので肘で顎を触れるか試して待ちましょう。nanoはテキストエディタです。このあと使うので一緒に入れてください。
わーーーーーーって出てきて、プロンプトが帰ってきたらOK。終わり。
で、設定をいじります。$ sudo nano /etc/systemd/user/cros-garcon.service.d/cros-garcon-override.confで、開いたファイルの一番下に矢印キーで移動して、下の四行を追加してください。
cros-garcon-override.confEnvironment="GTK_IM_MODULE=fcitx" Environment="QT_IM_MODULE=fcitx" Environment="XMODIFIERS=@im=fcitx" Environment="GDK_BACKEND=x11"できたら、Ctrl+Sで保存してCtrl+Xで終了です。
次に、設定ファイルをホームディレクトリに追加します。これがないと日本語入力のやつが自動起動しません。$ nano ~/.sommelierrc
で、開いたファイルに
.sommelierrc/usr/bin/fcitx-autostartを追加してください。というか中身はもともと空です。で、保存からの終了。
そうしたら、Linuxコンテナを再起動してください。
ターミナルのアイコンを右クリックして「Linux(ベータ版)を終了」をクリック。しばらく待ってからもう一度ターミナルを開けばOKです。
で、仕上げです。$ fcitx-configtool
でfcitxの設定を開いてください。
そうしたら、キーボードを自分のものにあわせて下の+ボタンや-ボタンで編集してください。キーボードが一番上に、その下にMozcがあればOK。
で、アドオンのタブを開いて、「Advanced」(拡張)にチェックを入れて、検索欄に「xim」と入れてください。
一つだけ検索結果に出てくるのでクリック。
「XIMでOn the spotスタイルを使う」にチェックマークを入れてください。そして、閉じてOKです。(スクショになにか写り込んでるのは気にしないで)中の人から
とりあえず、日本語化はこれで終了です。次回はかっこよく、より使いやすくしていきます。
別にかっこよくなくてもいいやと言う人はここで終わっても大丈夫です。でも、次も読んでくれると嬉しいなぁ(迫真)
近いうちにPart2出しますのでお待ちください。
また、タイプミスとかなにかあったらコメントくださいー。わからないこととかも答えられる限り答えます。お気軽にどうぞー。
Twitterのフォローもよろしくね!SNSとか
GitHub: @Hiro527
Twitter: @zHiro527
Discord: Hiro527#1872注釈
- 投稿日:2020-05-16T11:51:44+09:00
ChromebookでLinuxをしたいの! - Part1 日本語化
免責事項
当記事は以下の環境にて検証済みであり、端末やOSのバージョン(ChromeOS, Linux)によっては必ずしも成功するとは限りません。また、記事の内容を実行したことによって生じた損害については一切の責任は負いませんのでご了承ください。
あと、画像多めなので少し重いかもです。環境Lenovo Chromebook S330 CPU: 4xMediaTek MT8173C@2.10GHz(aarch64) RAM: LPDDR3 4GB OS: ChromeOS 81.0.4044.141(2020/5/16(Sat)時点最新版)Chrostiniナニソレオイシイノ
美味しいです。とっても。食べられません。でも、すっごい良い機能です。ChromebookでLinuxが使えるんですよ?裏蓋開けたりブートローダーいじったりしなくても。それに、仮想環境の中で動くからもしやらかしても最悪再インストールしなおせばいいだけだし、ChromeOS側の環境に与える影響もすごく小さい。
この記事では、「Chrostini使いたいけどどうすればいいかよくわからない...。」というような迷える子羊たちのために書かれた記事ですので、玄人諸君にはあまり合わないかもしれません。超絶丁寧に説明するので最後まで読んでいってね。あぁ、読み方は「くろすてぃーに」だと思います。目標
↓こんな感じになります。かっこいいでしょ。↓(ユーザー名が違うのは開発用じゃなくて僕が普段使ってる環境で撮ったスクショだからだよ)
今回は、とりあえず日本語化をしてGUIソフトで日本語入力できるようにするところまでやります。Linux ON!
さぁ、Linuxを使えるようにしましょう。最新版のChromeOSなら特別なことは不要ですが、少しいじります
(どっちなんだよ)
デフォルトでは、Linuxよインストールしたときのユーザー名はChromeOSで使われているGoogleIDになります。ユーザー名の例Konohage@example.com だったらユーザー名は Konohage Horiemon@example.com だったらユーザー名は Horiemonこんな感じ。嫌だね。どうしましょうか。
Chromeでこのページを開いて、一番上の'Allow picking your Chrostini username'をDefaultからEnabledにしてください。すると、下の方に'Restart'が出てくるので、これを押して再起動してください。
これで、Chrostiniのユーザー名を設定できるようになりました。
じゃあ、インストールしましょう。
設定を開いて。。。「Linux(ベータ版)」を押して。。。
Linuxをオンにする!!!
と、こんな感じの画面が出てきます。ユーザー名を選択しましょう。ここでタイプミスとか変な名前にすると、99%変更不可能なので、気をつけましょう。僕は一回やりました。
で、インストール!!!します。
結構時間かかるので首をろくろっ首のようにして待ちましょう。まあ、5分くらいですかね。待ってる間の暇つぶしには、僕はゲームをやるかな...?Krunkerはブラウザでできて、楽しいゾ。FPS楽しい!(゚∀゚)アヒャ
インストールが終わると、こうなります。
Linuxのプロンプトですね。おめでとうございます!Linuxが動きました!更新タイム
さあ、Linuxが動きました。嬉しい!!!けど、ソフトを更新しないとダメです!やっていきましょう。
更新$ sudo apt update -y && sudo apt upgrade -yこのコマンドをCtrl+CでコピーしてCtrl+Shift+V1で貼り付けて、Enter!!
わーーーーーーっていろいろ出てくるけど、基本待つだけ。待ちませう。で、上のスクショのようにプロンプトが帰ってきたら2OK。更新は終了。待ってる間にコマンドの解説。
解説$ sudo apt update -y && sudo apt upgrade -y 1. sudo: 管理者権限でコマンドを実行するためのコマンド。システムに変更を与えるコマンドは基本的にはこれが必要。「すどー」「すど」「すどぅ」が読み方かな。人によって違ったりするよ。 2. apt: パッケージ(ソフトウェア)を管理するコマンド。「あぷと」であってるはず。~~どこかの塾と同じです~~ 3. apt update: パッケージのリストを更新するコマンド。 4. apt upgrade: インストールされているパッケージをすべて更新するコマンド。 5. -y: aptコマンドにつけているオプション。これをつけなかったら、インストール時に色々聞かれてはいいいえで答えないといけなくなって面倒だからつけてる。 6. &&: 2つのコマンドを同時に実行できるやつ。更新は終わりましたか?じゃあ次に移りましょう。
パスワードを設定しとこう
デフォルトではユーザーにはパスワードが設定されていません。すると、次回のところで困るので設定しておきましょう。
パスワード変更$ sudo passwd $USERNAME
必ずsudoをつけてください。つけないと不可能です。(現在のパスワードを求められるが設定されていないため)日本語化
英語でいいんだというツワモノはここはやる必要ありません。()
まずはこれを実行して言語を変更しましょう。dpkg-reconfigure$ sudo dpkg-reconfigure localeすると、こんな感じになります。
矢印キーで下へ行って、'en_US.UTF-8'を探して、見つけたらスペースキーを押して'*'を消しましょう。
そして、'ja_JP.UTF-8'を探して、スペースキーで'*'をつけてください。
そうしたら、enterキーを押して
'ja_JP.UTF-8'のところでもう一回enter
こんな感じになったらOK。プロンプトで$ clear
を実行して画面をお掃除しましょう。
次に、日本語入力をできるようにしましょう。fcitxのインストール$ sudo apt install fcitx fcitx-mozc nano -y
$ apt install
はパッケージをインストールするためのコマンドです。sudoをつけてください。結構時間がかかるので肘で顎を触れるか試して待ちましょう。nanoはテキストエディタです。このあと使うので一緒に入れてください。
わーーーーーーって出てきて、プロンプトが帰ってきたらOK。終わり。
で、設定をいじります。$ sudo nano /etc/systemd/user/cros-garcon.service.d/cros-garcon-override.confで、開いたファイルの一番下に矢印キーで移動して、下の四行を追加してください。
cros-garcon-override.confEnvironment="GTK_IM_MODULE=fcitx" Environment="QT_IM_MODULE=fcitx" Environment="XMODIFIERS=@im=fcitx" Environment="GDK_BACKEND=x11"できたら、Ctrl+Sで保存してCtrl+Xで終了です。
次に、設定ファイルをホームディレクトリに追加します。これがないと日本語入力のやつが自動起動しません。$ nano ~/.sommelierrc
で、開いたファイルに
.sommelierrc/usr/bin/fcitx-autostartを追加してください。というか中身はもともと空です。で、保存からの終了。
そうしたら、Linuxコンテナを再起動してください。
ターミナルのアイコンを右クリックして「Linux(ベータ版)を終了」をクリック。しばらく待ってからもう一度ターミナルを開けばOKです。
で、仕上げです。$ fcitx-configtool
でfcitxの設定を開いてください。
そうしたら、キーボードを自分のものにあわせて下の+ボタンや-ボタンで編集してください。キーボードが一番上に、その下にMozcがあればOK。
で、アドオンのタブを開いて、「Advanced」(拡張)にチェックを入れて、検索欄に「xim」と入れてください。
一つだけ検索結果に出てくるのでクリック。
「XIMでOn the spotスタイルを使う」にチェックマークを入れてください。そして、閉じてOKです。(スクショになにか写り込んでるのは気にしないで)中の人から
とりあえず、日本語化はこれで終了です。次回はかっこよく、より使いやすくしていきます。
別にかっこよくなくてもいいやと言う人はここで終わっても大丈夫です。でも、次も読んでくれると嬉しいなぁ(迫真)
近いうちにPart2出しますのでお待ちください。
また、タイプミスとかなにかあったらコメントくださいー。わからないこととかも答えられる限り答えます。お気軽にどうぞー。
Twitterのフォローもよろしくね!SNSとか
GitHub: @Hiro527
Twitter: @zHiro527
Discord: Hiro527#1872注釈
- 投稿日:2020-05-16T11:51:44+09:00
ChromebookでLinuxをかっこよく! - Part1 日本語化
免責事項
当記事は以下の環境にて検証済みであり、端末やOSのバージョン(ChromeOS, Linux)によっては必ずしも成功するとは限りません。また、記事の内容を実行したことによって生じた損害については一切の責任は負いませんのでご了承ください。
あと、画像多めなので少し重いかもです。環境Lenovo Chromebook S330 CPU: 4xMediaTek MT8173C@2.10GHz(aarch64) RAM: LPDDR3 4GB OS: ChromeOS 81.0.4044.141(2020/5/16(Sat)時点最新版)Chrostiniナニソレオイシイノ
美味しいです。とっても。食べられません。でも、すっごい良い機能です。ChromebookでLinuxが使えるんですよ?裏蓋開けたりブートローダーいじったりしなくても。それに、仮想環境の中で動くからもしやらかしても最悪再インストールしなおせばいいだけだし、ChromeOS側の環境に与える影響もすごく小さい。
この記事では、「Chrostini使いたいけどどうすればいいかよくわからない...。」というような迷える子羊たちのために書かれた記事ですので、玄人諸君にはあまり合わないかもしれません。超絶丁寧に説明するので最後まで読んでいってね。あぁ、読み方は「くろすてぃーに」だと思います。目標
↓こんな感じになります。かっこいいでしょ。↓(ユーザー名が違うのは開発用じゃなくて僕が普段使ってる環境で撮ったスクショだからだよ)
今回は、とりあえず日本語化をしてGUIソフトで日本語入力できるようにするところまでやります。Linux ON!
さぁ、Linuxを使えるようにしましょう。最新版のChromeOSなら特別なことは不要ですが、少しいじります
(どっちなんだよ)
デフォルトでは、Linuxよインストールしたときのユーザー名はChromeOSで使われているGoogleIDになります。ユーザー名の例Konohage@example.com だったらユーザー名は Konohage Horiemon@example.com だったらユーザー名は Horiemonこんな感じ。嫌だね。どうしましょうか。
Chromeでこのページを開いて、一番上の'Allow picking your Chrostini username'をDefaultからEnabledにしてください。すると、下の方に'Restart'が出てくるので、これを押して再起動してください。
これで、Chrostiniのユーザー名を設定できるようになりました。
じゃあ、インストールしましょう。
設定を開いて。。。「Linux(ベータ版)」を押して。。。
Linuxをオンにする!!!
と、こんな感じの画面が出てきます。ユーザー名を選択しましょう。ここでタイプミスとか変な名前にすると、99%変更不可能なので、気をつけましょう。僕は一回やりました。
で、インストール!!!します。
結構時間かかるので首をろくろっ首のようにして待ちましょう。まあ、5分くらいですかね。待ってる間の暇つぶしには、僕はゲームをやるかな...?Krunkerはブラウザでできて、楽しいゾ。FPS楽しい!(゚∀゚)アヒャ
インストールが終わると、こうなります。
Linuxのプロンプトですね。おめでとうございます!Linuxが動きました!更新タイム
さあ、Linuxが動きました。嬉しい!!!けど、ソフトを更新しないとダメです!やっていきましょう。
更新$ sudo apt update -y && sudo apt upgrade -yこのコマンドをCtrl+CでコピーしてCtrl+Shift+V1で貼り付けて、Enter!!
わーーーーーーっていろいろ出てくるけど、基本待つだけ。待ちませう。で、上のスクショのようにプロンプトが帰ってきたら2OK。更新は終了。待ってる間にコマンドの解説。
解説$ sudo apt update -y && sudo apt upgrade -y 1. sudo: 管理者権限でコマンドを実行するためのコマンド。システムに変更を与えるコマンドは基本的にはこれが必要。「すどー」「すど」「すどぅ」が読み方かな。人によって違ったりするよ。 2. apt: パッケージ(ソフトウェア)を管理するコマンド。「あぷと」であってるはず。~~どこかの塾と同じです~~ 3. apt update: パッケージのリストを更新するコマンド。 4. apt upgrade: インストールされているパッケージをすべて更新するコマンド。 5. -y: aptコマンドにつけているオプション。これをつけなかったら、インストール時に色々聞かれてはいいいえで答えないといけなくなって面倒だからつけてる。 6. &&: 2つのコマンドを同時に実行できるやつ。更新は終わりましたか?じゃあ次に移りましょう。
パスワードを設定しとこう
デフォルトではユーザーにはパスワードが設定されていません。すると、次回のところで困るので設定しておきましょう。
パスワード変更$ sudo passwd $USERNAME
必ずsudoをつけてください。つけないと不可能です。(現在のパスワードを求められるが設定されていないため)日本語化
英語でいいんだというツワモノはここはやる必要ありません。()
まずはこれを実行して言語を変更しましょう。dpkg-reconfigure$ sudo dpkg-reconfigure localesすると、こんな感じになります。
矢印キーで下へ行って、'en_US.UTF-8'を探して、見つけたらスペースキーを押して'*'を消しましょう。
そして、'ja_JP.UTF-8'を探して、スペースキーで'*'をつけてください。
そうしたら、enterキーを押して
'ja_JP.UTF-8'のところでもう一回enter
こんな感じになったらOK。プロンプトで$ clear
を実行して画面をお掃除しましょう。
次に、日本語入力をできるようにしましょう。fcitxのインストール$ sudo apt install fcitx fcitx-mozc nano -y
$ apt install
はパッケージをインストールするためのコマンドです。sudoをつけてください。結構時間がかかるので肘で顎を触れるか試して待ちましょう。nanoはテキストエディタです。このあと使うので一緒に入れてください。
わーーーーーーって出てきて、プロンプトが帰ってきたらOK。終わり。
で、設定をいじります。$ sudo nano /etc/systemd/user/cros-garcon.service.d/cros-garcon-override.confで、開いたファイルの一番下に矢印キーで移動して、下の四行を追加してください。
cros-garcon-override.confEnvironment="GTK_IM_MODULE=fcitx" Environment="QT_IM_MODULE=fcitx" Environment="XMODIFIERS=@im=fcitx" Environment="GDK_BACKEND=x11"できたら、Ctrl+Sで保存してCtrl+Xで終了です。
次に、設定ファイルをホームディレクトリに追加します。これがないと日本語入力のやつが自動起動しません。$ nano ~/.sommelierrc
で、開いたファイルに
.sommelierrc/usr/bin/fcitx-autostartを追加してください。というか中身はもともと空です。で、保存からの終了。
そうしたら、Linuxコンテナを再起動してください。
ターミナルのアイコンを右クリックして「Linux(ベータ版)を終了」をクリック。しばらく待ってからもう一度ターミナルを開けばOKです。
で、仕上げです。$ fcitx-configtool
でfcitxの設定を開いてください。
そうしたら、キーボードを自分のものにあわせて下の+ボタンや-ボタンで編集してください。キーボードが一番上に、その下にMozcがあればOK。
で、アドオンのタブを開いて、「Advanced」(拡張)にチェックを入れて、検索欄に「xim」と入れてください。
一つだけ検索結果に出てくるのでクリック。
「XIMでOn the spotスタイルを使う」にチェックマークを入れてください。そして、閉じてOKです。(スクショになにか写り込んでるのは気にしないで)中の人から
とりあえず、日本語化はこれで終了です。次回はかっこよく、より使いやすくしていきます。
別にかっこよくなくてもいいやと言う人はここで終わっても大丈夫です。でも、次も読んでくれると嬉しいなぁ(迫真)
近いうちにPart2出しますのでお待ちください。
また、タイプミスとかなにかあったらコメントくださいー。わからないこととかも答えられる限り答えます。お気軽にどうぞー。
Twitterのフォローもよろしくね!SNSとか
GitHub: @Hiro527
Twitter: @zHiro527
Discord: Hiro527#1872注釈
- 投稿日:2020-05-16T10:53:02+09:00
InstantOS 1 インストール
InstantOS 1 をインストールしました。
Arch系、ManjaroベースのLinuxです。
本家のページ ←クリック(新窓)インストール後、お約束の .xprofile の書き足しが必要
ここまで出来れば、あとは簡単です。
本家のWMがちょっと使いにくい・・
私はLXQTをデスクトップ環境にしました。
現在のデスクトップ画面
画面では conky を使ってちょっと派手目です。
WallPaper は拾い物。Arch らしい軽量軽快な動作で十分満足しています。
ソフトウェアーは Pamac が付属。
インストール、アップデートに困ることはありません。Arch ファンの方々、お試し下さい。
- 投稿日:2020-05-16T05:33:40+09:00
sudo apt-get update のエラーと警告を虱潰しに直していくだけ
linux を使ってるとしばしばsudo apt-get update をするのですが、よく警告が出てきます。今回はそのお掃除
また増えたらかきたすかも(2020/05/16)
今回は2つ
E: The repository 'http://ppa.launchpad.net/kazam-team/unstable-series/ubuntu bionic Release' does not have a Release file. W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://nvidia.github.io/nvidia-docker/ubuntu18.04/amd64 InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6ED91CA3AC1160CD上が見にくいために平文も貼っておきます↓
E: The repository 'http://ppa.launchpad.net/kazam-team/unstable-series/ubuntu bionic Release' does not have a Release file.
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://nvidia.github.io/nvidia-docker/ubuntu18.04/amd64 InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6ED91CA3AC1160CD
解決策 1
公開鍵の期限が切れているので更新してあげる。
参照:https://linuxconfig.org/how-to-list-and-remove-ppa-repository-on-ubuntu-18-04-bionic-beaver-linux
解決策 2
ppaファイルのrepository を消してあげる。
sudo apt-add-repository -r ppa:kazam-team/unstable-series参照:https://linuxconfig.org/how-to-list-and-remove-ppa-repository-on-ubuntu-18-04-bionic-beaver-linux
- 投稿日:2020-05-16T04:37:16+09:00
システムリソースの制限(ulimit)
はじめに
https://qiita.com/hot_study_man/items/24ba3e00fc936abab58b
このあたりで、システムのリソースを制限したりすることが今後あるだろうと思って、ulimitについて調べてみた
制限の対象
システム全体
システム全体で利用可能なプロセス数やファイルすうなどのリソース制限は、sysctlコマンド
ユーザーやグループ単位 デーモンではない
- ulimitコマンド
- そのユーザーでログインして、ulimitコマンドを使う
- /etc/security/limits.conf
- ユーザーを記入して制限値を書く
- ログインシェルを介した制限
デーモンプロセス
- Cent7の場合、systemdの設定ファイルに制限値を記載する必要あり
↓ apcheのプロセス数の変更があるが、一時的に有効になっているだけで、OS再起動などしたら無効になる
https://takeshiyako.blogspot.com/2013/01/httpdulimit.htmlulimitコマンド
bashなどに含まれている内部コマンドで各プロセスが利用できるリソースに制限をかけることができる
以下-Sor-Hがない場合、ソフトリミット、ハードリミット両方に対して指定値が反映
//ソフトを4000 ulimit -Sn 4000 // ソフトもハードもどっちも4000 ulimit -n 4000ソフトリミット -S
- 現在有効なユーザーの利用可能なリソースの制限。ハードリミットまで増やすことができる
ハードリミット -H
- 一般ユーザーはハードリミットの値は減らすことはできるが、増やすことはできない
- rootユーザーは増やすことができる
書き方
ulimit -Sn 4000 ulimit -Sm 4000ユーザーから実行したプロセスのリソースへの制限値確認
このログインしたユーザーからプロセスを実行すると下記制限がかかる(デフォルト)
# ulimit -Sa core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 15234 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited max user processes (-u) 15234 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited root@web2:~ # ulimit -Ha core file size (blocks, -c) unlimited data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 15234 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 4096 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) unlimited cpu time (seconds, -t) unlimited max user processes (-u) 15234 virtual memory (kbytes, -v) unlimited file locks (-x) unlimitedプロセスのulimitの確認 apacheの場合
# ps auxf | grep httpd root 17733 0.0 0.0 103320 872 pts/0 S+ 04:07 0:00 \_ grep httpd root 19585 0.0 0.6 431068 25856 ? Ss Mar02 6:53 /usr/sbin/httpd apache 15562 0.0 1.1 456336 46312 ? S 03:16 0:01 \_ /usr/sbin/httpd apache 15563 0.0 1.4 471072 60616 ? S 03:16 0:02 \_ /usr/sbin/httpd apache 15564 0.0 1.3 464788 55224 ? S 03:16 0:02 \_ /usr/sbin/httpd apache 15565 0.0 1.2 467252 49708 ? S 03:16 0:02 \_ /usr/sbin/httpd apache 15566 0.0 0.6 435212 24552 ? S 03:16 0:00 \_ /usr/sbin/httpd apache 15567 0.0 0.7 439356 28732 ? S 03:16 0:00 \_ /usr/sbin/httpd apache 15572 0.0 1.5 474280 63620 ? S 03:16 0:01 \_ /usr/sbin/httpd apache 15573 0.0 0.7 439336 28892 ? S 03:16 0:01 \_ /usr/sbin/httpd apache 15593 0.0 0.7 446508 29296 ? S 03:16 0:01 \_ /usr/sbin/httpd apache 15594 0.0 0.7 441316 30808 ? S 03:16 0:00 \_ /usr/sbin/httpd apache 15595 0.0 0.8 452592 34920 ? S 03:16 0:01 \_ /usr/sbin/httpd apache 17697 0.0 0.4 431068 19140 ? S 04:06 0:00 \_ /usr/sbin/httpd制限の確認
# cat /proc/19585/limits Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited seconds Max file size unlimited unlimited bytes Max data size unlimited unlimited bytes Max stack size 10485760 unlimited bytes Max core file size 0 unlimited bytes Max resident set unlimited unlimited bytes Max processes 15234 15234 processes Max open files 1024 4096 files Max locked memory 65536 65536 bytes Max address space unlimited unlimited bytes Max file locks unlimited unlimited locks Max pending signals 15234 15234 signals Max msgqueue size 819200 819200 bytes Max nice priority 0 0 Max realtime priority 0 0 Max realtime timeout unlimited unlimited usデーモンプロセスに対してlimit制限の変更
https://go-journey.club/archives/4823
PAM 認証
「/etc/security/limits.conf」で設定した値はログインしない「デーモンプロセス」には効果がありません。
細かく説明すると、理由はログイン時や su コマンド実行時に PAM 認証されたタイミングで /etc/security/limits.conf の設定が適用されるため、デーモンプロセスには効かないということになります。daemon系プロセスのファイルディスクリプタ数上限を設定する際、/etc/security/limits.conf は使えません。状況によっては一見設定されたように見えますが、大きな落とし穴にはまることになります。
面倒ですが、必要なプロセス毎にulimitを用いて適切に設定しましょう。一時的にlimits.confの設定内容が有効になるだけ
つまり、手動で再起動した場合は一時的にlimits.confの設定内容が有効になるだけなのです。
当然、マシン自体が再起動した場合はinitが各daemonを起動し、PAM認証が入らないため、OS規定の上限値である1024に戻ってしまいます。結局、リミット値を上げるには、ulimit -n の記述を
daemontoolsであれば、/service/<サービス名>/runファイルに追加
rcスクリプトであれば、/etc/init.d/<サービス名>ファイルに追加
しないといけません。ただしapacheの場合、apachectl経由での制御を行うとrcスクリプトを介さないため、apachectlにも追加しておかないといけないことに注意してください。
Cent7の場合
systemdの設定ファイルに設定値を書く