20201118のLinuxに関する記事は11件です。

-bash: ./{file name}.sh: /usr/bin/bash: bad interpreter: No such file or directory

初めてシェルスクリプトを作成して実行したみたところ、エラーが出たのでメモ。

作成したシェルスクリプト

スクリプトファイルを作成。

$ touch script.sh

作成していたスクリプトは以下。
Helloを表示するだけの単純なスクリプト。

#!/usr/bin/bash
echo Hello

実行

実行すると、

$ ./script.sh

エラーが出る

-bash: ./script.sh: /usr/bin/bash: bad interpreter: No such file or directory

対処法

指定しているbashが異なっていることが原因なため、使用しているbashをwhich bashで確認。
ここで使われていたのは/bin/bashだった。

$ which bash
/bin/bash

スクリプトの中身を以下のように修正すると実行できた。

#!/bin/bash
echo Hello

初心者で初記事で理解が及んでいませんがとりあえず。
間違っている等あれば教えてください。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ESXi6.7でCentOS8をインストールしてみた

仮想マシン作成~ログインまでの手順。

1.仮想マシン作成

ESXiで作成しました。

ゲストOS設定

互換性 ゲストOSファミリ ゲストOSバージョン
ESXi6.7 仮想マシン Linux CentOS8

仮想マシン設定

CPU メモリ ハードディスク プロビジョニング
1 2GB 16GB シンプロビジョニング

2.OSインストール

電源オン&インストール開始

作成した仮想マシンの電源をオンにすると、コンソールにインストールメニューが現れました。モノクロの画面がカッコいいです。
デフォルトでは上から2番目が選択されてますが、1番目の方が早いので1番上の「Install CentOS Linux 8」を選択します。
FlowTime_8

このあと画面を眺めていると緑色の [OK] がめっちゃいっぱい流れていきました。
OKみたいでよかったです。

言語設定

続いては言語設定です。日本人なので日本語を選択。
FlowTime_8

インストール概要

そのあとはインストール概要という画面が出てきました。
こちらは設定後の画面なので、どのように設定したか下に書いていきます。
設定項目は3つです。
FlowTime_8

①ソフトウェアの選択

ここを間違えると思ってたのとだいぶ違う仮想マシンになってしまいます。(何回もやらかした)
今回はCUIのサーバを作りたいので、「最小限のインストール」を選択しました。
選択した後は左上の[完了]をクリックして元の画面に戻ります。
FlowTime_8

②デバイスの選択

今回はこだわりがなかったのでデフォルトのまま。
FlowTime_8

③地域設定

やらなくてもいい気もする。
気になったので一応東京に設定しました。

①~③を設定したら、右下の[インストールの開始]をクリックします。

rootパスワードの設定

ここまでくればゴールは目の前です。
進捗の青いバーがすくすくと伸びていく様子を温かい目で見守りつつ、rootパスワードを設定。
FlowTime_8

3.再起動&ログイン

青いバーが伸び切ると、[再起動]のボタンが出てきたのでクリックします。
急に電源オフになってもビビらないことが大切。
FlowTime_8

再起動後はこんな画面がでてきました。一番上を選択します。
FlowTime_8

少し待ってログイン画面がでてきました。
User : root
password : <先ほど設定したrootパスワード>
を入力すると・・・
FlowTime_8

やったー!ログインできました!
FlowTime_8

4.初期設定

この後の初期設定については別の投稿にまとめます。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux PATH環境変数

【Linux PATH環境変数】

PATH環境変数

PATH環境変数とは、使用したいコマンドのパスを保持する変数

コマンドを実行するとPATH環境変数に登録された場所をもとに検索、ファイルが該当すると実行される。

・whichコマンド

指定されたコマンドがどのディレクトリに格納されているか、PATH環境変数で指定されたディレクトリパスをもとに探す
→指定されたコマンドは、完全パスで表示

・findコマンド

