RHEL7がもうすぐリリース


CentOS5で動かしているサーバをアップデートしようかと思い、Cent OS 7で検索してみた。
すると、CentOS.orgに「RHEL7 RC is available」という4月24日付けの記事を見つけた。

「RedHat Enterprise Linux(RHEL) 7のRC版(製品候補版)が出た。CentOSについては続報を待て!」という内容。

この記事から1ヶ月・・・そろそろリリースになるのかな?

とりあえずは、http://ftp.redhat.com/redhat/rhel/rc/7/にあるRC版を入れてみるかなっと・・・・

で・・・RHEL7/CentOS7ですが、大きな変更点があります。

RHEL7RC版のディレクトリにあるのは「ppc64」「s390x」「x86_64」と「source」だけ。
(ppc64=IBM Power System用, s390x=IBM System z用)

i686版がなくなり、ついに32bitアーキテクチャが全廃です。

アプリケーション互換性のため32bit用ライブラリファイルは残存します。

ファイルシステムのデフォルトが「xfs」になります。
SGIがアレなことになっちゃったので、消滅してくのかなぁ・・・と一時期は思いましたが、ここに来ての標準採用。
思ったよりext4の進捗が好ましくなかったのかなぁ・・・なんて思ったりも。


そういやOracle Linuxの方はどうなんだろ?と探してみたら「Oracle Linux 7 beta Download」という形でβ版を公開していた。
こちらは従来のOracle Linuxと同じように、「RHEL互換カーネル」と「Oracle独自カスタマイズのThe Unbreakable Enterprise Kernel」の2種類が含まれています。
また、The Unbreakable Enterprise Kernelの方では、Linux Container(lux)も使えるようです。

samba 4.xでドメイン/フォレストの機能レベルを変更する


2016/07/19追記

Samba 4.4.5における現状についてを「Samba 4.4.xでActive Directoryを1から立てる」にて公開中です。

2018/02/01追記
Samba 4.7.4に置ける機能レベルについて下記の記事に追加しました。


Samba 4.xでActive Directoryを1から立てる」で作成したActive Directoryは、ドメインの機能レベル/フォレストの機能レベルが共に「Windows Server 2003」となっていた。

Sambaのコマンドで確認すると、以下の様になっていた。

[root@adtest ~]# /usr/local/samba/bin/samba-tool domain level show
Domain and forest function level for domain 'DC=adosakana,DC=local'

Forest function level: (Windows) 2003
Domain function level: (Windows) 2003
Lowest function level of a DC: (Windows) 2008 R2
[root@adtest ~]#

で・・・2014年5月現在、機能レベルの変更をWindowsから行うことはできないらしい。

samba公式Wikiの「Raising the functional levels」に「Hint: This way does not work at the moment! 」として注意書きがついている。

samba-toolコマンドで変更する、とのこと。
samba 4.1.7の段階で指定できる機能レベルは’2003′, ‘2008’, ‘2008_R2’の3種類。
2018/02/01時点で最新のsamba 4.7.4でも、2012と2012_R2はサポートされていません。(Kerberos関連の動作改善などが取り入れられていない)

まずは、ドメインレベルの上昇から・・・

[root@adtest ~]# /usr/local/samba/bin/samba-tool domain level raise --domain-level=2008_R2
Domain function level changed!
All changes applied successfully!
[root@adtest ~]# /usr/local/samba/bin/samba-tool domain level show
Domain and forest function level for domain 'DC=adosakana,DC=local'

Forest function level: (Windows) 2003
Domain function level: (Windows) 2008 R2
Lowest function level of a DC: (Windows) 2008 R2
[root@adtest ~]#

続いて、フォレストレベル・・・

[root@adtest ~]# /usr/local/samba/bin/samba-tool domain level raise --forest-level=2008_R2
Forest function level changed!
All changes applied successfully!
[root@adtest ~]# /usr/local/samba/bin/samba-tool domain level show
Domain and forest function level for domain 'DC=adosakana,DC=local'

Forest function level: (Windows) 2008 R2
Domain function level: (Windows) 2008 R2
Lowest function level of a DC: (Windows) 2008 R2
[root@adtest ~]#

