CentOS7初期化スクリプト: [2020年5月8日09:09:54]
#! /bin/bash
# @ Desc:Centos7インストール後の初期化スクリプト
# @ Author: WeiyiGeek
# @ Time:2020年5月6日11:04:42
# @ Version:1.0
echo -e "\e[32m#########\n#ネットワークカードの構成\n##########\e[0m"
sed -i 's/ONBOOT=no/ONBOOT=yes/g'/etc/sysconfig/network-scripts/ifcfg-ens192
sed -i 's/BOOTPROTO=dhcp/BOOTPROTO=static/g'/etc/sysconfig/network-scripts/ifcfg-ens192
sed -i 's/BOOTPROTO=\"dhcp\"/BOOTPROTO=\"static\"/g'/etc/sysconfig/network-scripts/ifcfg-ens192
cat >>/etc/sysconfig/network-scripts/ifcfg-ens192 <<EOF
IPADDR=10.10.107.192
NETMASK=255.255.255.0
GATEWAY=10.10.107.1
EOF
service network restart
echo nameserver 223.6.6.6>>/etc/resolv.conf
echo -e"--[ネットワークカード構成の終了]--"
echo -e "\e[32m#########\n#SSHサービスの構成\n#########\e[0m"
echo 'PermitRootLogin yes'>>/etc/ssh/sshd_config
echo 'PasswordAuthentication yes'>>/etc/ssh/sshd_config
systemctl restart sshd
echo "--[SSHサービス構成の終了]--"
echo -e "\e[32m#########\n#Yumソース設定\n#########\e[0m"
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/CentOS-epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
yum update -y && yum upgrade -y && yum -y install epel*
echo "--[YUMの交換および更新アプリケーションソフトウェアが完了しました]--"
echo -e "\e[32m#########\n#システムカーネルバージョンのアップグレード\n#########\e[0m"
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum -y install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
yum --disablerepo="*"--enablerepo=elrepo-kernel repolist
yum --disablerepo="*"--enablerepo=elrepo-kernel list kernel*
yum -y --enablerepo=elrepo-kernel install kernel-ml.x86_64 kernel-ml-devel.x86_64
awk -F \' '$1=="menuentry "{print i++" : " $2}' /etc/grub2.cfg
sudo grub2-set-default0
reboot
# yum -y --enablerepo=elrepo-kernel install kernel-ml-tools.x86_64
# sudo grub2-set-default0
echo -e "\n############################\n#一般的な操作および保守ソフトウェアをインストールする\n####################################\n"
# 依存関係をコンパイルする
yum install -y gcc gcc-c++ openssl-devel bzip2-devel
# 従来のソフトウェア
yum install -y nano vim net-tools tree wget dos2unix unzip htop ncdu bash-completion
echo "--[インストールが完了しました]--"
echo -e "\n############################\n#バッシュターミナル美化\n####################################\n"
yum install -y git
git clone --depth=1 \
https://github.com/Bash-it/bash-it.git \
~ /.bash_it
cd !$ &&./install.sh -s
公式ミラーリストステータスアドレス:
同等のAlibabaCloudのソースの他のリリースバージョンを使用することをお勧めします:[http://mirrors.aliyun.com/help/centos](http://mirrors.aliyun.com/help/centos)
Aliyunは最新のCentOS-Base.repoを/etc/yum.repos.d/にダウンロードします
# CentOSのバックアップ-Base.repo
$ mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# アップデートソースをダウンロード
CentOS 5:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
CentOS 6:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
CentOS 7:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# ソースデータをクリアし、ミラーキャッシュを生成します
yum clean all
yum makecache
yum update
注:yumを使用してソフトウェアを削除することはお勧めしません。冗長な依存プログラムが削除され、事故が発生するためです(操作と保守には注意が必要です)。
システム環境:CentOS Linuxリリース7.6.1810(コア)
アップグレードの理由:Dockerを使用する場合、Linuxカーネルバージョンの最小要件は3.10(これは、CentOS 7.6のカーネルバージョンでもあります)であることがわかりましたが、このバージョンでは一部の機能を実現できません。
注:オンライン環境のカーネルバージョンは、実際の状況に応じて慎重に選択する必要があります。新しいバージョンでは、将来さらに問題が発生する可能性があります。
Linuxカーネルには次の2つのタイプがあります。
CentOSとFedoraは、Redhatに基づく一般的なLinuxブランチです。
カーネルバージョンの定義について:
バージョンの性質:メインブランチバージョンml(メインライン)、安定バージョン(安定)、長期メンテナンスバージョンlt(長期長期サポート)、カーネルプレリリースバージョン(カーネルプレリリースバージョン)
バージョンの命名形式は次のとおりです。ABC
A:カーネルのバージョン番号は次のとおりです。バージョン番号は、コードとカーネルの概念が大幅に変更された場合にのみ変更されます。履歴には2つの変更があります。
1994年に初めて1でした.バージョン0、2回目は1996年に2でした.バージョン0、3回目は2011年に3です.バージョン0がリリースされましたが、今回はカーネルの概念に大きな変更はありません。
B:カーネルのメジャーバージョン番号です:メジャーバージョン番号は、従来の奇数に基づいています-偶数のシステムバージョン番号が割り当てられます。奇数は開発バージョン、偶数は安定バージョンです。
C:これはカーネルのマイナーバージョン番号です。マイナーバージョン番号は、カーネルがセキュリティパッチを追加したり、バグを修正したり、新しい機能やドライブを実装したりすると変更されます。
Linuxディストリビューションカーネル
一般的に、kernel.orgからダウンロードおよびコンパイルされたカーネルのみが公式カーネルです。ほとんどのLinuxディストリビューションは、yumやrpm(ウェアハウスアップグレードカーネル)などのパッケージ管理システムを介してアップグレードできる自己管理カーネルを提供します。
主要なLinuxディストリビューション(RedHat、Ubuntu、CentOSなど)は、カーネルに基づいて他の一連のソフトウェアを統合し、独自のバージョンルールに従ってリリースします。uname-rを使用して、公式カーネルとLinuxディストリビューションカーネルのどちらを使用しているかを区別します。背後にあるものは、これが公式のカーネルではないことを示しています。
例:3.10.0-514.26.2.el7.x86_64は、対応するLinuxカーネルバージョンが3.10であることを示し、514はリリースルールの番号です。
仮想ファイルシステム
カーネルスペースとユーザースペースは、/ proc仮想ファイルシステムを介して通信できます。/procディレクトリには、カーネル情報をユーザーに提示したり、ユーザースペースからカーネルに情報を送信したりできるディレクトリと仮想ファイルがいくつか含まれています。
[[ email protected]~]# cat /proc/version
Linux version 3.10.0-957.10.1.el7.x86_64([email protected])(gcc version 4.8.520150623(Red Hat 4.8.5-36)(GCC)) #1 SMP Mon Mar 1815:06:45 UTC 2019
cpuinfo:プロセッサのタイプと速度を識別します
pci:PCIバスで見つかったデバイスを表示します
モジュール:現在カーネルにロードされているモジュール
バージョン:システムバージョンとカーネルバージョン
#1. 現在のアップグレード可能なバージョンを表示する
yum list kernel
Installed Packages
kernel.x86_64 3.10.0-957.el7 @anaconda
Available Packages
kernel.x86_64 3.10.0-957.5.1.el7 updates
#2 アップグレード
yum update kernel -y
#3. 再起動して確認します
reboot
uname -r
#1. 最初に倉庫を更新します
yum -y update
#2. ELRepoリポジトリを有効にする
# ELRepoリポジトリは、コミュニティベースのエンタープライズレベルのLinuxリポジトリであり、RedHatEnterpriseのサポートを提供します。(RHEL)およびその他のRHELベースのLinuxディストリビューション(CentOS、Scientific、Fedoraなど)のサポート。
# ELRepoは、ファイルシステムドライバー、グラフィックカードドライバー、ネットワークドライバー、サウンドカードドライバー、カメラドライバーなど、ハードウェア関連のソフトウェアパッケージに重点を置いています。
##- - enablerepoオプションは、CentOSシステムで指定されたリポジトリを有効にします,デフォルトはelrepoです。ここではelrepoが使用されます-カーネルの交換
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum -y install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
# rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm #Centos 6YUMソース
#3. elrepoをロードします-カーネルメタデータ
yum --disablerepo="*"--enablerepo=elrepo-kernel repolist
#4. リポジトリを有効にした後、次のコマンドを使用して、使用可能なカーネル関連パッケージを一覧表示できます。
yum --disablerepo="*"--enablerepo=elrepo-kernel list kernel*
yum --disablerepo="*"--enablerepo="elrepo-kernel" list available
# 長期メンテナンスバージョンltは4です.4.最新のメインライン安定バージョンmlは5です.0
# elrepo-kernel |2.9 kB 00:00
# elrepo-kernel/primary_db |1.8 MB 00:05
# Available Packages
# kernel-lt.x86_64 4.4.179-1.el7.elrepo elrepo-kernel
# kernel-lt-devel.x86_64 4.4.179-1.el7.elrepo elrepo-kernel
# kernel-lt-doc.noarch 4.4.179-1.el7.elrepo elrepo-kernel
# kernel-lt-headers.x86_64 4.4.179-1.el7.elrepo elrepo-kernel
# kernel-lt-tools.x86_64 4.4.179-1.el7.elrepo elrepo-kernel
# kernel-lt-tools-libs.x86_64 4.4.179-1.el7.elrepo elrepo-kernel
# kernel-lt-tools-libs-devel.x86_64 4.4.179-1.el7.elrepo elrepo-kernel
# kernel-ml.x86_64 5.0.10-1.el7.elrepo elrepo-kernel
# kernel-ml-devel.x86_64 5.0.10-1.el7.elrepo elrepo-kernel
# kernel-ml-doc.noarch 5.0.10-1.el7.elrepo elrepo-kernel
# kernel-ml-headers.x86_64 5.0.10-1.el7.elrepo elrepo-kernel
# kernel-ml-tools.x86_64 5.0.10-1.el7.elrepo elrepo-kernel
# kernel-ml-tools-libs.x86_64
# 5.0.10- 1. el7.elrepo elrepo-kernel
# kernel-ml-tools-libs-devel.x86_64
# 5.0.10- 1. el7.elrepo elrepo-kernel
# perf.x86_64 5.0.10-1.el7.elrepo elrepo-kernel
# python-perf.x86_64 5.0.10-1.el7.elrepo elrepo-kernel
#5. 最新のメインライン安定カーネルをインストールする必要があります。次のコマンドを使用します。(将来的には、カーネルをアップグレードした直後にこの文を実行することで、このマシンを最新の安定バージョンにアップグレードできます。)
yum --disablerepo="*"--enablerepo=elrepo-kernel install kernel-ml.x86_64 -y
#6. 古いバージョンのツールキットを削除し、新しいバージョンのツールキットをインストールします
yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64 -y
yum --disablerepo="*"--enablerepo=elrepo-kernel install kernel-ml-tools.x86_64 -y
# 古いカーネルを削除する(オプション)カーネルを削除するには、yumremoveコマンドまたはyumの2つの方法があります。-utilsツール。
# rpm -qa | grep kernel #古いカーネルのRPMパッケージを削除します
# yum remove [パッケージは上記で照会されます]
# インストールされているカーネルが3yum以下の場合-utilsツールはそれらを削除しません.3つ以上のカーネルがインストールされている場合にのみ、古いカーネルが自動的に削除されます。
# yum install yum-utils #インストールツール
# package-cleanup --oldkernels #削除ツール
#7. ワンステップで完了
yum -y --enablerepo=elrepo-kernel install kernel-ml.x86_64 kernel-ml-devel.x86_64
カーネルがアップグレードされた後も、現在のカーネルはデフォルトバージョンのままであり、カーネルバージョンの挿入シーケンスを変更する必要があります。
#8. コマンドを使用してデフォルトのブートシーケンスを表示し、grubでデフォルトのカーネルバージョンを変更できます。
$ awk -F \' '$1=="menuentry "{print i++" : " $2}' /etc/grub2.cfg
0: CentOS Linux(4.20.12-1.el7.elrepo.x86_64)7(Core)1: CentOS Linux(3.10.0-957.5.1.el7.x86_64)7(Core)2: CentOS Linux(3.10.0-957.el7.x86_64)7(Core)3: CentOS Linux(0-rescue-ca0f6fb3c5f24478abc0a2e275281d7a)7(Core)
# 説明:
# - デフォルトの新しいカーネルが最初から挿入され、デフォルトのブートシーケンスも0から始まります(現在のシーケンスはまだ有効になっていません)。
# - どのファイル/etc/grub2.cfgと/boot/grub2/grub.cfgの内容に一貫性がある
$ grep "^menuentry"/boot/grub2/grub.cfg | cut -d "'"-f2
CentOS Linux(4.20.12-1.el7.elrepo.x86_64)7(Core)
CentOS Linux(3.10.0-957.5.1.el7.x86_64)7(Core)
CentOS Linux(3.10.0-957.el7.x86_64)7(Core)
CentOS Linux(0-rescue-ca0f6fb3c5f24478abc0a2e275281d7a)7(Core)
#9. 現在の実際の起動シーケンスを表示する
$grub2-editenv list
saved_entry=CentOS Linux(3.10.0-957.5.1.el7.x86_64)7(Core)
#10. デフォルトの起動を設定する
sudo grub2-set-default'CentOS Linux (4.20.12-1.el7.elrepo.x86_64) 7 (Core)'#方法1
sudo grub2-set-default0 #方法2
grub2-editenv list
saved_entry=CentOS Linux(4.20.12-1.el7.elrepo.x86_64)7(Core)
# 新しいカーネルは上から見ることができます(5.0.10)現在の位置は0、元のカーネルです(3.10.0)現在の位置は1であるため、最新のカーネルを有効にする場合は、カーネルのブートシーケンスも0に変更する必要があります。
# vim /etc/default/grub
# GRUB_DEFAULT =0
# 注:Centos 6で変更されたファイルは同じです。コマンドを使用して新しいカーネルの場所を特定し、パラメーターのデフォルトを0に変更します。
# 次に、grub2を実行します-次のように、カーネル構成を再作成するmkconfigコマンド:
# grub2-mkconfig -o /boot/grub2/grub.cfg
#11. grubでデフォルトのカーネルバージョンを変更した後に再起動します
reboot
WeiyiGeek.grub
補足:
grub2-set-default0
# 従来の起動方法
grub2-mkconfig -o /boot/grub2/grub.cfg
grubby --default-kernel
# UEFIブート方式
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
方法2:
# インターネットにアクセスできない、または特定のバージョンのカーネルをインストールする必要がある一部のサーバーの場合、カーネルイメージのrpmパッケージをダウンロードしてインストールできます。ダウンロードアドレスは次のとおりです。
指定されたバージョンのカーネルをダウンロードします:http://rpm.pbone.net/index.php3?stat=3&limit=1&srodzaj=3&dl=40&search=kernel
指定されたバージョンのカーネルをダウンロードします-devel:http://rpm.pbone.net/index.php3?stat=3&limit=1&srodzaj=3&dl=40&search=kernel-devel
公式セントス6: http://elrepo.org/linux/kernel/el6/x86_64/RPMS/
公式セントス7: http://elrepo.org/linux/kernel/el7/x86_64/RPMS/
歴史的なバージョン:http://mirror.rc.usf.edu/elrepo/kernel/el7/x86_64/RPMS/
歴史的なバージョン:http://ftp.osuosl.org/pub/elrepo/kernel/el7/x86_64/RPMS/
rpmパッケージをダウンロードしてサーバーにアップロードし、次のコマンドを使用してインストールします。
# yum -y install kernel-ml-devel-4.12.4-1.el7.elrepo.x86_64.rpm
# yum -y install kernel-ml-4.12.4-1.el7.elrepo.x86_64.rpm
# rpm -ivh kernel-ml-headers-5.2.4-1.el7.elrepo.x86_64.rpm
# rpm -ivh kernel-ml-devel-5.2.4-1.el7.elrepo.x86_64.rpm
方法3:
ソースコードパッケージを使用してコンパイルおよびインストールすることもできます。この方法は高度にカスタマイズ可能ですが、より複雑です。必要に応じて、情報を見つけて自分でインストールできます。各システムバージョンのカーネルソースコードパッケージのダウンロードアドレスを以下に示します。[https://www.kernel.org/pub/linux/kernel/](https://www.kernel.org/pub/linux/kernel/)
補足:
システム環境:CentOS Linuxリリース7.6.1810(コア)
デフォルトのネットワークカード情報:
[[ email protected] network-scripts]# ip addr | grep "enp"2: enp0s3:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:46:9b:14 brd ff:ff:ff:ff:ff:ff
3: enp0s8:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:36:63:b1 brd ff:ff:ff:ff:ff:ff
4: enp0s9:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:0b:01:7d brd ff:ff:ff:ff:ff:ff
目的:ネットワークカード名を上記のenp0s3 / 8/9からeth0 / 1/2に変更します。構成プロセスは次のとおりです。
# ネットワークカード構成ディレクトリ
cd /etc/sysconfig/network-scripts
#1. ネットワークカードの名前を変更します(ifcfgがディレクトリに残っています-ファイル、デフォルトで削除されます)
[[ email protected] network-scripts]# ls ifcfg-*
ifcfg-eth0 ifcfg-eth1 ifcfg-eth2 ifcfg-lo
#2. 各ネットワークカードの構成ファイルを変更します
sed -i 's/NAME=enp0s3/NAME=eth1/g' ifcfg-eth1
sed -i 's/DEVICE=enp0s3/DEVICE=eth1/g' ifcfg-eth1
sed -i 's/NAME=enp0s3/NAME=eth2/g' ifcfg-eth2
sed -i 's/DEVICE=enp0s3/DEVICE=eth2/g' ifcfg-eth2
#3. シャットダウン"一貫したネットワークデバイスの命名法」
cp /etc/sysconfig/grub /etc/sysconfig/grub.bak
GRUBで_CMDLINE_LINUX add net.ifnames=0 biosdevname=0
# 変更後にGRUBとカーネル構成を更新する
$ grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image:/boot/vmlinuz-3.10.0-957.el7.x86_64
Found initrd image:/boot/initramfs-3.10.0-957.el7.x86_64.img
Found linux image:/boot/vmlinuz-0-rescue-a21bd1at 810ca4597ae7f6a7c26299389
Found initrd image:/boot/initramfs-0-rescue-a21bd1a810ca4597ae7f6a7c26299389.img
done
#4. デバイスルールプロファイルを追加する
# 変更する/etc/udev/rules.d/70-persistent-net.ルール、ファイルなしで新しいファイルを作成する
# MACアドレスがNAMEと一致することに注意してください(ip addrを使用して表示できます)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:46:9b:14", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:36:63:b1", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:0b:01:7d", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"
#5. 構成が完了したら、システムを再起動します
$reboot #ip addrを再起動して、変更されたネットワークカード情報を表示した後
2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:46:9b:14 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic eth0
3: eth1:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:36:63:b1 brd ff:ff:ff:ff:ff:ff
4: eth2:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:0b:01:7d brd ff:ff:ff:ff:ff:ff
WeiyiGeek.grubの変更
方法1:
LANG = zh_cn.UTF-8
」の後に「 init = / bin / sh
」を追加しますCtrl + X
を押して「シングルユーザーモード」に入り、mount / mount -o remount、rw /
passwd root
を実行して、ルートパスワードをリセットしますtouch / .autorelabel
を作成しますWeiyiGeek.
方法2:
linux16 / vmlinuz-0-resuce
を選択し、行の最後に rd.break
を追加しますCtrl + x
を実行して、シングルユーザーシェルモードに入りますルートディレクトリを読み取り/書き込みモードに再マウントします mount -o remount、rw / sysroot
システム chroot / sysroot
の実際のルートディレクトリに切り替えます
パスワードの変更 passwd root
ファイルlabel.autorelabel: touch / .autorelabel
を作成します
編集モードの終了を終了します(2回)
WeiyiGeek.centos7パスワードのリセット
プロセスステップ:
WeiyiGeek.
yum -y install libxml2 libxml2-dev
yum -y install libxslt-devel
yum -y install gd-devel
yum -y install GeoIP GeoIP-devel GeoIP-data
yum -y install gperftools
yum -y install libuuid-devel libblkid-devel libudev-devel fuse-devel libedit-devel libatomic_ops-devel
yum -y install gcc-c++
groupadd www-data
useradd -g www-data www-data
configure:エラーを解決します:mbedTLSライブラリが見つかりません。エラー。 mbedtlsをインストールする必要があります、チュートリアル:[https://www.24kplus.com/linux/281.html](https://www.24kplus.com/linux/281.html)
エラーの解決:OpenSSLが見つかりません<evp.h>エラー
yum install openssl openssl-devel
ln -s /usr/lib64/libssl.so /usr/lib/
yum install libtool
yum -y update gcc
yum -y install gcc+ gcc-c++
yum install trousers-devel
yum install gettext gettext-devel gettext-common-devel
yum remove openssl-devel
yum -y install openssl-devel
yum install libffi-devel
yum install e2fsprogs-devel uuid-devel libuuid-devel
yum install openssl-devel
yum -y install bzip2
yum install gcc-c++
yum install bzip2 bzip2-devel
yum install curl-devel
yum install ImageMagick-devel
yum install gcc
yum install libicu-devel
yum install sqlite-devel
yum install oniguruma oniguruma-devel