特定のディレクトリを指定し、ファイルやディレクトリを探す
→PATH環境変数に指定されたディレクトリ以外にあるコマンドを探すことも可能

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux プロセス

【Linux プロセス】

2つのプロセス

実ユーザID(real user ID)は、プロセスを起動したユーザ、プロセスの所有者

実効ユーザID(effective user ID)は、プロセスが実行された時に権限を持つユーザ
(カーネルは、プロセスの実行権限を実効ユーザID、実効グループIDで判断する)

SUIDとSGID

SUID(Set User ID)は、どのユーザが実行しても、実効ユーザIDがファイル所有者ID
パーミッションに「4000」または、所有者(u)+「s」を付与

例)/usr/bin/passwd

SGID(Set Group ID)は、ファイルのグループIDが実効グループID
パーミッションに「2000」または、グループ(g)+「s」を付与

※SGIDが設定されたディレクトリ以下でファイルやディレクトリを作成すれば、SGIDが設定されたディレクトリのグループが引き継がれて設定される。

スティッキービット

スティッキービットが、設定されたディレクトリ以下のファイルとディレクトリは、実際のアクセス権に関係なく、所有者とrootユーザのみ名前の変更と削除が可能
chmodコマンドで指定する場合、「1000」または、その他のユーザ(o)+「t」を付与

問)スティッキービットが、一般的に設定されているディレクトリは?(既に設定済)
答)/tmp

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Linux】DockerでApacheコンテナ起動

はじめに

DockerでApacheコンテナ起動までの流れをメモ

環境情報

  • OS:Redhat 7.7
  • Docker:19.03.6-ce
  • docker-compose:1.27.4
  • apache:2.4.46

docker-compose.yml設定

version: '3'

services:
  apache:
    build: apache
    container_name: apache
    ports:
      - 80:80
    volumes:
      - ./apache/conf/httpd.conf:/usr/local/apache2/conf/httpd.conf

Dockerfile設定

apache

FROM httpd:latest

RUN apt update \
    && apt install -y \
    git \
    gcc \
    make \
    build-essential \
    wget \
    curl \
    llvm \
    xz-utils \
    tk-dev \
    zlib1g-dev \
    libncurses5-dev \
    libbz2-dev \
    libreadline-dev \
    libsqlite3-dev \
    libssl-dev \
    libxml2-dev \
    libxmlsec1-dev \
    liblzma-dev \
    libpq-dev \
    libffi-dev

WORKDIR /usr/local/apache2

apacheコンテナの起動

docker-compose up -d apache
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Linux】Dockerのapacheで自己認証局を作成

はじめに

DockerのApacheで自己認証局を作成する方法をメモ

環境情報

  • OS:Redhat 7.7
  • Docker:19.03.6-ce
  • docker-compose:1.27.4
  • apache:2.4.46

apacheコンテナの起動

apacheコンテナ作成までの流れは下記を参照
【Linux】DockerでApacheコンテナ起動

CA証明書/秘密鍵を作成

apacheコンテナに入り、自己証明書を作成

  • ca_cert.pem:自己署名CA証明書
  • ca_key.pem:自己署名CA証明書の秘密鍵
openssl req -new -x509 -sha256 -newkey rsa:2048 -out ca_cert.pem -keyout ca_key.pem -days 365

CA証明書の秘密鍵パスワード削除

  • ca_key_del_pass.pem:自己署名CA証明書の秘密鍵(パスワード削除)
openssl rsa -in ca_key.pem -out ca_key_del_pass.pem

サブジェクト代替名ファイルを作成

  • subjectAltName.txt:サブジェクト代替名ファイル
subjectAltName = DNS:【DNS】, IP:【IP】

自己証明書の秘密鍵を作成

  • server.key:自己証明書の秘密鍵
openssl genrsa 2048 > server.key

自己証明書の公開鍵を作成

  • server.csr:自己証明書の公開鍵
openssl req -new -sha256 -key server.key > server.csr