ちなみに、先にフォレストレベルを上げようとすると、以下の様なエラーとなります。

[root@adtest ~]# /usr/local/samba/bin/samba-tool domain level raise --forest-level="2008_R2"
ERROR: Forest function level can't be higher than the domain function level(s). Please raise it/them first!
[root@adtest ~]#

RHEL6のkickstartインストールだけどホスト名/IPアドレスを手動入力する


RHEL6/CentOS6のkickstartインストールの際、DHCPによるホスト名/IPアドレス配布だけではなく、固定IPアドレスおよびホスト名でのインストールも行いたい。
かといって、起動オプションに細工するとか、個別のkickstartファイルを書く、とかはしたくない。

RHEL4ぐらいのkickstartだと、network行を書かなければ聞いてきたんだけど、いまはそんな仕様ではない模様。

探したらRedHatのkickstart MLで発見「Re: clearpart -all warning

「%pre」内で、コンソールを6番に切り替えてからreadコマンドにより値を入力、とのこと。
(「MORE Kickstart Tips and Tricks」だと3番とあったんだけど、3番でやったら出力が混じったので6番を採用した)
(あと、read -p “~” ~ /dev/tty3 2>&1って記述はうまく動かなかった)

そんなわけで作成したkickstartファイルはこちら!

# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
nfs --server=192.168.44.151 --dir=/images/cent6
lang en_US.UTF-8
keyboard jp106

%include /tmp/network-ks.cfg

rootpw  --plaintext password
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Asia/Tokyo

zerombr
bootloader --location=partition --driveorder=sda --append="crashkernel=auto"
clearpart --all --drives=sda --initlabel

part /boot/efi --fstype=efi --grow --maxsize=200 --size=50
part /boot --fstype=ext4 --size=500
part pv.vol1 --grow --size=1

volgroup vg_vol1 --pesize=4096 pv.vol1
logvol / --fstype=ext4 --name=lv_root --vgname=vg_vol1 --grow --size=1024 --maxsize=51200
logvol swap --name=lv_swap --vgname=vg_vol1 --grow --size=1638 --maxsize=1638

repo --name="CentOS"  --baseurl=nfs:192.168.44.151:/images/cent6 --cost=100

%packages
@core
@server-policy
@workstation-policy
nfs-utils
%end

%pre --log=/root/anaconda-pre.log
#!/bin/bash

exec < /dev/tty6 > /dev/tty6 2>&1
chvt 6

echo "=== Please input this server information ==="
read -p "Enter hostname: " NEWHOSTNAME
read -p "Enter IP address: " NEWIPADDR
read -p "Enter netmask: " NEWNETMASK
read -p "Enter default gw: " NEWGATEWAY
read -p "Enter DNS server IP: " NEWDNS

echo "network --bootproto=static --ip=${NEWIPADDR} --netmask=${NEWNETMASK} --gateway=${NEWGATEWAY} --nameserver=${NEWDNS} --device=eth0 --onboot=yes --hostname=${NEWHOSTNAME}" > /tmp/network-ks.cfg


chvt 1
%end

%post --log=root/anaconda-post.log --erroronfail
echo "192.168.44.151   master" >> /etc/hosts
mkdir /mnt2
mount -t nfs 192.168.44.151:/images/work /mnt2
rpm -ivh /mnt2/chef-11.12.2-1.el6.x86_64.rpm
mkdir -p /etc/chef
cp /mnt2/validation.pem /etc/chef/validation.pem
chmod 0600 /etc/chef/validation.pem
cp /mnt2/client.rb /etc/chef/client.rb
/usr/bin/chef-client

if [ -f /boot/efi/EFI/redhat/grub.conf ]; then
        sed -i "s/rhgb quiet//" /boot/efi/EFI/redhat/grub.conf
fi
if [ -f /boot/grub/grub.conf ]; then
        sed -i "s/rhgb quiet//" /boot/grub/grub.conf
fi

%end

#reboot

RHEL6のkickstartでPV/VGの名前に_が使えない?


