- 投稿日:2019-11-02T23:00:50+09:00
初心者がWindowsPCに仮想マシンを作ってLinux環境を作成する時、躓きやすい2点をまとめました(※Linux超初心者向け)
使う教材:『Linuxの教科書』三宅英明 著
初心者必携の一冊。(私も今日Linux始めたばかりですが)
「この通りにやればいつの間にか環境構築が終わっている」という分かりやすさです。
ただ、書籍の通りにやったものの2箇所だけ足止めをくらったので、それをまとめました。『作業手順』
- VirtualBoxをダウンロード (本を持っている人はp5から)
- CentOSをダウンロード
- VBから仮想マシンを作成 ※注意事項1
- VBからCentOSを起動、インストール
- ユーザ設定
- 再起動後、ログイン ※注意事項2
※注意事項1
問題点:プルダウンで「Red Hat(64 bit)」が表示されない
解決策:BIOSの設定を変更する仮想マシンを作成するとき、バージョン聞いてきますよね。
私のPCではなぜか「Red Hat(32 bit)」しか選べませんでした。まあいいかと思って32bitで進めたところ、CentOSインストール時にエラー発生!
エラー文
this kernel requires an x86-64 cpu but only detected an i686 cpuググったところ、BIOS設定に問題があるのではないかと思い当たったので以下の作業を行う:
・再起動し、ASUS(私のPCの場合)ロゴが出ている時にF2ボタン押す
・Advanced → CPU configuration
・Intel Virtualization Technologyをenableにする
・Save&Exit改めてVirtualBoxを起動して仮想マシンを作成したところ、
プルダウンに64bitが出ました。
※注意事項2
問題点:CentOSのインストール後、再起動するとログイン画面が出てしまう
解決策:ストレージからディスクイメージを削除
検索word:「VirtualBox 再起動後 インストール画面」教科書ではp13で再起動ボタンを押せばログイン画面に進めると書いてありますが、再起動後、なぜか再びインストール画面が登場。
何度ソフトのインストールや仮想マシンの再作成をやっても結果が変わらず、ググったところMasashi Tsuru様の記事を発見。
VirtualBox に Linux(CentOS 6)をインストールしてみた (CentOSインストール編)
https://2626.info/install-centos/上記を読んだほうが早いと思いますが、ソフトが7年前のverなので、
スクショと併せて書いておきます。・一旦CentOSを終了
・VirtualBoxの「設定」を押し、左側の項目から「ストレージ」を選択
・コントローラー:IDEに紐づいている「CentOS-8-x86_64-1905-dvd1.iso」(CentOSのインストールに使ったディスクイメージ)を右クリックし、削除
・「光学ドライブを削除しますか?」という警告文が出るので、「除去」をクリック
CentOSを再起動したところ、黒い画面が立ち上がり、何回か灰色の画面が出たりして不安になりますが、
そのまま待ってるとライセンス情報の画面に切り替わり、「ライセンス契約に同意します」にチェック入れて進むと無事ログイン画面へ。
つ、疲れた……!
まだ環境構築しか終わってないですが、達成感だけを噛みしめて、
明日からは実際にLinuxを動かします。頑張るぞ。
- 投稿日:2019-11-02T21:59:32+09:00
ソケットを使って、DNS、mDNS、WINS、LLMNRでホスト名のIPアドレスを問い合わせる
名前の問い合わせ
普通はOSの関数である
gethostbynameまたはgetaddrinfoを使って、ホスト名からIPアドレスを取得しますが、これを自前でやってみます。ソケットとUDP通信の学習用サンプルプログラムとしてご利用いただけます。または、汎用OSが無いワンチップマイコンなどにも応用できるかもしれません。動作環境はLinuxを想定しています。プログラムとしては、あえて、微妙に未完成な感じにしてあります。4種類のプロトコルは、ソースコード中のコメントアウトしている行を変更して切り替えてください。
ソースコードは、このページの下にあるリンクからどうぞ
DNS
インターネットの名前解決を行います。Domain Name Service の略です。
DNSサーバの UDP/53 へ問い合わせします。サーバアドレスはソースコード中にハードコーディング(8.8.8.8)してあります。
mDNS
macOSで主に使われる名前解決の仕組みで、Multicast DNS の略です。Windows 10では標準でサポートされています。10未満のWindowsでは「Bonjour for Windows」をインストールすると利用できるようになります。Linuxでは Avahi Daemon でサポートされています。
ローカルネットワークの 224.0.0.251 宛に UDP/5353 へマルチキャストして問い合わせします。該当するホストは自分自身で応答パケットを返信します。
WINS
Windowsでかなり昔からある名前解決の仕組みです。Windows Internet Name Service の略、別名NBNS(NetBIOS Name Service)ともいいます。Ubuntu/Debianでは、Sambaまたは
libnss-winbindというパッケージをインストールすると利用できるようになります。ただし、最新の一部ディストリビューションでは、起動スクリプトに問題があるらしく、これを利用するには修正が必要なことがあるらしいです。ローカルネットーワークで UDP/137 へブロードキャストで問い合わせます。該当するホストは自分自身で応答パケットを返信します。
LLMNR
最近のWindowsでサポートされている名前解決の仕組みで、Link-local Multicast Name Resolution の略です。最近といっても Windows Vista 以降なので、ほとんどのWindows環境で利用できます。ただし、NASなどのハードウェア製品では、WINSは使えてもLLMNRには対応していないことがあります。
ローカルネットワークの 224.0.0.252 宛に UDP/5355 へマルチキャストして問い合わせします。該当するホストは自分自身で応答パケットを返信します。
ソースコード
ビルド用の定義は、筆者が愛用している開発環境 Qt Creator のプロジェクトファイルを用意しましたが、C++のソースファイルが1個だけですので、簡単にコンパイルできると思います。プログラムの開発に当たって、「Geekなぺーじ/UDPパケットのやりとりを行うサンプルプログラム」を参考にさせていただきました。
https://github.com/soramimi/nsquery
サーバ側(参考)
ついでですが、問い合わされる側(サーバ)のコードも、昔書いたのがあります。もし興味があればご覧ください。
- 投稿日:2019-11-02T17:35:55+09:00
Linux (Arch Linux) の開発環境設定の記録 (Arch Linux のインストール)
はじめに
Arch Linux をインストールした際の記録です。
5年くらい前に購入したノートパソコンに Windows とのデュアルブート環境でインストールしてみました。
かなり軽快に動作していますので,近いうちにシングルブート環境でインストールしなおしてみようと思います。記事作成・更新時の環境
- CPU: Intel Celeron® N2830
- RAM: 4GB
- HDD: 500GB
- UEFI による Windows 10 Home とのデュアルブート
Windows とのデュアルブート環境を構築するためには Windows を先にインストールする必要があります。
Windows パーティションのリサイズ等は略します。
Arch Linux について
1. 英語
2. 日本語
Arch Linux のインストール
インストールガイド - ArchWiki を参照しながら進めます。
1. インストールの準備
以下から ISO ファイルをダウンロードします。
以下を参考にインストールメディアを作成します。
1.1. 署名の検証
署名の検証 を参考にしてください。
1.2. ライブ環境の起動
UEFI 設定画面から以下を確認します。
- Fast Boot: Disabled
- Launch CSM: Enabled
- Secure Boot: Disabled
Boot 関連のメニューからインストールメディアを選択し,ライブ環境を起動します。
UEFI モードで起動してください。
最初は仮想端末に Root ユーザーでログインされ,Zsh のシェルプロンプトが表示されます。
設定ファイルを編集するときには,nano,vi,vim が使えます。
1.3. キーボードレイアウト
デフォルトのキーボードレイアウトは US キーボードです。
利用可能なキーマップは以下のコマンドで確認できます。
# ls /usr/share/kbd/keymaps/**/*.map.gz日本語キーボードレイアウトに設定するには,以下を実行します。
# loadkeys jp1061.4. 起動モードの確認
以下を実行し UEFI モードで起動しているかどうかを確認します。
# ls /sys/firmware/efi/efivarsUEFI モードで起動している場合は
/sys/firmware/efi/efivarsディレクトリの内容が表示されます。UEFI モードで起動していない場合は
No such file or directoryと表示されます。1.5. パーティション
以下を実行し,システムに接続されているストレージを確認します。
# fdisk -lパーティショニング を参考にしてください。
最終的に今回のストレージ構成は以下のようになります。
/dev/sda |- /dev/sda1 NTFS 529M Windows recovery environment |- /dev/sda2 FAT32 100M EFI System (/mnt/boot をマウント) |- /dev/sda3 16M Microsoft reserved |- /dev/sda4 NTFS 249.4G Microsoft basic data (Windows 10) |- /dev/sda5 ext4 215.8G Linux root (x86-64) (/mnt をマウント)スワップパーティションは作成していません。
以下 sdXy は適宜読み替えてください。
1.6. パーティションのフォーマット
以下を実行し,ルートパーティション (
/dev/sda5) を ext4 形式でフォーマットします。# mkfs.ext4 /dev/sda51.7. パーティションのマウント
以下を実行し,ルートパーティションをマウントします。
# mount /dev/sda5 /mnt以下を実行し,EFI システムパーティション 用のディレクトリを作成しマウントします。
# mkdir /mnt/boot # mount /dev/sda2 /mnt/bootデュアルブート環境になりますので,Windows で作成されている EFI システムパーティション を指定します。
以下を実行し,正しくマウントされていることを確認します。
# lsblk /dev/sda1.8. インターネットへの接続
以下を実行し,ネットワークインターフェイスが認識・有効化されていることを確認します。
# ip linkワイヤレス LAN による接続 を行いますので,ワイヤレスデバイス名 (wlp2s0 など) を確認します。
以下を実行します。
# wpa_supplicant -B -D nl80211,wext -i [wlp2s0] -c <(wpa_passphrase [MYSSID] [PASSPHRASE]) # dhclient [wlp2s0][wlp2s0] と [MYSSID] と [PASSPHRASE] は適宜変更してください。
以下を実行し,接続を確認します。
# ping archlinux.org1.9. システムクロックの更新
以下を実行します。
# timedatectl set-ntp trueサービスの状態は,以下で確認することができます。
# timedatectl status2. インストール
2.1. ミラーの選択
以下を実行し
/etc/pacman.d/mirrorlistを編集します。# nano /etc/pacman.d/mirrorlist日本のミラーサーバーを最上位にします。
2.2. ベースシステムのインストール
以下を実行し,base パッケージ と カーネル をインストールします。
# pacstrap /mnt base base-devel linux nano後ほど AUR も使用しますので base-devel パッケージグループ もインストールします。
別途テキストエディタのインストールが必要になったようですので nano を指定しておきます。
3. システムの設定
3.1. fstabの生成
以下を実行し fstab を生成します。
# genfstab -U /mnt >> /mnt/etc/fstab作成された
/mnt/etc/fstabに問題がないことを確認してください。3.2. chroot
新しくインストールしたシステムに
chrootします。# arch-chroot /mnt3.3. タイムゾーン
以下を実行し,タイムゾーンを設定します。
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime以下を実行し,ハードウェアクロックを設定します。
# hwclock --systohc --utcハードウェアクロックが UTC に設定されている場合,マシンにインストールされている他のオペレーティングシステムも UTC に設定 する必要があります。
Windows とのデュアルブート環境では Windows 側のレジストリを変更する必要がありますので Windows で UTC を使う を参照してください。
3.4. ロケール
以下を実行し
/etc/locale.genを編集します。# nano /etc/locale.gen
en_US.UTF-8とja_JP.UTF-8をアンコメントし,以下を実行します。# locale-gen以下を実行し,ロケールを設定します。
# echo LANG=en_US.UTF-8 > /etc/locale.confインストール中はデフォルトの言語を英語としておきます。
デフォルトのキーボードレイアウトは US キーボードです。
日本語キーボードレイアウトに設定するには,以下を実行します。
# echo KEYMAP=jp106 > /etc/vconsole.conf3.5. ホストネーム
以下を実行し,ホストネーム (コンピュータ名) を設定します。
# echo [myhostname] > /etc/hostname[myhostname] は適宜変更してください。
以下を実行し
/etc/hostsを編集します。# nano /etc/hosts以下のように同じホスト名を記述します。
127.0.0.1 localhost ::1 localhost 127.0.1.1 [myhostname].localdomain [myhostname]3.6. ネットワーク設定
新しくインストールされた環境では,ネットワーク接続がデフォルトで有効になっていません。
以下を実行し NetworkManager をインストールし有効化します。
# pacman -S networkmanager dhcpcd # systemctl enable NetworkManager
chrootではnmtuiコマンドで作業をすることができません。インストールが完了して再起動した後に
nmtuiコマンドで設定をします。3.7. Initramfs
今回は使用していません。
3.8. Root パスワード
以下を実行し Root パスワードを設定します。
# passwd3.9. ブートローダーの設定
以下を実行し GRUB をインストールします。
# pacman -S grub efibootmgr # grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub # grub-mkconfig -o /boot/grub/grub.cfg以下を実行し Intel の マイクロコード を更新します。
# pacman -S intel-ucode # grub-mkconfig -o /boot/grub/grub.cfg3.10. 再起動
以下を実行し
chroot環境から抜け再起動します。# exit # umount -R /mnt # rebootRoot アカウントでログイン後に以下を実行し NetworkManager の設定をします。
# nmtuiインストール後
一般的な推奨事項 を参照してください。
1. システム管理
1.1. ユーザーとグループ
以下を実行し,一般ユーザー を追加します。
# useradd -m -g users -G wheel [username] # passwd [username][username] は適宜変更してください。
1.2. 管理者権限
wheel グループに sudo 権限を与えるために以下を実行します。
visudoではデフォルトのエディターが vim なので一時的に nano に変更します。# EDITOR=nano visudo以下のように
%wheel ALL=(ALL) ALLをアンコメントします。## Uncomment to allow members of group wheel to execute any command %wheel ALL=(ALL) ALL以下のように
%wheel ALL=(ALL) NOPASSWD: ALLをアンコメントすることでパスワード無しで使用することができるようになります。## Same thing without a password %wheel ALL=(ALL) NOPASSWD: ALL以下を実行し,Root アカウントからログアウトします。
# logout今後は以下のように表記します。
# Root で実行するコマンド $ User で実行するコマンド2. パッケージ管理
2.1. pacman
パッケージの更新は以下を実行します。
$ sudo pacman -Syu2.4. Arch User Repository
非公式リポジトリ AUR: Arch User Repository のパッケージは pacman で簡単に管理することができません。
AUR をより便利に使うために AUR ヘルパーである yay を導入します。
以下を実行し yay のビルドに必要な Git をインストールします。
$ sudo pacman -S git以下を実行し
git cloneします。$ git clone https://aur.archlinux.org/yay.git以下を実行し,パッケージをビルドしインストールします。
$ cd yay $ makepkg -siyay のビルドに必要な go が自動でインストールされるようです。
以下を実行し,ビルド用のファイルを削除します。
$ cd .. $ rm -rf yaygo が不要な場合は,以下を実行し削除します。
$ sudo pacman -Rs goAUR パッケージの圧縮に使う xz はデフォルトでシングルスレッドのようです。
makepkg で出来る限り多くの CPU コアを使ってパッケージを圧縮するには
/etc/makepkg.confのCOMPRESSXZの行を編集します。以下を実行し
/etc/makepkg.confを編集します。$ sudo nano /etc/makepkg.conf以下のように
COMPRESSXZの行を変更します。COMPRESSXZ=(xz -c -z - --threads=0)AUR パッケージを含むシステム全体のパッケージの更新は,以下を実行します。
$ yay4. グラフィカルユーザーインターフェース
4.1. ディスプレイサーバー
以下を実行し,ディスプレイサーバーである Xorg をインストールします。
$ sudo pacman -S xorg-server4.2. ディスプレイドライバ
以下を実行し,ビデオカードを確認します。
# lspci | grep VGA以下を実行し,ディスプレイドライバ をインストールします。
$ sudo pacman -S [xf86-video][xf86-video] は適宜変更してください。
4.3. ディスプレイマネージャ
以下を実行し,ディスプレイマネージャーである LightDM をインストールし有効化します。
$ sudo pacman -S lightdm lightdm-gtk-greeter $ sudo systemctl enable lightdm4.4. デスクトップ環境
以下を実行し,デスクトップ環境である Xfce4 をインストールします。
$ sudo pacman -S xfce4 xfce4-goodies日本語配列キーボードを使用している場合は,以下を実行し Xorg のキーボードレイアウト設定を変更します。
$ sudo localectl set-x11-keymap jpロケールを日本語に変更します。
以下を実行し
/etc/locale.confを編集します。$ sudo nano /etc/locale.conf以下のように記述します。
LANG=ja_JP.UTF-8設定が終了したら再起動をします。
$ sudo reboot8. 入力デバイス
8.5. Xorg での入力
日本語を入力するのに必要なインプットメソッドフレームワークとして Fcitx を,インプットメソッドエンジンとして Mozc をインストールします。
$ sudo pacman -S fcitx fcitx-mozc fcitx-im fcitx-configtool入力途中の文字が正しく表示されるように
~/.xprofileを編集します。$ nano ~/.xprofile以下のように記述します。
export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx11. 外観
11.1. フォント
以下を実行し Google Noto Fonts をインストールします。
$ sudo pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra12. コンソール環境改善
12.2. 他のシェル
現在使用しているシェルを確認します。
$ echo $SHELL以下を実行し Zsh をインストールします。
$ sudo pacman -S zshZsh をデフォルトのシェルにします。
$ chsh -s $(which zsh)設定フレームワークである Prezto をインストールします。
以下を実行し,設定ファイルを一旦削除します。
$ cd ~/ && rm .zsh*公式サイト Prezto の Installatin を参照してインストールします。
テーマを変更するために
~/.zpreztorcを編集します。116 行目前後に以下の記述がありますのでテーマを pure に変更します。
zstyle ':prezto:module:prompt' theme 'pure'その他
追加でインストールしたパッケージは以下になります。
$ sudo pacman -S code $ sudo pacman -S docker $ sudo pacman -S dropbox $ sudo pacman -S firefox $ sudo pacman -S firefox-i18-ja $ sudo pacman -S google-chrome $ sudo pacman -S vim$ yay -S anacondaZsh に anaconda のパスを通すために
.zprofileに以下を記述します。# Anaconda PATH=( /opt/anaconda/bin $PATH )
- 投稿日:2019-11-02T17:35:55+09:00
Linux (Arch Linux) の開発環境設定の記録 (Arch Linux ベースシステムのインストール)
はじめに
Arch Linux をインストールした際の記録です。
5年くらい前に購入した Excel 専用 Windows 機にデュアルブート環境でインストールしてみました。
かなり軽快に動作していますので,近いうちにシングルブート環境でインストールしなおしてみようと思います。
そのためパーティションに関連するところは後日追記します。またベースシステムのみのインストールだけでは GUI 環境も日本語入力環境もありません。
解像度が WXGA (1366*768) ということもあり,色々と試しているところです。記事作成・更新時の環境
- CPU: Intel Celeron® N2830
- RAM: 4GB
- HDD: 500GB
- UEFI による WIndows 10 Home とのデュアルブート
Arch Linux について
1. 英語
2. 日本語
Arch Linux のインストール
インストールガイド - ArchWiki を参照しながら進めます。
1. インストールの準備
以下から ISO ファイルをダウンロードします。
以下を参考にインストールメディアを作成します。
1.1. 署名の検証
以下を参考に署名の検証を行います。
1.2. ライブ環境の起動
UEFI 設定画面から以下を確認します。
- Fast Boot: Disabled
- Launch CSM: Enabled
- Secure Boot: Disabled
Boot 関連のメニューからインストールメディアを選択し,ライブ環境を起動します。
最初は仮想端末に Root ユーザーでログインされ,Zsh のシェルプロンプトが表示されます。
1.3. キーボードレイアウト
デフォルトのキーボードレイアウトは US キーボードです。
利用可能なキーマップは以下のコマンドで確認できます。
# ls /usr/share/kbd/keymaps/**/*.map.gz日本語キーボードレイアウトに設定するには,以下を実行します。
# loadkeys jp1061.4. 起動モードの確認
以下を実行し UEFI モードで起動しているかどうかを確認します。
# ls /sys/firmware/efi/efivarsディレクトリが存在しない場合は UEFI モードで起動していません。
1.5. パーティション
【編集中】
1.6. パーティションのフォーマット
【編集中】
1.7. パーティションのマウント
【編集中】
1.8. インターネットへの接続
以下を実行し。ネットワークインターフェイスが認識・有効化されていることを確認します。
ワイヤレス LAN による接続 を行いますので,ワイヤレスデバイス名 (wlp2s0 など) を確認します。
# ip link以下を実行します。
[wlp2s0] と [MYSSID] と [PASSPHRASE] は適宜変更します。
# wpa_supplicant -B -D nl80211,wext -i [wlp2s0] -c <(wpa_passphrase [MYSSID] [PASSPHRASE]) # dhclient [wlp2s0]以下を実行し,接続を確認します。
# ping archlinux.org1.9. システムクロックの更新
以下を実行します。
# timedatectl set-ntp true2. インストール
2.1. ミラーの選択
# nano /etc/pacman.d/mirrorlist日本のミラーサーバーを最上位にします。
2.2. ベースシステムのインストール
以下を実行し,
baseパッケージとカーネルをインストールします。# pacstrap /mnt base base-devel linux nano後ほど AUR も使用しますので
base-develパッケージグループもインストールします。またテキストエディタが別途インストールが必要になったようですので
nanoを指定しておきます。3. システムの設定
3.1. fstabの生成
以下を実行し fstab を生成します。
# genfstab -U /mnt >> /mnt/etc/fstab3.2. chroot
新しくインストールしたシステムに
chrootします。# arch-chroot /mnt3.3. タイムゾーン
以下を実行し,タイムゾーンを設定します。
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime以下を実行し,ハードウェアクロックを設定します。
# hwclock --systohc --utcハードウェアクロックが UTC に設定されている場合,マシンにインストールされている他のオペレーティングシステムも UTC に設定 する必要があります。
Windows とのデュアルブート環境では Windows 側のレジストリを変更する必要があります。
3.4. ロケール
以下を実行します。
# nano /etc/locale.gen
en_US.UTF-8とja_JP.UTF-8をアンコメントし,以下を実行します。# locale-gen以下を実行し,ロケールを設定します。
# echo LANG=en_US.UTF-8 > /etc/locale.confインストール中はデフォルトの言語を英語としておきます。
デフォルトのキーボードレイアウトは US キーボードです。
日本語キーボードレイアウトに設定するには,以下を実行します。
# echo KEYMAP=jp106 > /etc/vconsole.conf3.5. ホストネーム
以下を実行し,ホストネーム (コンピュータ名) を設定します。
# echo [myhostname] > /etc/hostname同じホストネームを
/etc/hostsにも記述するため,以下を実行します。# nano /etc/hosts以下を記述します。
127.0.0.1 localhost ::1 localhost 127.0.1.1 [myhostname].localdomain [myhostname]3.6. ネットワーク設定
新しくインストールされた環境では,ネットワーク接続がデフォルトで有効になっていません。
ネットワーク接続に NetworkManager を使用します。
以下を実行します。
# pacman -S networkmanager dhcpcd # systemctl enable NetworkManager
chrootではnmtuiコマンドで作業をすることができません。インストールが完了して再起動した後に設定をします。
3.7. Initramfs
LVM も RAID も今回は使用していません。
3.8. Root パスワード
以下を実行し Root パスワードを設定します。
# passwd3.9. ブートローダーの設定
以下を実行し GRUB をインストールします。
# pacman -S grub efibootmgr # grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub # grub-mkconfig -o /boot/grub/grub.cfg3.10. 再起動
以下を実行し
chroot環境から抜け再起動します。# exit # umount -R /mnt # reboot一般ユーザーでログイン後に以下を実行し NetworkManager の設定をします。
# sudo nmtui一般的な推奨事項
1. システム管理
1.1. ユーザーとグループ
以下を実行し,一般ユーザーを追加します。
# useradd -m -G [additional_group] [username] # passwd [username]1.2. 管理者権限
visudoではデフォルトのエディターが vim なので一時的に nano に変更します。# EDITOR=nano visudo以下をアンコメントすることで
sudoがパスワードなしで使えるようになります。%wheel ALL=(ALL) NOPASSWD: ALL2. パッケージ管理
2.1. pacman
以下を実行し,パッケージを更新します。
# sudo pacman -Syu3. ブート
3.2. マイクロコード
以下を実行し, Intel のマイクロコードを更新します。
# pacman -S intel-ucode # grub-mkconfig -o /boot/grub/grub.cfg4. グラフィカルユーザーインターフェース
4.1. ディスプレイサーバー
4.2. ディスプレイドライバ
4.3. ディスプレイマネージャ
4.4. デスクトップ環境
4.5. ウインドウマネージャ
5. 電源管理
6. オーディオ/ビデオ
7. ネットワーク
8. 入力デバイス
9. 最適化
10. システムサービス
11. 外観
11.1. フォント
11.2. GTK と Qt のテーマ
12. コンソール環境改善
- 投稿日:2019-11-02T15:49:12+09:00
#Mac の ターミナル や #iTerm で HTTPS / HTTP プロクシから Webサイトに接続する ( サーバーに #ssh 接続して SOCKS proxy を立てる ) ( #bash #linux )
ssh コマンド で SOCKS proxy を起動しておく
例
ssh -vND 8888 user@xxx.xxx.xxx.xxxssh -vND 8888 user@xxx.xxx.xxx.xxx -i ~/.ssh/some.pem環境変数で HTTPS proxy を指定する
export HTTPS_PROXY=socks://127.0.0.1:8888こちらもお好みで
export HTTP_PROXY=socks://127.0.0.1:8888自分のIPをcurlコマンドで確認してみる
環境情報確認サイト「確認くん」を使ってみる。
昔からお世話になってます!
$ export HTTPS_PROXY=
$ https://httpbin.org/ip
{
"origin": "YYY.YYY.YYY.YYY, YYY.YYY.YYY.YYY"
}
プロクシを利用しない設定にして自分のIPアドレスを確認する
$ export HTTPS_PROXY= $ https://httpbin.org/ip { "origin": "ZZZ.ZZZ.ZZZ.ZZZ, ZZZ.ZZZ.ZZZ.ZZZ" }切り替えできていたら成功!
設定を保存する
~/.bash_profile ~/.bashrc ~/.zshrc などのプロフィールファイルに export コマンドを書いておけばok
NOTE
なぜかこちらの方法だと反映されなかった。
curl httpbin.org/ip関連
Mac OS で ssh サーバーを踏み台にして SOCK プロクシ経由で Web ページにアクセスする例 ( #Mac #ssh ) - Qiita
Original by Github issue
- 投稿日:2019-11-02T14:45:37+09:00
メモリが足りない?Swapファイルを作ってみたら?
メモリが足りない...
検証用にAWSでLinuxインスタンス(t2.micro, memory=1GB)上で、Composerインストールしようとしたら...
composer require predis/predisえっ、メモリが足りない...。
出力.Using version ^1.1 for predis/predis ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) mmap() failed: [12] Cannot allocate memory mmap() failed: [12] Cannot allocate memory mmap() failed: [12] Cannot allocate memory PHP Fatal error: Out of memory (allocated 680185856) (tried to allocate 14952775 bytes) in phar:///usr/local/bin/composer/src/Composer/Util/RemoteFilesystem.php on line 451 Fatal error: Out of memory (allocated 680185856) (tried to allocate 14952775 bytes) in phar:///usr/local/bin/composer/src/Composer/Util/RemoteFilesystem.php on line 451インスタンスのサイズを大きくすれば解決するのだろうが、面倒だしコストもかかる。
Swapファイルを作ってみる
Swapファイルとはなんぞや
スワップファイル (swap file)とは、使っていないメモリの内容を一時的にしまっておくためのファイルです。(参考3)
メモリの現状確認
-mはメガバイト単位で出力します。$ free -m total used free shared buff/cache available Mem: 985 233 70 0 682 593 Swap: 0 0 0Swap用のファイルを作成
ddコマンドは、コピーコマンドのようなものらしいです。
例えば、「インストールメディアなどをISOイメージとして保存する」のために使ったりするらしい(昔の情報)。「dd bs=バイト数 count=個数 if=/dev/zero of=ファイル」で、「バイト数×個数」分のサイズのファイルを作成できる。例えば、「dd bs=100 count=1 if=/dev/zero of=file1」なら「file1」という名前の、全てNULL文字で埋まった100バイトのファイルを作成する。
1M x 1024 = 1000MiB のファイルを作ってみる。
$ sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024 1024+0 レコード入力 1024+0 レコード出力 1073741824 バイト (1.1 GB) コピーされました、 14.2801 秒、 75.2 MB/秒Swapファイルとして初期化する
$ sudo /sbin/mkswap /var/swap.1 mkswap: /var/swap.1: パーミッション 0644 は安全な値ではありません。 0600 をお勧めします。 スワップ空間バージョン 1 を設定します。サイズ = 1024 MiB (1073737728 バイト) ラベルはありません, UUID=6b6561f4-6a4d-4384-900c-8d5747ca144aひとまず警告は無視。
Swapファイルを有効化する
$ sudo /sbin/swapon /var/swap.1 swapon: /var/swap.1: パーミッション 0644 は安全な値ではありません。 0600 をお勧めします。メモリの確認
$ free -m total used free shared buff/cache available Mem: 985 192 700 0 92 667 Swap: 1023 43 980おっ、Swap領域が増えてる。この後、
composer require成功して、少し感動しました。翌日、再度メモリを確認してみるとSwapの部分は0バイトになっていたので、これは一時的なSwap領域だと思います。永続的にSwapファイルを作成する方法もあるかと思うので、気になる方は調べてみてください。
参考
- 投稿日:2019-11-02T14:45:37+09:00
メモリが足りない?Swapファイルを作ってみたら
メモリが足りない...
検証用にAWSでLinuxインスタンス(t2.micro, memory=1GB)上で、Composerインストールしようとしたら...
composer require predis/predisえっ、メモリが足りない...。
出力.Using version ^1.1 for predis/predis ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) mmap() failed: [12] Cannot allocate memory mmap() failed: [12] Cannot allocate memory mmap() failed: [12] Cannot allocate memory PHP Fatal error: Out of memory (allocated 680185856) (tried to allocate 14952775 bytes) in phar:///usr/local/bin/composer/src/Composer/Util/RemoteFilesystem.php on line 451 Fatal error: Out of memory (allocated 680185856) (tried to allocate 14952775 bytes) in phar:///usr/local/bin/composer/src/Composer/Util/RemoteFilesystem.php on line 451インスタンスのサイズを大きくすれば解決するのだろうが、面倒だしコストもかかる。
Swapファイルを作ってみる
Swapファイルとはなんぞや
スワップファイル (swap file)とは、使っていないメモリの内容を一時的にしまっておくためのファイルです。(参考1)
メモリの現状確認
-mはメガバイト単位で出力します。$ free -m total used free shared buff/cache available Mem: 985 233 70 0 682 593 Swap: 0 0 0Swap用のファイルを作成
ddコマンドは、コピーコマンドのようなものらしいです。
例えば、「インストールメディアなどをISOイメージとして保存する」のために使ったりするらしい(昔の情報)。「dd bs=バイト数 count=個数 if=/dev/zero of=ファイル」で、「バイト数×個数」分のサイズのファイルを作成できる。例えば、「dd bs=100 count=1 if=/dev/zero of=file1」なら「file1」という名前の、全てNULL文字で埋まった100バイトのファイルを作成する。
1M x 1024 = 1000MiB のファイルを作ってみる。
$ sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024 1024+0 レコード入力 1024+0 レコード出力 1073741824 バイト (1.1 GB) コピーされました、 14.2801 秒、 75.2 MB/秒Swapファイルとして初期化する
$ sudo /sbin/mkswap /var/swap.1 mkswap: /var/swap.1: パーミッション 0644 は安全な値ではありません。 0600 をお勧めします。 スワップ空間バージョン 1 を設定します。サイズ = 1024 MiB (1073737728 バイト) ラベルはありません, UUID=6b6561f4-6a4d-4384-900c-8d5747ca144aひとまず警告は無視。
Swapファイルを有効化する
$ sudo /sbin/swapon /var/swap.1 swapon: /var/swap.1: パーミッション 0644 は安全な値ではありません。 0600 をお勧めします。メモリの確認
$ free -m total used free shared buff/cache available Mem: 985 192 700 0 92 667 Swap: 1023 43 980おっ、Swap領域が増えてる。この後、
composer require成功して、少し感動しました。翌日、再度メモリを確認してみるとSwapの部分は0バイトになっていたので、これは一時的なSwap領域だと思います。永続的にSwapファイルを作成する方法もあるかと思うので、気になる方は調べてみてください。
参考
- 投稿日:2019-11-02T14:22:17+09:00
Linux入門 〜コンピュータシステムのハードウェアの概要とLinuxの主な機能とその仕組みの概要〜
概要
こちらの入門監視まとめに続き、初めてのサービスの公開にあたってLinuxの基礎知識を学び、APIサーバに障害が起きた時にサーバ内で何が起こっているのか、どう対処すればいいのかを判断できるようにするために、この記事ではコンピュータシステムのハードウェア構成の概要とプログラムの構成単位、Linuxの主な機能とその仕組みの概要についてまとめました。別の記事で各Linuxの機能であるプロセスやメモリ管理の仕組みの詳細についてまとめます。
コンピュータシステムの概要
コンピュータシステムのハードウェア構成
コンピュータは主に下のような手順を繰り返すことで様々な処理を行います。
- 入力デバイス、ネットワークアダプタを介してコンピュータにある処理の実行を依頼する
- CPUはメモリから命令を読み出して実行し、結果をメモリ上のデータ保存領域に書き込む
- CPUはメモリ上に書き込んだ処理結果をハードディスクやSSDなどのストレージに保存したり、ネットワークを通して外部のシステムに送信したり出力デバイスを通して人に通知したりする
上の1~3のような手順を繰り返してユーザーにとって意味のある1つの処理にまとめたものをプログラムといいます。プログラムの種類として大きく分けて、OS、ミドルウェア、アプリケーションがあります
プログラムの構成単位
OSは各種プログラムをプロセスという単位で実行する。各プログラムは1つ又は複数のプロセスから構成されます。
OS(Linux)の機能
上で説明したOSの機能として以下のようなものがあります
プロセス管理
プロセススケジューラ
メモリ管理
ファイルシステムの実現
デバイス操作例:デバイスの操作
LinuxのOSの一つの機能としてデバイス操作のためにデバイスドライバという共通のインターフェースを提供しています。
こうすることで開発者がここのデバイスの仕様について一つ一つ理解することなく共通のインターフェースを操作することで様々なデバイスを扱えるような仕組みを実現しています。さらに、複数のプロセスが同時にデバイスを操作することで予期せぬ動作をするのを防ぐために、デバイスドライバを介して制御しています。
上図のように、ユーザーモードとカーネルモードという二つのモードによってより低レイヤーの処理を保護する仕組みになっています。カーネルモードを動作させるためにはユーザーモードからシステムコールを介して呼ぶ仕組みになっています。
デバイス操作以外にも、プロセス管理、プロセススケジューラ、メモリ管理などもこのようにユーザーモードとカーネルモードとの共同によって実現されています(カーネルモードで動作するOSの核となる処理をまとめたプログラムをカーネルと言います)まとめ
コンピュータというハードウェがどのようにして外部から処理命令を受付けてそれを内部で実行するかの大まかな内容についてまとめ、プログラムの構成単位、そしてそのプログラムによって実現するLinuxの主な機能の紹介とそのうちの一つであるデバイスの操作の仕組みの概要についてまとめました。この概念の理解を元に、Linuxのメイン機能のプロセス管理やメモリ管理についての詳細を次の記事以降でみていきたいと思います。
参考