自己証明書の公開鍵を自己署名CA証明書と自己署名CA証明書の秘密鍵を使用して署名し、デジタル証明書を作成

  • server.crt:デジタル証明書
openssl x509 -req -sha256 -days 365 -CAcreateserial -in server.csr -CA ca_cert.pem -CAkey ca_key_del_pass.pem -out server.crt -extfile subjectAltName.txt

PEMからDERに変換

ブラウザに取り込む際はDER形式に変換

openssl x509 -inform PEM -outform DER -in cacert.pem -out cacert.cer

docker-compose.yml修正

・作成した自己証明書をvolumesに追加
・portsに「443」を追加

version: '3'

services:
  apache:
    build: apache
    container_name: apache
    ports:
      - 80:80
      - 443:443 <==追加
    volumes:
      - ./apache/conf/httpd.conf:/usr/local/apache2/conf/httpd.conf
      - ./apache/conf/server.crt:/usr/local/apache2/conf/server.crt <==追加
      - ./apache/conf/server.key:/usr/local/apache2/conf/server.key <==追加

各種ファイルの設定

./apache/conf/httpd.conf

・・・
LoadModule ssl_module modules/mod_ssl.so <==追加
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so <==追加

・・・
↓↓↓↓↓↓↓↓↓↓追加↓↓↓↓↓↓↓↓↓↓
Include conf/extra/httpd-ssl.conf
<IfModule ssl_module>
  SSLRandomSeed startup builtin
  SSLRandomSeed connect builtin
</IfModule>
↑↑↑↑↑↑↑↑↑↑追加↑↑↑↑↑↑↑↑↑↑

apacheコンテナの最新化

docker-compose up -d apache

HTTPS接続が可能になっていればOK
https://localhost
※ ドメイン名は適宜変更

参考

Linux Memo/ApacheでSSL自己認証するための簡単な方法(サーバ認証)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Linux】DockerのApacheで自己認証局で署名した自己証明書を作成

はじめに

DockerのApacheで自己認証局を作成し、自己証明書を作成する方法をメモ

環境情報

  • OS:Redhat 7.7
  • Docker:19.03.6-ce
  • docker-compose:1.27.4
  • apache:2.4.46

apacheコンテナの起動

apacheコンテナ作成までの流れは下記を参照
【Linux】DockerでApacheコンテナ起動

docker-compose up -d apache

CA証明書/秘密鍵を作成

apacheコンテナに入り、自己証明書を作成

  • ca_cert.pem:自己署名CA証明書
  • ca_key.pem:自己署名CA証明書の秘密鍵
openssl req -new -x509 -sha256 -newkey rsa:2048 -out ca_cert.pem -keyout ca_key.pem -days 365

CA証明書の秘密鍵パスワード削除

  • ca_key.pem:自己署名CA証明書の秘密鍵
  • ca_key_del_pass.pem:自己署名CA証明書の秘密鍵(パスワード削除)
openssl rsa -in ca_key.pem -out ca_key_del_pass.pem

サブジェクト代替名ファイルを作成

  • subjectAltName.txt:サブジェクト代替名ファイル
subjectAltName = DNS:【DNS】, IP:【IP】

自己証明書の秘密鍵を作成

  • server.key:自己証明書の秘密鍵
openssl genrsa 2048 > server.key

自己証明書の公開鍵を作成

  • server.key:自己証明書の秘密鍵
  • server.csr:自己証明書の公開鍵
openssl req -new -sha256 -key server.key > server.csr

自己証明書の公開鍵を自己署名CA証明書と自己署名CA証明書の秘密鍵を使用して署名し、デジタル証明書を作成

  • server.csr:自己証明書の公開鍵
  • ca_cert.pem:自己署名CA証明書
  • ca_key_del_pass.pem:自己署名CA証明書の秘密鍵(パスワード削除)
  • server.crt:デジタル証明書
openssl x509 -req -sha256 -days 365 -CAcreateserial -in server.csr -CA ca_cert.pem -CAkey ca_key_del_pass.pem -out server.crt -extfile subjectAltName.txt