最近、RHEL6/CentOS6の構築自動化手法をいろいろ検討中。

インストール時のkickstartファイルの編集中に初めて認識した仕様。

Logical Volumeの名前は自由に指定できる。
Volume Groupの名も自由に指定できる。
Pythical Volumeの名前はある程度制限される。

fedora project:Anaconda/Kickstart:part or partition
kickstart内でパーテーション作成をする際、命名法則により使用用途が決定される、という仕様になっている。
LVMで使用するためにPVを作成する場合は「pv.~」という命名規則で作る必要がある。
(pv.以降は好きに名前をつけられる)

というわけで、自動生成された「pv.0083」とかいう感じのPVを「pv_vol1」とかに名前変更しようとして失敗したのは、この仕様のせいで、「pv.vol1」とかにすれば問題ない、ということでした。

RHEL6インストールガイドの「EFI用のPXEブートの設定」の記述が嘘っぱちな件


PXEブートを使ってRHEL6/CentOS6のインストールを行おうとしたら、RHEL6の公式ドキュメントに騙された・・・

参照にしたドキュメントは「インストールガイド EFI 用の PXE ブートの設定
(英語版の「30.2.2. Configuring PXE Boot for EFI」も誤っている)

(2015/04/07 英語版/日本語版共に、3の記述は修正されたことを確認)

誤っているところは、以下のところ

3. tftpboot 内に EFI ブートイメージ用のディレクトリパスを作成して、ブートディレクトリからブートイメージをコピーします。
mkdir /var/lib/tftpboot/pxelinux
mkdir /var/lib/tftpboot/pxelinux/bootx64.efi
cp /boot/efi/EFI/redhat/grub.efi /var/lib/tftpboot/pxelinux/bootx64.efi

上記手順だと、grub.efiを/var/lib/tftpboot/pxelinux/bootx64.efi/grub.efiに置くことになる。

5. pxelinux 内に pxelinux.cfg ディレクトリを作成します。
mkdir /var/lib/tftpboot/pxelinux/pxelinux.cfg

6. このディレクトリに設定ファイルを追加します。ファイル名は、efidefault とするか、または IP アドレスにちなんだ名前を付けます。例えば、マシンの IP アドレスが 10.0.0.1 の場合には、ファイル名を 0A000001 とします。
/var/lib/tftpboot/pxelinux/pxelinux.cfg/efidefault にあるサンプルの設定ファイルは以下のようになります。

何が間違っているか?

「ファイルを置くパス」

正しい手順は、以下の通り


3. tftpboot 内に EFI ブートイメージ用のディレクトリパスを作成して、ブートディレクトリからブートイメージをコピーします。

mkdir /var/lib/tftpboot/pxelinux
cp /boot/efi/EFI/redhat/grub.efi /var/lib/tftpboot/pxelinux/bootx64.efi

grub.efiをbootx64.efiという名前で/var/lib/tftpboot/pxelinux/に置く。


5. pxelinux 内に pxelinux.cfg ディレクトリを作成します。
mkdir /var/lib/tftpboot/pxelinux/pxelinux.cfg

EFIの場合は、/var/lib/tftpboot/pxelinux/pxelinux.cfg/というディレクトリを作る必要は無い。


6. このディレクトリに設定ファイルを追加します。ファイル名は、efidefault とするか、または IP アドレスにちなんだ名前を付けます。例えば、マシンの IP アドレスが 10.0.0.1 の場合には、ファイル名を 0A000001 とします。
/var/lib/tftpboot/pxelinux/efidefault にあるサンプルの設定ファイルは以下のようになります。

default=0
timeout=1
splashimage=(nd)/splash.xpm.gz
hiddenmenu
title RHEL
        root (nd)
        kernel /rhel6/vmlinuz
        initrd /rhel6/initrd.img

efidefaultというファイルは/var/lib/tftpboot/pxelinux/というディレクトリに置く。
なぜか「/rawhide-x86_64/」と記載されているが、後の記述をみると「/rhel6/」であるべきもの。

参考にしたページ
・Grokbase:[CentOS] PXE booting UEFI
・fedora project:QA:Testcase UEFI pxeboot