PEMからDERに変換

ブラウザに取り込む際はDER形式に変換

openssl x509 -inform PEM -outform DER -in cacert.pem -out cacert.cer

docker-compose.yml修正

・作成した自己証明書をvolumesに追加
・portsに「443」を追加

version: '3'

services:
  apache:
    build: apache
    container_name: apache
    ports:
      - 80:80
      - 443:443 <==追加
    volumes:
      - ./apache/conf/httpd.conf:/usr/local/apache2/conf/httpd.conf
      - ./apache/conf/server.crt:/usr/local/apache2/conf/server.crt <==追加
      - ./apache/conf/server.key:/usr/local/apache2/conf/server.key <==追加

各種ファイルの設定

./apache/conf/httpd.conf

・・・
LoadModule ssl_module modules/mod_ssl.so <==追加
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so <==追加

・・・
↓↓↓↓↓↓↓↓↓↓追加↓↓↓↓↓↓↓↓↓↓
Include conf/extra/httpd-ssl.conf
<IfModule ssl_module>
  SSLRandomSeed startup builtin
  SSLRandomSeed connect builtin
</IfModule>
↑↑↑↑↑↑↑↑↑↑追加↑↑↑↑↑↑↑↑↑↑

apacheコンテナの最新化

docker-compose up -d apache

ブラウザにSSL証明書を取り込む

下記に従って「cacert.cer」を取り込む
SSL証明書をインポート

動作確認

HTTPS接続が可能になっていればOK
https://localhost
※ ドメイン名は適宜変更

参考

Linux Memo/ApacheでSSL自己認証するための簡単な方法(サーバ認証)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

サイバー脅威情報集約システム(EXIST)とMalware Information Sharing Platform(MISP)の構築のまとめ②

はじめに

  • 元同僚から面白そうなOSSを教えてもらったので調べがてら構築をしてみた.
  • ここでは構築する際にトラブった箇所や手順などをまとめていく感じです.
  • ALL-in-One方式で構築した際、取得したデータサイズのせいかDiskFull-->LVM追加でミスって-->VMクラッシュという楽しい目にあったため個別での構築としています.
  • 3部構成(共通部分/EXIST/MISP)で記事を書く予定です.

1.前提

  • Windows10pro Hyper-Vを利用し以下条件のもと構築を行っております.(共通)
    • お好みでVMwareやvBOXをお使いください
  • OSはCentOS7の最新版を利用しそれぞれ別VMで構築とする.(共通)
    • 検証環境下ではCentOS8自体の挙動が不安定だったので別途原因究明が必要と考えCentOS7を選択
  • 構築時のアカウントはすべてrootアカウントで実施.(共通)
  • VMのリソースはvCPU:2core,mem:8GB,DISK:50GB,Network:IPアドレスはDHCPでMACアドレス登録して固定配布.(共通)
    • 稼働するとメモリ使用量は平均6GB
    • DISKは20GBで100%超えてしまったため、50GBにしております
  • pyenvを使用しPython ver3.6.xをインストール.(EXIST)
    • Verison3.7以降だと指定PackageのVersionではエラーが発生するため
    • venvを使わずに構築していきますが、インストールだけはしておきます
  • git:Verは2.29.x(現時点で最新のもの)とする.(共通)
    • 2.x台であればなんでもよいかと
  • wget/curl/tmux/htopなど適宜インストール.
    • 不要な人はスルーでもOK
  • FirewallやSElinuxは自己責任のもと無効にしてください.(共通)
    • Firewallではのちに8000ポートの開放を手順に入れております
    • SElinuxは土下座してdisabledにしております

2.OSS製品のドキュメント

サイバー脅威情報集約システム(EXIST)
Malware Information Sharing Platform(MISP)

3.構築内容

  • pyenv
  • サイバー脅威情報集約システム(EXIST)

3-1.pyenvのインストール

今回の目的を考えた場合、pyenvでやる必要性はないと思うが今後のアップデートを考慮してこちらでいくこととする.

# git clone https://github.com/pyenv/pyenv.git
Cloning into 'pyenv'...
remote: Enumerating objects: 18376, done.
remote: Total 18376 (delta 0), reused 0 (delta 0), pack-reused 18376
Receiving objects: 100% (18376/18376), 3.67 MiB | 2.80 MiB/s, done.
Resolving deltas: 100% (12514/12514), done.

# 今回は不要かも
# git clone https://github.com/pyenv/pyenv-virtualenv.git pyenv/plugins/pyenv-virtualenv
Cloning into 'pyenv/plugins/pyenv-virtualenv'...
remote: Enumerating objects: 2064, done.
remote: Total 2064 (delta 0), reused 0 (delta 0), pack-reused 2064
Receiving objects: 100% (2064/2064), 580.34 KiB | 753.00 KiB/s, done.
Resolving deltas: 100% (1413/1413), done.

# pyenvのPATHの設定
# vim ~/.bash_profile
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:/bin:$PATH"
eval "$(pyenv init -)"

# ログイン中のアカウントへ上記設定の反映
# source ~/.bash_profile

# 指定のVersionをインストール
# pyenv install 3.6.12
Downloading Python-3.6.12.tar.xz...
-> https://www.python.org/ftp/python/3.6.12/Python-3.6.12.tar.xz
Installing Python-3.6.12...
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?
Installed Python-3.6.12 to /root/.pyenv/versions/3.6.12

# 任意のVersionをシステムへ反映
# pyenv global 3.6.12

# 反映の確認
# python --version

# pipコマンドのアップデート(しないとあとでエラーがでます)
# pip install --upgrade pip
pip 18.1 from /root/.pyenv/versions/3.6.12/lib/python3.6/site-packages/pip (python 3.6)
[root@exist opt]# pip install --upgrade pip
Collecting pip
  Downloading https://files.pythonhosted.org/packages/cb/28/91f26bd088ce8e22169032100d4260614fc3da435025ff389ef1d396a433/pip-20.2.4-py2.py3-none-any.whl (1.5MB)
    100% |################################| 1.5MB 7.5MB/s
Installing collected packages: pip
  Found existing installation: pip 18.1
    Uninstalling pip-18.1:
      Successfully uninstalled pip-18.1
Successfully installed pip-20.2.4

余談:pyenv以外でやる場合は以下の方法で(現状ver3.8.6がインストールされる模様)

# yum install python3 python3-libs python3-devel python3-pip
=====================================================================================================================
 Package                             Arch                Version                             Repository         Size
=====================================================================================================================
Installing:
 python3                             x86_64              3.6.8-17.el7                        base               70 k
 python3-devel                       x86_64              3.6.8-17.el7                        base              217 k
 python3-libs                        x86_64              3.6.8-17.el7                        base              6.9 M
 python3-pip                         noarch              9.0.3-8.el7                         base              1.6 M
Installing for dependencies:
 dwz                                 x86_64              0.11-3.el7                          base               99 k
 libtirpc                            x86_64              0.2.4-0.16.el7                      base               89 k
 perl-srpm-macros                    noarch              1-8.el7                             base              4.6 k
 python-rpm-macros                   noarch              3-34.el7                            base              9.1 k
 python-srpm-macros                  noarch              3-34.el7                            base              8.8 k
 python3-rpm-generators              noarch              6-2.el7                             base               20 k
 python3-rpm-macros                  noarch              3-34.el7                            base              8.1 k
 python3-setuptools                  noarch              39.2.0-10.el7                       base              629 k
 redhat-rpm-config                   noarch              9.1.0-88.el7.centos                 base               81 k
 zip                                 x86_64              3.0-11.el7                          base              260 k

Transaction Summary
=====================================================================================================================
Install  4 Packages (+10 Dependent packages)

3-2.EXISTのインストール

  • インストール先は「/opt/」を前提としスクリプトでインストールしていきます.
# cd ~/
# git clone https://github.com/r4sd/exist_auto_install.git
Cloning into 'exist_auto_install'...
remote: Enumerating objects: 24, done.
remote: Counting objects: 100% (24/24), done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 24 (delta 6), reused 20 (delta 5), pack-reused 0
Receiving objects: 100% (24/24), 6.83 KiB | 3.42 MiB/s, done.
Resolving deltas: 100% (6/6), done.

#
# cd exist_auto_install/
# . exist_install.sh
[info] Repository file successfully written to /etc/yum.repos.d/mariadb.repo
[info] Adding trusted package signing keys...
[info] Successfully added trusted package signing keys
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Including mirror: ftp.tsukuba.wide.ad.jp
Including mirror: ftp.jaist.ac.jp
Including mirror: ftp.iij.ad.jp
Including mirror: ftp.yz.yamagata-u.ac.jp
Including mirror: ftp.nara.wide.ad.jp
 * base: ftp.tsukuba.wide.ad.jp
Including mirror: ftp.ne.jp
Including mirror: ftp.yz.yamagata-u.ac.jp
 * elrepo: ftp.ne.jp
Including mirror: ftp.yz.yamagata-u.ac.jp
 * epel: ftp.yz.yamagata-u.ac.jp
Including mirror: ftp.tsukuba.wide.ad.jp
Including mirror: ftp.jaist.ac.jp
Including mirror: ftp.iij.ad.jp
   |
   |
    省略
   |
   |
Nothing to do

------------------------------------------------
Please execute [ systemctl start exist.service ]


Admin (root) DB Password: [乱数]
User (exist) DB Password: [乱数]

#
# systemctl start exist.service

4.サイトへアクセス

  • ブラウザからhttp://[サーバのIPアドレス:8000]へアクセス. exist.png

5.さいごに

  • 手動インストールだと煩雑(慣れたけど)なためスクリプトを準備したが、細かいところでトラブり作成に1日以上費やしてしまいました.
  • おかげかコードの簡略化や連携部分の理解が深まり結果OKな感じとなっております(´ω`)
  • 次はMISPの構築ですがその前にAPIの登録などをまとめて追加or2.5でUPかな.

6.参考サイト/多謝

nict-csl/exist
サイバー脅威情報集約システム EXIST を構築する
NICTのEXISTをインストールしてみた
社内でSOC構築してみた③ #EXIST構築編
MISP
vodkappa/misp-install-centos-7
EXPECT
MariaDB 10.4.1〜のユーザー認証がカオスな話
Mins/mysql_secure.sh

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

crontabでコマンドを定期実行する

cronとは

unix系OS(CentOS、Ubuntuなど)で使えるプロセス(≒機能)。
主に決まった時間に定期実行したいプログラムを動かすために使う。

設定方法

$ crontab -e

viエディタが立ち上がるので、以下のルールに従って記述

分 時 日 月 曜日 ユーザー名 コマンド
*  *  *  *  * root some_command
指定対象 指定範囲
0〜59
0〜23
1〜31
1〜12 または jan〜dec
曜日 0〜7 または sun〜sat
記述例
# 1分ごと
* * * * * root touch /home/ubuntu/test.txt

# 1:00〜1:59まで1分ずつ実行
* 1 * * * root touch /home/ubuntu/test.txt

# 毎日1:00に実行
0 1 * * * root touch /home/ubuntu/test.txt

# 毎月12日~20日00:00に実行
0 0 12-20 * * root touch /home/ubuntu/test.txt

# 毎週月曜日〜金曜日00:00に実行
0 0 * * 1-5 root touch /home/ubuntu/test.txt

オプション

# 設定されているcronを表示する
$ crontab -l 
# 全てのcronを削除、-eオプションと押し間違えないように注意
$ crontab -r

参考

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Ubuntu20.04LTS と Windows10 のデュアルブートで Intel RST(Rapid Storage Technology) が邪魔した時の対策

はじめに

新しいWindows搭載ノートPCを購入し,「さぁ,Ubuntu入れてデュアルブートにするぞー!」と意気込み早速インストール.
すると,「Turn off RST」の警告と QR コードが出現.
最初は「まぁ,適当に緑のボタン押せばええやろ!」と思い,何も考えずRestartボタンを.
するとエラーが発生.
Ubuntuのインストールに失敗.

「しかたない」と Intel RST を BIOS でオフに.
すると Ubuntu のインストールには成功したものの,今度は Windows が起動しない!

「なんだこれは!!!」
試行錯誤したのち Windows が壊れたのか仕方なく工場出荷状態に戻す羽目に。。。
買ったばかりの PC だったのでなくなって困るデータもなく,事なきを得たのですが,これによりデュアルブートをあきらめかけました.

しかし,下記 URL に同じ状況に陥り助けを求めている方を発見.
https://askubuntu.com/questions/1233623/workaround-to-install-ubuntu-20-04-with-intel-rst-systems
この回答に書いてある内容を再現したら,RST をOffにした状態で Windows が通常通り起動!
つまり,Windows と Ubuntu のデュアルブートに成功!

同じ状況に遭遇し,Windows と Ubuntu のデュアルブートをあきらめる方もいるのではないかと思い,日本語で僕がやった対策をここに記録します.

詳細情報

PC: Dell XSP15 9500
CPU: Intel Core i7-10750H
RAM: 16GB
GPU: Nvidia GTX 1650Ti
Storage: SSD1 512GB(Windows10), SSD2 512GB(Ubuntu 20.04LTS)

注意事項

Windows を破損させたくない方はリカバリーメディアを作っておくことを推奨します.
僕の環境では下記作業中その必要はありませんでしたが,万が一があるので.
作っておいて損はないので是非!
また,データのバックアップもしておくことを強くお勧めします.

作業内容

このURLに書いてあることを実行します.
http://triplescomputers.com/blog/uncategorized/solution-switch-windows-10-from-raidide-to-ahci-operation/

  1. Windows でコマンドプロンプトを管理者権限で起動
  2. 次のコマンドを入力bcdedit /set {current} safeboot minimalこれでエラーが出たらbcdedit /set safeboot minimal
  3. PC を再起動,BIOS で RST をオフに(これについては次のURLを参照:http://pineplanter.moo.jp/non-it-salaryman/2020/06/25/ubuntu-in-lenovo/)
  4. Windows をいつも通り起動(ここでセーモードが起動する.)
  5. セーフモードの状態でコマンドプロンプトを管理者権限で起動
  6. 次のコマンドを入力 bcdedit /deletevalue {current} safebootこれでエラーが出たらbcdedit /deletevalue safeboot
  7. 再起動(これで,Windows は通常起動する.)

以上の作業で Windows が通常起動したら,後はいつもどおり Ubuntu をインストールするだけ.

まとめ

本件では,Windows10 と Ubuntu20.04LTS のデュアルブートの方法について,Intel RST が邪魔した際の解決方法の1つを紹介しました.

これですべての場合において上述の問題が解決するかはわかりませんが,試す価値はあると思います.
ただし,最悪の場合,プリインストールされている Windows の破損にもつながるかもしれないのでリカバリー対策とデータのバックアップはした上で,あくまで自己責任でよろしくお願いします!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【メモ】DockerでCentOS8の環境をかんたんに作る

Macの環境でLinuxの勉強をしたい場合に、環境を簡単に作る方法のメモ。

環境

  • macOS Catalina バージョン10.15.7
  • Docker version 19.03.13

コマンド

# Dockerイメージをpull
docker pull centos:8
docker images | grep centos

# コンテナを起動
docker run -it -d --name centos8 centos:8
docker ps | grep centos

## コンテナ内に入る
docker exec -it centos8 /bin/bash
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む