このブログを検索

ラベル ubuntu の投稿を表示しています。 すべての投稿を表示
ラベル ubuntu の投稿を表示しています。 すべての投稿を表示

2015-04-13

RAIDの再構築(LVMあり→LVMなし)

半年くらい前の出来事だが、RAID on LVM → RAID を試したのでその手順をメモ。
書き溜めていたもののコピーなので細かいところは間違えているかも。

今回やることは、、、

HDD2台でRAID1構成をしていたが1台死んでしまった。
そこで、再構成するついでに、管理が面倒な上に使っていなかったLVMを解除したい。

HDD1 LVMあり
HDD2 購入直後

ここから

HDD1 RAID1(LVMなし)
HDD2 RAID1(LVMなし)
という構成にしたい

HDD2パーティショニング
HDD1→HDD2ファイルコピー
HDD1パーティショニング(初期化)
HDD2をメインにHDD1と同期
ともっていきたい

参考:
http://complete.ddo.jp/cent5/lvm2raid.html



CDドライブからGPartedを起動
/dev/sdbを開く
パーティションテーブルGPTを作成
Excelの通りにパーティショニング
bootはどうやらGrubであれば不要らしいので今回作らない
(2017/07/03 Excelの内容が不明だったので追加。ただ時間が経ってるので中身がこれであってるか不明)

現在の状態を表示
$ sudo parted -l
[sudo] password for default:
Model: ATA WDC WD20EARS-00M (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system     Name  Flags
 1      1049kB  2097kB  1049kB                  grub  bios_grub
 2      2097kB  271MB   268MB   ext4            boot  msftdata
 4      271MB   1997GB  1997GB                  data  lvm
 3      1997GB  2000GB  3221MB  linux-swap(v1)  swap


Model: ATA ST2000DM001-1ER1 (scsi)
Disk /dev/sdb: 2000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system     Name  Flags
 1      1049kB  2097kB  1049kB                        bios_grub
 4      2097kB  1997GB  1997GB                        raid
 3      1997GB  1997GB  1049kB                        msftdata
 2      1997GB  2000GB  3221MB  linux-swap(v1)

Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/vg0-lv1: 1977GB
Sector size (logical/physical): 512B/512B
Partition Table: loop

Number  Start  End     Size    File system  Flags
 1      0.00B  1977GB  1977GB  ext4


Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/vg0-lv0: 20.0GB
Sector size (logical/physical): 512B/512B
Partition Table: loop

Number  Start  End     Size    File system  Flags
 1      0.00B  20.0GB  20.0GB  ext4

$ sudo vgdisplay -v
    Finding all volume groups
    Finding volume group "vg0"
  --- Volume group ---
  VG Name               vg0
  System ID          
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  7
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               1.82 TiB
  PE Size               4.00 MiB
  Total PE              476074
  Alloc PE / Size       476074 / 1.82 TiB
  Free  PE / Size       0 / 0
  VG UUID               QFEMD8-l0bT-Jl0s-Vzqr-7723-jRGH-VjU5do
 
  --- Logical volume ---
  LV Path                /dev/vg0/lv0
  LV Name                lv0
  VG Name                vg0
  LV UUID                P9B0Kf-uAS9-a80Y-X9ef-8qYx-I2pY-4YTyZM
  LV Write Access        read/write
  LV Creation host, time ,
  LV Status              available
  # open                 1
  LV Size                18.62 GiB
  Current LE             4768
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0
 
  --- Logical volume ---
  LV Path                /dev/vg0/lv1
  LV Name                lv1
  VG Name                vg0
  LV UUID                5YP3eC-1QyR-JqMf-0jld-Le0H-axrL-Kk0i1a
  LV Write Access        read/write
  LV Creation host, time ,
  LV Status              available
  # open                 1
  LV Size                1.80 TiB
  Current LE             471306
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1
 
  --- Physical volumes ---
  PV Name               /dev/sda4  
  PV UUID               9n3zGy-kqnn-w8wo-cvE7-OdnV-Du8C-34ZoW1
  PV Status             allocatable
  Total PE / Free PE    476074 / 0


$ df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/vg0-lv0   19G  2.8G   15G  16% /
none                 4.0K     0  4.0K   0% /sys/fs/cgroup
udev                 982M  4.0K  982M   1% /dev
tmpfs                199M  664K  198M   1% /run
none                 5.0M     0  5.0M   0% /run/lock
none                 993M     0  993M   0% /run/shm
none                 100M     0  100M   0% /run/user
/dev/sda2            240M   63M  161M  29% /boot
/dev/mapper/vg0-lv1  1.8T   63G  1.7T   4% /home


$ sudo aptitude install mdadm

縮退モードでRAID-ARRAY作成
$ sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb4

$ cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 sdb4[1]
      1950234432 blocks super 1.2 [2/1] [_U]

$ sudo sh -c "mdadm --examine --scan >> /etc/mdadm/mdadm.conf"


PV作成
$ sudo pvcreate /dev/md0
  Physical volume "/dev/md0" successfully created
VGにPVを追加
$ sudo vgextend vg0 /dev/md0
  Volume group "vg0" successfully extended
外したいPVのデータを他のPV(/dev/md0)に移動
$ sudo pvmove /dev/sda4
  /dev/sda4: Moved: 99.9%
  /dev/sda4: Moved: 99.9%
  /dev/sda4: Moved: 100.0%
  /dev/sda4: no pvmove in progress - already finished or aborted.



initrd 作成
RAID1 を含む initrd を作成します。

$ uname -r
3.13.0-35-generic
$ sudo mkinitramfs -o /boot/initrd.img-3.13.0-35-generic 3.13.0-35-generic

bootパーティションのデータをrootパーティションにコピー
$ sudo cp -p -r /boot /home/.
$ sudo umount /boot
$ sudo cp -p -r /home/boot/* /boot/.

$ sudo vim /etc/fstab
proc            /proc           proc    nodev,noexec,nosuid 0       0
/dev/mapper/vg0-lv0 /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda2 during installation
UUID=56c3ebdd-7d85-421b-888a-217b6a500ab1 /boot           ext4    defaults        0       2
/dev/mapper/vg0-lv1 /home           ext4    defaults        0       2
# swap was on /dev/sda3 during installation
UUID=25bc96ac-e59d-4061-ae56-201ea16bc663 none            swap    sw              0       0

次のように変更する

proc            /proc           proc    nodev,noexec,nosuid 0       0
/dev/mapper/vg0-lv0 /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda2 during installation
#UUID=56c3ebdd-7d85-421b-888a-217b6a500ab1 /boot           ext4    defaults        0       2
/dev/mapper/vg0-lv1 /home           ext4    defaults        0       2
# swap was on /dev/sda3 during installation
UUID=25bc96ac-e59d-4061-ae56-201ea16bc663 none            swap    sw              0       0


$ sudo grub-install /dev/sda

$ sudo shutdown -h 0
そして電源ON

"no bootable device"エラーが出てGrubすら起動しない。
以前もあったので同じ対処をする。(どうして戻ったのかは不明)

http://www.ubuntulinux.jp/download/ja-remixから"ubuntu-ja-14.04-desktop-amd64.iso"をダウンロードしてCDに焼く。 ディスクを入れて起動する。
"Ubuntuを試す"で起動してDash→検索"terminal"
$ sudo fdisk /dev/sda
[GPTをサポートしません・・・]とか言われるけど無視する。
とりあえず状態を確認
: p
デバイス ブート 始点 終点 ブロック ID システム /dev/sda1 1 39070・・・ 19535・・・ ee GPT
パーティションをアクティブにする
"a"→"1"→"w"
さらにエラーが出るが無視する
$ sudo shutdown -h 0

LiveCDを抜いて再起動
起動はするが、起動時に"Error: diskfilter writes are not supported"
というエラーが出ている。RAID+LVMの組み合わせで出る模様。
このままでも問題はないらしいが一応修正する。
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1274320/comments/34

/etc/grub.d/00_headerのrecordfailセクションを書き換える。
もともと
if [ "$quick_boot" = 1 ]; then
    cat <<EOF
function recordfail {
  set recordfail=1
EOF
    FS="$(grub-probe --target=fs "${grubdir}")"
    case "$FS" in
      btrfs | cpiofs | newc | odc | romfs | squash4 | tarfs | zfs)
        cat <<EOF
  # GRUB lacks write support for $FS, so recordfail support is disabled.
EOF
        ;;
      *)
        cat <<EOF
  if [ -n "\${have_grubenv}" ]; then if [ -z "\${boot_once}" ]; then save_env recordfail; fi; fi
EOF
    esac
    cat <<EOF
}
となっている部分を
if [ "$quick_boot" = 1 ]; then
    cat <<EOF
function recordfail {
  set recordfail=1
EOF
# added begin
    GRUBMDDEVICE="$(grub-probe --target=disk "${grubdir}")"
    GRUBLVMDEVICE="$(grub-probe --target=disk "${grubdir}")"
    if echo "$GRUBMDDEVICE" | grep "/dev/md" > /dev/null; then
        cat <<EOF
  # GRUB lacks write support for $GRUBMDDEVICE, so recordfail support is disabled.
EOF
    elif echo "$GRUBLVMDEVICE" | grep "/dev/mapper" > /dev/null; then
        cat <<EOF
  # GRUB lacks write support for $GRUBLVMDEVICE, so recordfail support is disabled.
EOF
    else
# added end
        FS="$(grub-probe --target=fs "${grubdir}")"
        case "$FS" in
          btrfs | cpiofs | newc | odc | romfs | squash4 | tarfs | zfs)
            cat <<EOF
  # GRUB lacks write support for $FS, so recordfail support is disabled.
EOF
          ;;
          *)
            cat <<EOF
  if [ -n "\${have_grubenv}" ]; then if [ -z "\${boot_once}" ]; then save_env recordfail; fi; fi
EOF
        esac
# added begin
    fi
# added end
    cat <<EOF
}
に変更する。



$ sudo update-grub
$ sudo shutdown -h 0

再起動して起動できることを確認

$ sudo pvscan
[sudo] password for default:
  PV /dev/sda4   VG vg0   lvm2 [1.82 TiB / 1.82 TiB free]
  PV /dev/md0    VG vg0   lvm2 [1.82 TiB / 228.00 MiB free]
  Total: 2 [3.63 TiB] / in use: 2 [3.63 TiB] / in no VG: 0 [0   ]

$ sudo vgreduce vg0 /dev/sda4
  Removed "/dev/sda4" from volume group "vg0"

$ sudo pvremove /dev/sda4
  Labels on physical volume "/dev/sda4" successfully wiped

$ sudo shutdown -h 0



GPartedで/dev/sdaのbootパーティションと旧LVMパーティションを削除し、
/dev/sdbと同じ構成にする
前のパーティションのデータが残っているようだが無視する

ここで再起動するとまた
"no bootable device"エラーが出た。
再びUbuntu LiveCDでフラグを立てる操作をする


$ sudo parted /dev/sda
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print                                                          
Model: ATA WDC WD20EARS-00M (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system     Name  Flags
 1      1049kB  2097kB  1049kB                  grub  bios_grub
 4      2097kB  1997GB  1997GB  ext4                  msftdata
 3      1997GB  1997GB  1049kB                        msftdata
 2      1997GB  2000GB  3221MB  linux-swap(v1)

(parted) set 4 raid on                                                  
(parted) print                                                          
Model: ATA WDC WD20EARS-00M (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system     Name  Flags
 1      1049kB  2097kB  1049kB                  grub  bios_grub
 4      2097kB  1997GB  1997GB  ext4                  raid
 3      1997GB  1997GB  1049kB                        msftdata
 2      1997GB  2000GB  3221MB  linux-swap(v1)

(parted) quit

$ sudo mdadm --manage --add /dev/md0 /dev/sda4
mdadm: added /dev/sda4

$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sda4[2] sdb4[1]
      1950234432 blocks super 1.2 [2/1] [_U]
      [>....................]  recovery =  0.1% (3629504/1950234432) finish=329.3min speed=98504K/sec
   
unused devices: <none>

要否不明だけど一応mdadm.confを再設定

$ sudo vim /etc/mdadm/mdadm.conf
末尾の"ARRAY"から始まる一行を削除

$ sudo sh -c "mdadm --examine --scan >> /etc/mdadm/mdadm.conf"

$ sudo grub-install /dev/sdb

cat /proc/mdstatが100%になったら作業完了

$ sudo shutdown -h 0

再起動して最終的な起動確認

以上で完了



ただこれだと、partedした時にRAID ARRAYにしたパーティションのFile systemが以前のext4のまま消えない。
後日これを解消した。
手順は
1. mdadmでmd0にfailコマンドを実行
2. mdadmでmd0から/dev/sdaを除去
3. GParted起動
4. パーティションを"cleared"でフォーマット ※パーティション情報を初期化するものらしい
5. Ubuntu LiveCD起動
6. a→1→wを実施する
7. mdadmでmd0に/dev/sdaを再度追加
8. 同期を待つ
で成功した
※もしかしたら4のあと、一度"no bootable device"を見ないといけないかも
 一度、エラーを確認せずに続けてやったら効果がなかった



その他参考にしたと思われるURL
http://xelalko.blogspot.jp/2010/08/ubuntu910-nas-on-raid15.html
http://xelalko.blogspot.jp/2010/08/ubuntu910-nas-on-raid14.html
http://www.linuxmania.jp/raid_md_grub.html
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/a060raid1.html
http://blog.seishiono.net/entry/2014/05/03/223948
http://www.maruko2.com/mw/CentOS/LVM%E3%81%AE%E8%B5%B7%E5%8B%95%E4%B8%AD%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF%E3%82%92SSD%E3%81%AB%E8%A4%87%E8%A3%BD%E3%81%97%E4%BA%A4%E6%8F%9B%E3%81%99%E3%82%8B
http://ubuntu.hatenablog.jp/entry/20101228/1293536177
http://qiita.com/kudotty/items/264d255fdffffe9abc64
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1274320/comments/34

2015-03-01

Ubuntuのセキュリティパッチのみを自動で適用する

$ sudo aptitude update
$ sudo aptitude install unattended-upgrades
$ vim /etc/apt/apt.conf.d/50unattended-upgrades
セキュリティのみコメント解除されていることを確認

メール通知
Unattended-Upgrade::Mail をコメント解除、必要に応じてメールアドレス設定

自動再起動をやめる ※未確認
Unattended-Upgrade::Automatic-Reboot "false" をコメント解除

$ sudo dpkg-reconfigure -plow unattended-upgrades
Yes

完了

2014-10-29

samba4.0.6→4.1.11をインストール

結論から書きますと、4.0.6→4.1.11へのアップグレードは失敗で、
結局1から入れなおしました。
結構試行錯誤しましたが英語圏の情報含めて色々試してダメでした。

で、実施してからだいぶ経ってからのメモ書き復元のため、矛盾があったりするかもしれない超メモ書きです。

まず、Ubuntuをアップグレードしました。?(忘れた)→14.04.1
次にsamba4がどうなっているか確認

$ sudo chkconfig --list samba4
sudo: chkconfig: command not found
chkconfigが動かなくなっていたので代替アプリをインストール

$ sudo aptitude install sysv-rc-conf
WARNING: untrusted versions of the following packages will be installed!

Do you want to ignore this warning and proceed anyway?

IPV6無効
$ sudo vim /etc/sysctl.conf
追加
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

DNSサーバー指定を元に戻す
$ sudo vim /etc/resolvconf/resolv.conf.d/base
nameserver XXX.XXX.XXX.XXX # gatewayを指定

反映
$ sudo resolvconf -u
 前回同様不都合なサービスを外す
$ sudo update-rc.d -f slapd remove
$ sudo shutdown -r 0
$ ping www.google.com
$ cd
$ wget http://ftp.samba.org/pub/samba/samba-4.1.11.tar.gz
$ tar -zxvf samba-4.1.11.tar.gz
$ cd samba-4.1.11
$ ./configure
$ sudo /etc/init.d/samba4 stop
$ cd /usr/local; sudo tar cvfz samba-4.0.6.tar.gz ./samba
$ cd
$ cd samba-4.1.11
$ sudo make && sudo make install

とりあえず手動で動作確認
$ sudo /usr/local/samba/sbin/samba
$ ps aux |grep samba

ちなみにmakeを飛ばすと
bin/asn1_compileに関するエラーが出る

DNSサーバー指定をAD用に戻す
$ sudo vim /etc/resolvconf/resolv.conf.d/base
********
$ sudo resolvconf -u
$ sudo shutdown -r 0
$ tail -n 100 /var/log/syslog
Sep  6 14:31:52 xxxx samba[1408]: [2014/09/06 14:31:52.772588,  0] ../lib/util/util.c:161(file_check_permissions)
Sep  6 14:31:52 xxxx samba[1408]:   invalid permissions on file '/usr/local/samba/private/tls/key.pem': has 0644 should be 0600
Sep  6 14:31:52 xxxx samba[1408]: [2014/09/06 14:31:52.773858,  0] ../source4/lib/tls/tls_tstream.c:1125(tstream_tls_params_server)
Sep  6 14:31:52 xxxx samba[1408]:   Invalid permissions on TLS private key file '/usr/local/samba/private/tls/key.pem':
Sep  6 14:31:52 xxxx samba[1408]:   owner uid 0 should be 0, mode 0644 should be 0600
Sep  6 14:31:52 xxxx samba[1408]:   This is known as CVE-2013-4476.
Sep  6 14:31:52 xxxx samba[1408]:   Removing all tls .pem files will cause an auto-regeneration with the correct permissions.
Sep  6 14:31:52 xxxx samba[1408]: [2014/09/06 14:31:52.776128,  0] ../source4/ldap_server/ldap_server.c:940(ldapsrv_task_init)
Sep  6 14:31:52 xxxx samba[1408]:   ldapsrv failed tstream_tls_params_server - NT_STATUS_CANT_ACCESS_DOMAIN_INFO
Sep  6 14:31:52 xxxx samba[1408]: [2014/09/06 14:31:52.777057,  0] ../source4/smbd/service_task.c:35(task_server_terminate)
Sep  6 14:31:52 xxxx samba[1408]:   task_server_terminate: [Failed to startup ldap server task]
Sep  6 14:31:52 xxxx samba[1372]: [2014/09/06 14:31:52.808193,  0] ../lib/util/become_daemon.c:136(daemon_ready)
Sep  6 14:31:52 xxxx samba[1372]:   STATUS=daemon 'samba' finished starting up and ready to serve connectionssamba_terminate: Failed to startup ldap server task


$ sudo rm /usr/local/samba/private/tls/*.pem
$ sudo /etc/init.d/samba4 start
$ ps aux |grep samba


4.0.X系からのUpdateならDBの修復が必要らしい
$ sudo /etc/init.d/samba4 stop
# sudo /usr/local/samba/bin/samba-tool dbcheck --cross-ncs --reset-well-known-acls --fix
# sudo /usr/local/samba/bin/samba-tool ntacl sysvolreset
# sudo /usr/local/samba/bin/samba-tool dbcheck --cross-ncs --fix
ref: https://wiki.samba.org/index.php/Updating_Samba

$ sudo /etc/init.d/samba4 start
$ ps aux |grep samba
立ち上がらなくなった
どうもファイルのOwnerがおかしい気がするので全変更

$ sudo chown root:root /usr/local/samba -R
$ sudo /etc/init.d/samba4 start
$ ps aux |grep samba
立ち上がった


$ /usr/local/samba/bin/smbclient -L localhost -U%
OS=と Server=が空だけどとりあえず動いている?

$ /usr/local/samba/bin/smbclient -L localhost -U%
Domain=[MYDOMAIN] OS=[] Server=[]

以前は空ではなかったので何かおかしい
一度設定ファイルがない状態でsamba4をインストールし、
smb.confの初期値で試したところちゃんと出た。

smb.confの初期値と移行したものを見比べると
globalが全然違うっぽい。

そこで、初期値の状態のものをひっぱってきて、
必要な設定を改めて施した。

初期値+provisionしたもの

# Global parameters
[global]
        workgroup = MYDOMAIN
        realm = MYDOMAIN.LOCAL
        netbios name = HOSTNAME
        server role = active directory domain controller
        dns forwarder = 192.168.1.1

[netlogon]
        path = /usr/local/samba/var/locks/sysvol/mydomain.local/scripts
        read only = No

[sysvol]
        path = /usr/local/samba/var/locks/sysvol
        read only = No


$ /usr/local/samba/bin/smbclient -L localhost -U%
Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 4.1.11]

        Sharename       Type      Comment
        ---------       ----      -------
        netlogon        Disk    
        sysvol          Disk    
        IPC$            IPC       IPC Service (Samba 4.1.11)
・・・略・・・
結果が実行毎に変わるけどなんだろう・・・

その後いろいろ確認したけどどうもおかしく、直せない。
この状態でファイルサーバー越しにファイルを作成したりするとOwnerが3000000になる。
アンインストールしてからの再インストールをすることにした。

DNS設定を再び暫定に
$ sudo vim /etc/resolvconf/resolv.conf.d/base
nameserver ルーターIP
のみに変更

$ sudo resolvconf -u
samba関係をアンインストール
$ sudo aptitude remove smbd
$ sudo aptitude remove samba
$ sudo aptitude remove winbind libnss-winbind
$ sudo aptitude remove slapd ldap-utils


https://wiki.samba.org/index.php/Samba_4/OS_Requirements
$ sudo aptitude install build-essential libacl1-dev libattr1-dev \
   libblkid-dev libgnutls-dev libreadline-dev python-dev libpam0g-dev \
   python-dnspython gdb pkg-config libpopt-dev libldap2-dev \
   dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev acl
$ sudo aptitude install slapd ldap-utils
$ sudo /etc/init.d/slapd stop
$ sudo update-rc.d -f slapd remove
$ cd
$ wget http://ftp.samba.org/pub/samba/samba-4.1.11.tar.gz
$ tar -zxvf samba-4.1.11.tar.gz
$ cd samba-4.1.11
$ ./configure
$ sudo make && sudo make install
$ sudo aptitude install smbd
$ sudo aptitude install winbind libnss-winbind
$ sudo vim /etc/init/smbd.conf
start on ・・・ という行を#でコメントアウト

$ sudo vim /etc/resolvconf/resolv.conf.d/base
元に戻す

$ sudo shutdown -r 0

$ sudo /usr/local/samba/bin/samba-tool domain provision
$ sudo /etc/init.d/samba restart
$ ps aux|grep samba

とりあえず動作確認
$ ps aux |grep samba


$ /usr/local/samba/bin/smbclient -L localhost -U%
4.0.Xから上書きした際は結果が不定だったが
いろいろアンインストール→いろいろUpgrade
してからのsambaクリーンインストールで安定した

$ sudo host -t SRV _ldap._tcp.mydomain.local 127.0.0.1

$ kinit administrator@MYDOMAIN.LOCAL
以前と異なりパスワードを求められた

$ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: administrator@MYDOMAIN.LOCAL


$ sudo /usr/local/samba/bin/samba-tool user setexpiry Administrator --noexpiry
$ /usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator%'パスワード' -c 'ls'
Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 4.1.11]
  .                                   D        0  Sun Sep  7 19:21:26 2014
  ..                                  D        0  Sun Sep  7 19:22:00 2014

                37289 blocks of size 524288. 29480 blocks available





ref: https://wiki.samba.org/index.php/Setup_a_Samba_AD_Member_Server

以前のファイルを除去
$ sudo mv /lib/x86_64-linux-gnu/libnss_winbind.so /var/tmp/.
$ sudo mv /lib/x86_64-linux-gnu/libnss_winbind.so.2 /var/tmp/.
今回ビルドしたものを入れる
$ sudo ln -s /usr/local/samba/lib/libnss_winbind.so.2 /lib/x86_64-linux-gnu/libnss_winbind.so
$ sudo ln -s /lib/x86_64-linux-gnu/libnss_winbind.so /lib/x86_64-linux-gnu/libnss_winbind.so.2
$ sudo ldconfig
$ /usr/local/samba/bin/wbinfo -p
Ping to winbindd succeeded

$ getent passwd
MYDOMAIN\Administrator:*:0:100::/home/MYDOMAIN/Administrator:/bin/bash


ドメインレベルを上げる
$ sudo /usr/local/samba/bin/samba-tool domain level raise --domain-level=2008_R2
$ sudo /usr/local/samba/bin/samba-tool domain level show
$ sudo /usr/local/samba/bin/samba-tool domain level raise --forest-level=2008_R2
$ sudo /usr/local/samba/bin/samba-tool domain level show
移動プロファイル設定
$ mkdir -p /home/MYDOMAIN/profiles
$ chmod 1777 /home/MYDOMAIN/profiles
$ sudo vim /usr/local/samba/etc/smb.conf
[global]
   ‥‥
   logon path = //%L/profiles/%U
   ‥‥
[profiles]
   path = /var/samba/profiles
   browseble = no
   read only = no
   profile acls = yes
   create mask = 0600
   directory mask = 0700

$ sudo /etc/init.d/samba4 restart

Winをドメイン参加させてAdministratorでログオン

リモートサーバー管理ツール
http://www.microsoft.com/ja-jp/download/details.aspx?id=39296

[コントロールパネル] → [プログラム] → [Windowsの機能の有効化または無効化]
リモートサーバー管理ツールにチェックしてOK

コントロール パネル
システムとセキュリティ
管理ツール
Active Directory ユーザーとコンピュータ

Usersにいる対象アカウントのプロパティを開く
プロファイルのプロファイルのパスに
\\サーバー名\profiles\%USERNAME%
を入力して適用
※もしかしたらDomain Adminsにいれているとだめかも。

2014-01-28

ntpサーバーインストール

sambaインストール時に面倒でntpサーバーを入れていなかったが
よく考えたらADにntpサーバーは必須であった
(時間があまりに離れているととおそらくログインできない)

Windowsと共存させるためにUTCをOFFにする
$ sudo vim /etc/default/rcS

--- 変更 ---
UTC=no
------------

とりあえず時間を合わせる
$ sudo ntpdate ntp.nict.jp

ハードウェアに書き込む
$ sudo hwclock -w

ntpサーバーをインストールする
$ sudo aptitude install ntp

上位ntpサーバーを指定する
$ sudo vim /etc/ntp.conf

以下をコメントアウトする
--- コメントアウト ---
# server 0.ubuntu.pool.ntp.org
# server 1.ubuntu.pool.ntp.org
# server 2.ubuntu.pool.ntp.org
# server 3.ubuntu.pool.ntp.org
# server ntp.ubuntu.com
-----------------------

代わりに次の4行かく(適当)
--- 変更 ---
server ntp.nict.jp
server ntp1.jst.mfeed.ad.jp
server ntp2.jst.mfeed.ad.jp
server ntp3.jst.mfeed.ad.jp
------------

サービス再起動
$ sudo /etc/init.d/ntp restart

動作確認
$ ntpq -p

samba機をupdateしたらActiveDirectoryが止まった

ActiveDirectoryにしているsamba機をupgradeしたら、ADに参加しているマシンが何故かインターネットに繋がらず。
調べてみたところ、参加マシン→sambaサーバーのホスト名が解決できない。IPでなら繋がり、LANは生きている。
というわけでsambaサーバーのsyslogを確認してみると、どうもsambaサーバーの起動にこけている。

Jan 28 06:49:51 xxxx samba[1213]: [2014/01/28 06:49:51.626210,  0] ../source4/smbd/server.c:370(binary_smbd_main)
Jan 28 06:49:51 xxxx samba[1213]:   samba version 4.1.0 started.
Jan 28 06:49:51 xxxx samba[1213]:   Copyright Andrew Tridgell and the Samba Team 1992-2013
Jan 28 06:49:52 xxxx samba[1214]: [2014/01/28 06:49:52.810435,  0] ../source4/smbd/server.c:492(binary_smbd_main)
Jan 28 06:49:52 xxxx samba[1214]:   samba: using 'standard' process model
Jan 28 06:49:55 xxxx samba[1238]: [2014/01/28 06:49:55.189132,  0] ../source4/smbd/service_stream.c:346(stream_setup_socket)
Jan 28 06:49:55 xxxx samba[1238]:   Failed to listen on 0.0.0.0:389 - NT_STATUS_ADDRESS_ALREADY_ASSOCIATED
Jan 28 06:49:55 xxxx samba[1238]: [2014/01/28 06:49:55.190110,  0] ../source4/ldap_server/ldap_server.c:821(add_socket)
Jan 28 06:49:55 xxxx samba[1238]:   ldapsrv failed to bind to 0.0.0.0:389 - NT_STATUS_ADDRESS_ALREADY_ASSOCIATED
Jan 28 06:49:55 xxxx samba[1238]: [2014/01/28 06:49:55.190656,  0] ../source4/smbd/service_task.c:35(task_server_terminate)
Jan 28 06:49:55 xxxx samba[1238]:   task_server_terminate: [Failed to startup ldap server task]
Jan 28 06:49:55 xxxx samba[1214]: [2014/01/28 06:49:55.196102,  0] ../source4/smbd/server.c:211(samba_terminate)
Jan 28 06:49:55 xxxx samba[1214]:   samba_terminate: Failed to startup ldap server task

そのちょっと前をさかのぼってみるとこんなのが・・・
Jan 28 06:49:50 xxxx slapd[1028]: slapd starting

で、今回sambaを入れた手順として、

  1. slapdをインストールしないとsambaがうまく動かない
  2. かといってslapdが動いているとsambaが動かない
  3. slapdはインストールするとけどサービスから解除しておく
どうも、upgradeのタイミングでslapdのサービス登録が復活していたみたいですね。
というわけで
$ sudo update-rc.d -f slapd remove
$ sudo shutdown -r 0
で直りました。


2013-06-30

Ubuntu12.04のインストールとSamba 4でActive Directory構築

久しぶりにUbuntuを再インストールしてみた。
以前RAID1によるHDD二重化をしていたけどそのうち片方が壊れた。
HDD追加で買うほど大切なデータも入れてないのでRAIDは今回はやめた。
代わりに、以前はUbuntuのバグか何かでうまくいかなかったLVMを使ってみた。

とりあえずインストール時に注意する要素として以前と同じく
・AdvancedFormatTechnologyのHDD
・AFTとなんだか相性の悪いマザーボード
・今のHDDだと微妙に2TB以下らしく標準インストールだとパーティションテーブルがGPTにならずMSDOSになる

といったところ。IntelliPark問題は前回対応済なので不要。
最近のUbuntuはAFTに対応しているっぽいけど、
GPTを使いたいがためにパーティショニングを手動で行う。

GPT周りについてのメモ
GRUBをMBRにインストールした場合、追加でBIOSブートパーティション/予約済み BIOS ブート領域(bios_grubフラグのたったパーティション)に情報を保存する。
もしなければ/bootの情報を使おうとする。そうすると何らかの原因でブートができなくなる可能性があるらしく、BIOSブートパーティションを設けたほうがいいらしい。
BIOSブートパーティションは最低31KB必要らしく、通常は多めに1MBほど確保される。
UbuntuではこれがないとGRUBインストールに失敗するとの情報あり。
RAID1を構築した場合、bios_grubはOSインストール後に手動でミラーにインストールするのが良さそう。

今回は関係ないけど/bootのメモ
/bootパーティションには起動するための情報が格納される。なければ/に格納される。
これは基本的にはRAIDの外に出さないといけないが、RAID1ははやくから対応されている。
RAID1の時、縮退すると起動できなくなってしまうので、/bootもRAIDに載せるほうがよいらしい。
ついでに、LVMの上に/bootを載せるのは少なくともうちの環境では動かないっぽい(RAIDは未確認

パーティショニングに関して参考にしたサイト
http://www.linuxmania.jp/raid_md_grub.html
http://www.ibm.com/developerworks/jp/linux/library/l-grub2/


で、OS入れる際にまたまたなかなかうまく行かなかったので色々実験結果をメモしとく。
インストール&起動の結果
◆MSDOS&RAIDなし&LVMなし→OK
◆GPT&RAIDなし&LVMなし→OK
◆GPT&RAIDあり(/bootと/)&LVMなし→NG(一瞬起動メニューが出て先に進むけど真っ黒の画面で止まる)
◆GPT&RAIDあり(/)&LVMあり(/)→成功?(起動しかけたところで単独RAIDが原因っぽいエラーが発生)

AFT&LVM&RAIDあたりの注意事項について細かく記載のあるサイトがあったのでメモ
http://green-rabbit.sakura.ne.jp/blog/2010/11/27/2191/
※意味がよくわからなかったので今回は気にしないことにした


AdvancedFormatTechnology対応したパーティショニングをGPartedで行う

注意としては、流用したHDDだと前の情報が残っていたりするっぽいので、適当なフォーマットと適当なラベル付を行う。

http://gparted.sourceforge.net/からGparted Live"gparted-live-0.16.1-1-amd64.iso"をダウンロードしてCDに焼く。
ディスクを入れて起動
  1. ・・・Live・・・
  2. Don't touch keymap
  3. 15: Japan
  4. 0) COntinue to start X to use GParted automatically
  5. 右上の/dev/・・・から操作したいHDDを選択、今回は"/dev/sda"
  6. メニュー→デバイス→パーティションの作成→詳細→[新しいパーティションテーブルの形式を選択]"gpt"→"Apply"
  7. まず、gpt用のgrub用領域を1MB分作成する。
  8. 未割り当てを選択→New→前方の空き領域"1"、新しいサイズ"1"MiB、種類"基本パーティション"、ファイルシステム"ext4"※本来不要、ラベル"grub"
  9. 次に、ブート用の領域を256MB分作成する。
  10. 未割り当てを選択→New→前方の空き領域"0"、新しいサイズ"256"MiB、種類"基本パーティション"、ファイルシステム"ext4"※本来不要、ラベル"boot" RAID化しておけば片方のHDD異常でも起動ができるらしい。
  11. 次に、スワップ領域をディスクの末尾に作成する。メモリが2GBでそれより多めにとる。
  12. 今回はとりあえず3GBととする。 未割り当てを選択→New→新しいサイズ"3072"MiB、後方の空き領域"0"、種類"基本パーティション"、ファイルシステム"ext4"※本来不要、ラベル"swap" なお、スワップ領域をRAID化する意味はないらしい。
  13. 最後に、それ以外のメイン部分の領域を残り全部で作成する。
  14. ただ、のちのち別HDDとRAID1化するので念の為少し小さめに数十MBくらい残しておく。 未割り当てを選択→New→前方の空き領域"0"、新しいサイズ"1904300"MiB、種類"基本パーティション"、ファイルシステム"ext4"※本来不要、ラベル"data"
  15. 念の為、これまで作成したパーティションを右クリックしてinformationから開始セクターを確認する。
  16. 8の倍数であることを確認する。
  17. ・・・確かApplyをクリックして適用。
  18. Exitをダブルクリックして終了。
今回はHDDひとつだったけど、RAID1用に複数あるなら全て同じようにパーティショニングする。


Ubuntu Server 64bit版をインストールする

http://www.ubuntu.com/server/から"ubuntu-12.04.2-server-amd64.iso"をダウンロードしてCDに焼く。
ディスクを入れて起動

インストール手順1(基本情報)

  1. [Language]画面"日本語"
  2. "Ubuntu Serverをインストール"
  3. [インストーラの翻訳は、選択された言語では完全ではありません]画面"はい"
  4. [場所の選択]画面"日本"
  5. [キーボードの設定]画面"日本語"→キーボードのレイアウト"日本語"
  6. [ネットワークの設定]画面の[このシステムのホスト名を入力して下さい]画面(ネットワーク手動設定のために)"戻る"→"ネットワークを手動で設定"→[IP address]任意入力"192.168.1.xxx"して"続ける"→[ネットマスク]任意入力"255.255.255.0"→[ゲートウェイ]任意入力"192.168.1.1"→[ネームサーバーアドレス]任意入力"192.168.1.1"→[このシステムのホスト名を入力して下さい]任意入力"ubuntu"→[ドメイン名]任意入力"mydomain"※他のドメイン名にあわせる
  7. [ユーザーとパスワードのセットアップ]画面の[新しいユーザーの本名]任意入力"TestUser"→[あなたのアカウントのユーザ名]任意入力"testuser"→[新しいユーザーのパスワードを選んで下さい]任意入力"xxxxxxxx"→[確認のため、再度パスワードを入力して下さい]先と同じ値を入力
  8. [ホームディレクトリを暗号化しますか]"いいえ"※持ち歩かない端末なので盗難は心配せず、パフォーマンス優先
  9. [時間の設定]画面で[your time zone is Asia/Tokyo]と出てるので[Is this time zone correct]"はい"

インストール手順2(パーティショニング)

概要としては、システム周りは先程パーティショニングした通りで、ルートなどはLVM上に構築していく。
あまり細かくはわけず、ルート(20GB)とホーム(残り)の2つに分ける。
ちなみにパーティションを遣り直したい際、論理ボリュームの削除ができない。
これは日本語のバグらしく、メニューを戻って言語からEnglishを選択すれば削除できるようになる。
  1. [ディスクのパーティショニング]画面→[パーティショニングの方法]"手動"
  2. [・・・sda・・・]の
  3. 1.(bios用領域)→
  4. [利用方法]"予約済みBIOSブート領域" [起動フラグ]"オフ"
  5. 2.(boot用)→
  6. [利用方法]"ext4" [パーティションの初期化]"初期化" [マウントポイント]"/boot" [起動フラグ]"オフ"
  7. 3.(swap用)→
  8. [利用方法]"スワップ領域" [起動フラグ]"オフ"
  9. 4.(rootなどその他用)→
  10. 論理ボリュームにするので触らない
  11. →"論理ボリュームマネージャの設定"→[LVM設定アクション]"ボリュームグループの作成"→[ボリュームグループ名]"vg0"→[新しいボリュームグループのデバイス]"/dev/sda4"(rootなど用)を選択して"続ける"
  12. →[LVM設定アクション]"論理ボリュームの作成"→[ボリュームグループ]"vg0"→[論理ボリューム名]"lv0"を入力して"続ける"→[論理ボリュームサイズ]任意入力"20GB"
  13. →[LVM設定アクション]"論理ボリュームの作成"→[ボリュームグループ]"vg0"→[論理ボリューム名]"lv1"を入力して"続ける"→[論理ボリュームサイズ]任意入力※残り全部※デフォルト値
  14. →[LVM設定アクション]"完了"
  15. →[LVM VG・・・lv0・・"の"1.・・・]を選択→
  16. [利用方法]"ext4" [マウントポイント]"/" [マウントオプション]"defaults"※デフォルト値 [ラベル]任意入力"root" [予約ブロック]"5%"※デフォルト値 [典型的な利用方法]"標準"※デフォルト値
  17. →"パーティションのセットアップを終了"
  18. →[LVM VG・・・lv1・・"の"1.・・・]を選択→
  19. [利用方法]"ext4" [マウントポイント]"/home" [マウントオプション]"defaults"※デフォルト値 [ラベル]任意入力"home" [予約ブロック]"5%"※デフォルト値 [典型的な利用方法]"標準"※デフォルト値
  20. →"パーティションのセットアップを終了"
  21. →"パーティショニングの終了とディスクへの書き込み"

インストール手順3(ソフトウェア周り)

  1. [taskselを設定しています]画面の[このシステムのアップグレードをどのように管理しますか"自動的にアップデートしない"
  2. [ソフトウェアの選択]画面"OpenSSH server","Mail server"
  3. [Postfix Configuration]画面の[メール設定の一般形式]"インターネットサイト"
  4. →[システムメール名]任意入力"ホスト名.ドメイン名"
  5. ※何入れればいいかわからん Samba入れたら ホスト名.ドメイン名、いれなかったらホスト名がデフォルト値だった
  6. [ハードディスクへのGRUBブートローダのインストール]画面の[マスターブートレコードにGRUBブートローダをインストールしますか]"はい"
  7. [インストールの完了]画面でディスクを抜き"続ける"


この時点で再起動すると、"No bootable device"と出て起動できない。
どうやら、マザーボード(BIOS)がUbuntuの作るGPTを読めていないらしい。
というのも、Ubuntuから見たGPTはブートフラグは関係しない不要な属性らしいけど、
マザーボードによってはブートフラグ前提で動いていて純粋なGPTに対応してなかったりするらしい。
というわけで、Live版のUbuntuからHDDに細工をしてマザーボードから読めるようにする。
起動さえすればあとはGRUBとかがうまくやってくれるらしい。
なお、この問題は10.XXから発生しているらしく、確かに以前10.XXがダメだったから9.10を入れた。
最近は対応策が発見されたらしい。

適当なパーティションに起動フラグセット

どこか適当なパーティションに起動フラグをセットする必要がある、今回の構成だとスワップ以外につけられるところがないのでスワップをONにする。 http://www.ubuntulinux.jp/download/ja-remixから"ubuntu-ja-12.04.2-desktop-i386.iso"をダウンロードしてCDに焼く。 ディスクを入れて起動する。
  1. "Ubuntuを試す"で起動してDash→検索"terminal"
  2. $ sudo fdisk /dev/sda
  3. [GPTをサポートしません・・・]とか言われるけど無視する。
  4. とりあえず状態を確認
  5. : p
    デバイス ブート 始点 終点 ブロック ID システム /dev/sda1 1 39070・・・ 19535・・・ ee GPT
  6. パーティションをアクティブにする
  7. "a"→"1"→"w"
  8. 終了
  9. $ sudo shutdown -h 0
OSインストールの手順は以上、次は初期セットアップ以降の手順を。

ついでに調べた事項のメモ、RAID1構成にしてインストールした時に以下のようなメッセージが出る場合について。
[Do you want to boot your system if your RAID becomes degraded?]

Yes を選ぶと、degraded 時に case.1
No を選ぶと、degraded 時に case.2

case.1
起動時に以下のメッセージが出て、そのまま起動します。
started the RAID in degraded mode.

case.2
起動時に以下のメッセージが出ます。
Do you wish to start the degraded RAID? [y/N]:

いいえが無難かなぁ。

参考
https://forums.ubuntulinux.jp/viewtopic.php?id=9232

初期セットアップ以降の手順

文字化け対策

$ vim ~/.profile
以下を追記
case $TERM in
linux) LANG=C ;;
*) LANG=ja_JP.UTF-8 ;;
esac
:wq
$ sudo shutdown -r 0
今後の新規ユーザーにも適用する
$ sudo vim /etc/skel/.profile
自分の.profileと同じ変更をする(動作未確認)


念の為IP確認

$ ifconfig
IPはinet addr:・・・のところ
MACアドレスはHWaddr・・・のところ


ネットワーク設定確認

$ more /etc/network/interfaces
address 192.168.1.xxx
netmask 255.255.255.0
network 192.168.1.0
broadcase 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.1
dns-search mydomain


ソフトウェアアップデート

※今回はapt-getではなく、aptitudeを採用してみる
$ sudo aptitude update
$ sudo aptitude full-upgrade
$ sudo shutdown -r 0

以降、SSHクライアントから作業する
今回は、以前インストールしたPederosaからやる。
注意なのは、今後mysqlをインストールする際には直接コンソールからやること。
なぜかSSHクライアントからだと操作不能になる。


インストール作業に用いるソフトウェアインストール

$ sudo aptitude install zip


時計のセットアップ

9.04と比べて設定ファイル名が変わっていた
今回はNTPサーバー機能は入れない
$ sudo sed -i 's/NTPSERVERS="ntp.ubuntu.com"/NTPSERVERS="ntp.nict.jp"/g' /etc/default/ntpdate
$ sudo ntpdate -u ntp.nict.jp
ハードウェアの時計に反映
$ sudo hwclock -w
なお、手動で日時変更する場合は
$ sudo date 1129225808
これで2008/11/29 22:58:00になる


↓winbindはsambaの兄弟で、今回はsambaをソースからインストールする関係で念のため入れないでおく

Ubuntu→Windowsの名前解決

そのままだとUbuntuからWindowsの名前を解決できない。
Windowsと同じようにNetBIOSの名前解決ができるようにする。
winbindをインストールし、名前解決方法にwinsを追加するとできるようになる。
$ ping Windows機ホスト名
→だめ
$ sudo aptitude install winbind
$ sudo vim /etc/nsswitch.conf
hosts: files dns となっているところを
hosts: files dns wins にする
$ sudo /etc/init.d/winbind restart
$ ping Windows機ホスト名


FireWallのセットアップ

UbuntuのFireWallはiptablesで行われる。
簡単に操作するためのuwfというツールもある。

FireWall初期設定の確認
$ sudo iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
何も設定されていない。
仕組みはよくわからないけど、何も触らなくてもインストールしたソフトは自動で使える、みたいな状態。
一度設定した以降は、ちゃんとポート設定しないといけないっぽい?

今回色々設定したけど記事の趣旨からは外れるのでここでは説明しない。
多分そのままでも動作はするはずで、だめなら必要に応じて設定すればよい。


postfixによるメール設定

ここではgmailを使用する
$ sudo postconf -e relay_transport=smtp
$ sudo postconf -e relayhost=[smtp.gmail.com]:587
$ sudo postconf -e smtp_use_tls=yes
$ sudo postconf -e smtp_sasl_auth_enable=yes
$ sudo postconf -e smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd
$ sudo postconf -e smtp_sasl_security_options=noanonymous
$ sudo postconf -e smtp_sasl_mechanism_filter=plain
$ sudo postconf -e smtp_tls_security_level=secure
$ sudo postconf -e smtp_tls_CApath=/etc/postfix/certs

ログイン情報を作成する
$ sudo touch /etc/postfix/sasl_passwd
$ sudo vim /etc/postfix/sasl_passwd
↓の行を記入する
[smtp.gmail.com]:587 メールアドレス:パスワード
$ sudo chmod 600 /etc/postfix/sasl_passwd
$ sudo postmap /etc/postfix/sasl_passwd

$ sudo mkdir /etc/postfix/certs
$ sudo chmod 600 /etc/postfix/certs
$ cat /etc/ssl/certs/Equifax_Secure_CA.pem | sudo tee -a /etc/postfix/certs/Equifax_Secure_CA.pem
$ cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem | sudo tee -a /etc/postfix/Thawte_Premium_Server_CA.pem
$ c_rehash /etc/postfix/certs
$ sudo vim /etc/postfix/submit.cred
submitcred version 1
hostname|username|password
$ sudo chmod 600 /etc/postfix/submit.cred
※submit.credは要らない可能性あり
$ sudo /etc/init.d/postfix restart
送信テスト
$ mail 宛先メールアドレス
本文は.で終了
うまくいかない場合は/var/log/mail.logを確認
"Server certificate not trusted"と出ている場合はpemがおかしい

参考:
http://ubuntu-tutorials.com/2008/11/11/relaying-postfix-smtp-via-smtpgmailcom/
http://stevejenkins.com/blog/2011/06/fixing-postfix-certificate-verification-failed-for-gmail-untrusted-issuer-error-message/

メール通知の設定
$ sudo vim /etc/aliases
最初はpostmaster: rootみたいな設定だけある
root: ユーザーアカウント
ユーザーアカウント: メールアドレス
という設定を追記
カンマ区切りで複数設定可能
$ sudo postalias /etc/aliases


これで基本的な初期セットアップ完了。

次はsamba4のインストールとActiveDirectoryの構築。
最近samba4のstable版がリリースされ、samba4からはActiveDirectoryのサーバー機能を備えている。
ActiveDirectoryに必要な機能はDNSサーバーとケルベロスサーバーで、samba4はこの辺を全て内包している。

sambaのサポートページ
http://wiki.samba.gr.jp/mediawiki/

aptitude等でsamba4を入れることもできるけどエラーが多発してインストールすらできない。
ソースからコンパイルして入れてみる。

参考
https://wiki.samba.org/index.php/Samba_4/OS_Requirements
http://paulcolfer.ie/os/linux/samba-4-domain-controller-on-ubuntu-server-12-04/


必要なパッケージインストール

$ sudo aptitude install build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls-dev libreadline-dev python-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr docbook-xsl libcups2-dev xsltproc inkscape libpam0g-dev
※krb5-user はあとで入れる

$ sudo aptitude install gcc python2.7-dev make libacl1-dev python
※インストールされるものはなかった、上記のに含まれてるかも


openldapインストール

samba4をコンパイルするとwinbindやpam関連のsoファイルが生成されるべきだけど、
事前にopenldap関係のパッケージを入れておかないと生成されないっぽい?
$ sudo aptitude install slapd ldap-utils
管理者のパスワード: ※使わないのでなんでもよい

入れるのはいいけどかといって動作しているとなぜかADがおかしくなる。
なのでサービスから外しとく。
$ sudo update-rc.d -f slapd remove


samba4インストール

ソースをダウンロードしてmakeところから。
今回は4.0.6で試した。
$ cd
$ wget http://ftp.samba.org/pub/samba/samba-4.0.6.tar.gz
$ tar -zxvf samba-4.0.6.tar.gz
$ cd samba-4.0.6
$ ./configure
$ sudo make && sudo make install

さっそくADをセットアップする。
Realm(レルム/Kerberosの管理範囲)にはADドメインを、DomainにはNTドメインを入れるらしい。
NTドメインにはドットが含められないらしい。
Realmは組織のDNS名を大文字にしたもの(例えば、SALES.EXAMPLE.COM)を使うのが慣例で、DNSと紐づかない閉じた環境では名前 + ".LOCAL"とすることが多いらしい。
ちなみにOSインストール時のドメイン名は上書きされる感じになるので無視していい。
ServerRoleにはDomainControlerであるdcを選択。ActiveDirectoryのサーバー以外にしたりするなら他を選ぶ。
DNS backendにはDNSサーバーの種類を選ぶ、今回はsambaに任せるのでSAMBA_INTERNAL。
DNS forwarder ・・・には親となるDNSサーバーを選ぶ、今回はルーターを。

$ sudo /usr/local/samba/bin/samba-tool domain provision
Realm []: MYDOMAIN.LOCAL
Domain []: MYDOMAIN
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
DNS forwarder IP address (write 'none' to disable forwarding) [192.168.1.1]:
Administrator password: パスワード
起動は単純に実行するだけ
$ sudo /usr/local/samba/sbin/samba
$ ps aux|grep samba
ずらずら表示されていたらOK
※4.0.5->4.0.6で数がだいぶプロセス減ってるような?


sambaのサービス化

毎回手動実行は大変なのでサービス登録する
$ sudo vim /etc/init.d/samba4

次のようなスクリプトを記述する。
#! /bin/sh
### BEGIN INIT INFO
# Provides: samba
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Samba
# Description: Samba Domain controller
# scheduler
### END INIT INFO
#
#
#
set -e

PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/local/samba/sbin/samba

test -x $DAEMON || exit 0

case "$1" in
start)
echo -ne "Starting Samba" "samba \n"
$DAEMON -D
;;
stop)
echo -ne "Stopping Samba" "samba \n"
PIDSMB=`ps -e | grep samba | awk '{ print $1 }'`
killall samba
;;
restart)
$0 stop
echo -ne "Sleeping 5 Seconds Before Start: \n"
sleep 5
$0 start
;;
*)
echo "Usage: /etc/init.d/samba4 {start|stop|restart)"

exit 1
;;
esac

exit 0
注意:ファイル名はsambaではだめなのでsamba4にしている、killallで処理中のこのスクリプトまでkillされてしまう

スクリプトを自動実行するようにする。
$ sudo chmod +x /etc/init.d/samba4
$ sudo update-rc.d samba4 defaults 98 02
ちなみにサービスの状態を確認するには
$ sudo aptitude install chkconfig
$ sudo chkconfig --list samba4
ランレベル毎に表示されるらしい。


ネットワーク設定を正す

インストールしただけだとネットワーク関連の設定ファイルが全然だめな状態なので直す。

参考
http://www.be-dama.com/kb/samba4-ad-mini-howto/samba_init_setting.html

$ sudo vim /etc/hostname
もともと
ホスト名
となっているものを
ホスト名.レルム
を(多分)小文字で記述する
ubuntu.mydomain.local

$ sudo vim /etc/hosts
127.0.0.1 localhost
UbuntuサーバーIP ホスト名.レルム ホスト名

今回だと
192.168.1.xxx ubuntu.mydomain.local ubuntu

interfacesに書いてあるDNSサーバー情報とかを移動する。
interfaces辺りの編集を間違えててハマッタ
参考
http://d.hatena.ne.jp/studio-m/20080213/1202862706
http://iabsis.com/EN/article/35-2/Samba4-installation

$ sudo vim /etc/resolvconf/resolv.conf.d/base
もともと空
search レルム名
nameserver UbuntuサーバーIP
に変更する。
search mydomain.local
nameserver 192.168.1.xxx
$ sudo resolvconf -u
ポイントはnameserver(DNS)にルーターを指定せず自分を指定するところ。

interfacesから移動した記述を削除
$ sudo vim /etc/network/interfaces
もともと
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.xxx
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.1.1
dns-search mydomain

dns-*系があればコメントアウトする
# dns-* options are implemented by the resolvconf package, if installed
#dns-nameservers 192.168.1.1
#dns-search mydomain

ネットワーク再起動
$ sudo ifdown eth0 && sudo ifup eth0

問題なくサービス再起動することを確認
$ sudo /etc/init.d/samba4 restart

一通り終わったので再起動してみる。
$ sudo shutdown -r 0


ADの動作確認

ドメイン定義の確認
$ /usr/local/samba/bin/smbclient -L localhost -U%
Domain=[XXXXXXXX] OS=[Unix] Server=[Samba 4.0.6]

Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba 4.0.6)
sysvol Disk
netlogon Disk
Domain=[XXXXXXXX] OS=[Unix] Server=[Samba 4.0.6]

Server Comment
--------- -------

Workgroup Master
--------- -------
みたいな感じで表示されればOK

DNSの確認
$ sudo host -t SRV _ldap._tcp.mydomain.local 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:

_ldap._tcp.mydomain.local has SRV record 0 100 389 ubuntu.mydomain.local.

ドメイン管理者でログオンできるか
$ /usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator%'パスワード' -c 'ls'
Domain=[XXXXXXXX] OS=[Unix] Server=[Samba 4.0.6]
. D 0 Sun May 19 22:48:09 2013
.. D 0 Sun May 19 22:48:20 2013

34196 blocks of size 524288. 27826 blocks available
※パスワードに'が含まれている場合は"で囲む


kerberosの確認

adの暗号認証が機能しているか確認する。
sambaでadが動いた時点でサービスとしては動いてるはずで、udp88とかがnmapで確認できればよい。
問題はネットワーク設定がちゃんとしてなくてローカルから確認が失敗することが多そう。
adとしては起動に必須ではないはずで動いてるかわからないため念のため動作確認する。

sambaでドメイン立ち上げた時にできるテンプレートファイルをコピーしておく
$ sudo cp /usr/local/samba/private/krb5.conf /etc/.

kerberosクライアントインストール
レルムにはADのレルムを、
ケルベロスサーバーと管理サーバーに自分のホスト名を入れる。
$ sudo aptitude install krb5-user
デフォルトのケルベロスバージョン 5 レルム:MYDOMAIN.LOCAL
あなたのレルムのケルベロスサーバ: ubuntu
あなたのケルベロスレルムの管理サーバー: ubuntu
※質問の順番がなぜか違う時がある

$ sudo shutdown -r 0
※再起動しないとなぜかだめだった

$ kinit administrator@MYDOMAIN.LOCAL
※レルム名は大文字
何も帰ってこないか、パスワードに関する警告が出ればOK

接続のチケット(許可?)の一覧
$ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: administrator@MYDOMAIN.LOCAL
みたいな感じで出ればOK


AD管理ツールでの確認

$ sudo /usr/local/samba/bin/wbinfo -t
checking the trust secret for domain MYDOMAIN via RPC calls succeeded
succeededと出ればOK

$ sudo /usr/local/samba/bin/wbinfo -u
$ sudo /usr/local/samba/bin/wbinfo -g
でドメインのユーザーとグループが表示されればOK

試しにパスワードポリシー表示
$ sudo /usr/local/samba/bin/samba-tool domain passwordsettings show
Password informations for domain 'DC=mydomain,DC=local'

Password complexity: on
Store plaintext passwords: off
Password history length: 24
Minimum password length: 7
Minimum password age (days): 1
Maximum password age (days): 42

他にも、SSHでログインできるようにもできるらしいけど今回は調べない。

セットアップ完了。
次会hADへのユーザー追加とかファイルサーバーのセットアップとか。


ユーザー追加
$ sudo /usr/local/samba/bin/samba-tool user add tester

この時点でWindows機から確認してみる。
ネットワークの設定からDNSのIPをUbuntuサーバー機にする。
念の為ネットワークアダプタを無効にしてから有効化。
ping mydomain.local
で通ることを確認。

でもって、コントロールパネルのシステムからドメイン情報を入力すると参加できた。


ADユーザーとUbuntu情報の連携
make時にwinbindやpamといった名前のついたファイルができている。
これらをシステムに組み込んでユーザー情報を連携させる。
その際、既にあるファイルを退避させとく。
$ sudo mv /lib/x86_64-linux-gnu/libnss_winbind.so.2 /var/tmp/.
$ sudo ln -s /usr/local/samba/lib/libnss_winbind.so.2 /lib/x86_64-linux-gnu/libnss_winbind.so
$ sudo ln -s /lib/x86_64-linux-gnu/libnss_winbind.so /lib/x86_64-linux-gnu/libnss_winbind.so.2
$ sudo mv /lib/x86_64-linux-gnu/security/pam_winbind.so /var/tmp/
$ sudo ln -s /usr/local/samba/lib/pam_winbind.so /lib/x86_64-linux-gnu/security/pam_winbind.so

sambaのシェル設定
$ sudo vim /usr/local/samba/etc/smb.conf
[global]
...
template shell = /bin/bash
...

連携する用に設定
$ sudo vim /etc/nsswitch.conf
passwd: compat
group: compat
shadow: compat

passwd: compat winbind
group: compat winbind
shadow: compat winbind
に変更

設定読み込み(再起動しても同じ効果らしい)
$ sudo ldconfig -v | grep winbind

winbindの動作確認
$ /usr/local/samba/bin/wbinfo -p
Ping to winbindd succeeded

ユーザー情報の連携確認
$ getent passwd
MYDOMAIN\Administrator:*:0:100::/home/MYDOMAIN/Administrator:/bin/bash
などがずらずらでればOK

これでActiveDirectoryのユーザーがLinuxから参照できる?
$ id Administrator
uid=0(root) gid=100(users) groups=0(root),100(users),3000004(MYDOMAIN\Group Policy Creator Owners),3000006(MYDOMAIN\Enterprise Admins),3000008(MYDOMAIN\Domain Admins),3000007(MYDOMAIN\Schema Admins)

UID/GIDに関してはよーわからんけど
$ sudo /usr/local/samba/bin/ldbedit -e vi -H /usr/local/samba/private/idmap.ldb
でUIDとかのマッピング情報が見られるらしく
lowerBound: 3000000
upperBound: 4000000
とかあるので、3000000~4000000の間でIDでが振られるのかもしれない

ADユーザー情報
$ /usr/local/samba/bin/wbinfo --user-info Administrator
MYDOMAIN\Administrator:*:0:100::/home/MYDOMAIN/Administrator:/bin/false
UID=0 つまりroot

$ /usr/local/samba/bin/wbinfo --user-info tester
MYDOMAIN\tester:*:3000016:100::/home/MYDOMAIN/tester:/bin/false
UID=3000016 新たなID

ADグループ情報
$ /usr/local/samba/bin/wbinfo --group-info 'Domain Users'
MYDOMAIN\Domain Users:*:100:
GID=100 つまり users

というわけでグループを作ってみる
$ sudo /usr/local/samba/bin/samba-tools group add 'TestUsers'
$ sudo /usr/local/samba/bin/samba-tools group addmembers 'TestUsers' tester
※カンマ区切りで複数追加できるっぽい

ADグループ情報
$ /usr/local/samba/bin/wbinfo --group-info 'TestUsers'
MYDOMAIN\TestUsers:*:3000019:

参考
http://web.chaperone.jp/w/index.php?samba%2Fuser
http://wiki.samba.gr.jp/mediawiki/index.php?title=Samba_4.0.0%E3%81%AEDC%E4%B8%8A%E3%81%A7UID/GID%E3%81%AE%E5%80%A4%E3%81%ABUNIX%E5%B1%9E%E6%80%A7%E3%81%8C%E5%8F%8D%E6%98%A0%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84


ファイルサーバーセットアップ
sambaでファイルサーバーをセットアップする。

$ sudo vim /usr/local/samba/etc/smb.conf
# Global parameters
[global]
workgroup = MYDOMAIN
realm = MYDOMAIN.LOCAL
netbios name = UBUNTU
server role = active directory domain controller
dns forwarder = 192.168.1.1


[netlogon]
path = /usr/local/samba/var/locks/sysvol/mydomain.local/scripts
read only = No

[sysvol]
path = /usr/local/samba/var/locks/sysvol
read only = No
みたいな感じになっているところに
[global]
dos charset = CP932
unix charset = UTF-8

[share]
comment = share contents
path = /home/MYDOMAIN
read only = No
を追記する
$ sudo /etc/init.d/samba4 restart
$ sudo mkdir /home/MYDOMAIN
$ sudo chmod 755 /home/MYDOMAIN
$ sudo chown root:'MYDOMAIN\TestUsers' /home/MYDOMAIN

参考
http://sheepdogjam.cocolog-nifty.com/blog/2013/01/raspberrypi-sam.html

Windowsマシンから
\\192.168.1.XXX\
で共有フォルダが見えるようになる
ホスト名でも繋がるけど、何度かインストール手順を色々試してるとなぜかつながらないパターンがある。。。


プライマリグループの変更
このままだとドメインユーザーのプライマリグループがusersになっている。
ファイルサーバーで新規に作成したファイルのアクセス権設定がやりづらい。
設定ファイルを直接変更すれば変更できる。
$ sudo /usr/local/samba/bin/ldbedit -e vi -H /usr/local/samba/private/sam.ldb
/ユーザー名
などでユーザーの定義を探す
たぶん
objectClass: user
name: ユーザー名
となっていると思う
そこの
primaryGroupID: ・・・・
を変更先のグループに変える

IDを調べる方法は
$ /usr/local/samba/bin/wbinfo --name-to-sid グループ名
とした結果の末尾がID
今回だと
S-1-5-21-3800727457-1005178589-2210324449-1107 SID_DOM_GROUP (2)
となって、1107がIDとなる

primaryGroupID: 1107
とセットする
$ sudo /etc/init.d/samba4 restart
これで、プライマリグループの変更ができる。


おまけ

未確認やあまりはっきりしないことなど。

(20131031追記) Windows機をADに参加
普通にシステム詳細からドメインに参加すればよい。 ○○○○.LOCAL この時、アカウント情報を求められるが、ドメイン管理者(Domain Amins)の権限が必要らしい。 そうじゃない場合、Samba4だけかもしれないが次のようなエラーメッセージが出て混乱させられる。 「 ”***”という名前のコンピューターアカウントが以前、別の資格情報で作成された可能性があります。 別のコンピューター名を使うか、管理者に連絡して、競合を発生している無効なアカウントを削除してもらって下さい。 アクセスが拒否されました。」 なので、一般ユーザーを登録する場合は、まずはシステム詳細から管理者権限でドメインに参加し、 その後、一般ユーザーでPCにログインさせるといった感じになる。 また、WindowsVista以降では次の操作をしないといけないらしい(Pro未満の場合はレジストリ操作になる?) Windowsキー+R -> secpol.msc ローカルポシリー->セキュリティオプション ネットワーク セキュリティ: LAN Manager 認証レベル を変更する 未定義 -> 「NTLM応答のみ送信する」または「LMとNTLM応答を送信する」に変更する ※一度変更すると初期値(設定前)に戻せないので注意、初期値は「NTMv2応答のみを送信する」
AD管理をWindows7から
Ubuntuからだとコマンドベースで大変。
UIでやるならWindows7のリモート管理ツールというのが使えるらしい。

http://www.microsoft.com/ja-jp/download/details.aspx?id=7887
Win7用リモート管理ツールをダウンロードしてインストール

コントロールパネル→プログラムと機能→Windowsの機能の有効化または無効化
役割管理ツール→AD DS およびAD LDSツール→AD DSツール→ActiveDirectory管理センタをチェックする
一緒にいくつかチェックされるのでそのままにしておく→OK

で、前提条件としてWindows機からドメインに管理者権限で参加しておく必要があるっぽい。

スタートメニュー→管理ツール→ActiveDirectoryユーザーとコンピュータ
エラーが出るけど気にしない

操作→ドメインコントローラの変更→次のドメインコントローラーまたはAD LDS インスタンス
ドメイン名を入力
状態がオンラインになればOK

参考
http://www.kurobuti.com/blog/?p=6318
http://d.hatena.ne.jp/rti7743/20110425/1303688263


RAID1構築後に2台目HDDのbiosgrubパーティションセットアップ
1台目の情報をコピーする。
$ sudo dd if=/dev/sda1 of=/dev/sdb1 bs=512
をする

参考
http://nabe.blog.abk.nu/0301
http://blog.lwlv.net/archives/323


samba起動エラー解消
そのままだとsamba起動時にエラーが出ている。
$ sudo vim /usr/local/samba/etc/smb.conf
[global]に以下を追記
printing = bsd
load printers = no
printcap name = /dev/null
$ sudo /etc/init.d/samba4 restart


SWATのインストール
sambaの管理UI
$ sudo aptitude purge openbsd-inetd
※なければそれでよい

$ sudo aptitude install xinetd
$ sudo update-inetd --enable 'swat'
$ sudo dpkg-reconfigure xinetd
$ sudo vim /etc/xinetd.d/swat
service swat
{
port = 901
socket_type = stream
wait = no
only_from = 127.0.0.1 192.168.1.0/24
user = root
server = /usr/local/samba/sbin/swat
log_on_failure += USERID
disable = no
}

$ sudo vim /etc/inetd.conf
からswatに関する記述をコメントアウト
なぜかconfが残りっぱなしでxinetdが若干影響受けてるっぽいので念の為
※もともとなければ不要

swatのヘルプページがなぜかおかしいのは放置
samba-docを入れてwelcome.htmlを修正すればいいらしいが・・・
全部修正するのは大変だしsamba4のdocumentでちゃんとしたのが見つからなかった

もいちど再起動
$ sudo dpkg-reconfigure xinetd

rootにパスワードを与える
$ sudo passwd root

Windows機から
http://Ubuntuホスト名:901/
でswatに繋がる

なお、Ubuntu12.04の通常のsambaとswatではなぜかswatには繋がるけど
何かすると真っ白になるという状態になった
samba4でイチからビルドした場合はうまくいくっぽい


名前解決
インストール内容によってはWinowsマシンからLinuxマシンを名前解決できないケースがある。
その場合は次の操作で繋がるパターンがあった。

nmbdを入れる
$ sudo aptitude install samba

nmbdだけ欲しくてsmbdはいらないのでサービス停止
$ sudo /etc/init.d/smbd stop

smbdはupstartでサービス登録されているけど
念の為 SysV init の停止もする。多分えらー
$ sudo update-rc.d smbd disable
upstartの記述を削除する
$ sudo vim /etc/init/smbd.conf
start on ・・・ という行を#でコメントアウト

これで再起動してもsmbdが起動しないようになる
なお、/etc/init.d/ではなくserviceコマンドを使うこともあるが
これはupstartとSysV initの区別をしなくてもいいコマンドらしい

この状態でWIndowsマシンから
> ping ホスト名
で名前解決できていることを確認


その他参考にしたかもしれないサイト

http://www.kurobuti.com/blog/?p=6278http://d.hatena.ne.jp/torutk/20130301/p1
http://blog.bis5.net/archives/138
http://paulcolfer.ie/os/linux/samba-4-domain-controller-on-ubuntu-server-12-04/
https://wiki.samba.org/index.php/Samba_AD_DC_HOWTO
http://www.matrix44.net/cms/notes/gnulinux/samba-4-ad-domain-with-ubuntu-12-04
http://d.hatena.ne.jp/vivid_skid/20130417/1366159279
http://krakenbeal.blogspot.jp/2011/03/ubuntuswat.html
http://www.aconus.com/~oyaji/samba/samba.htm
http://www.samba.gr.jp/doc/contrib/begin_samba2.0.html
http://askubuntu.com/questions/196272/how-to-install-and-configure-swat-in-ubuntu-server-12-04
http://www.samba.gr.jp/project/translation/Samba3-HOWTO/FastStart.html
http://fummy-net.blogspot.jp/2013/04/samba4-active-directory-pdc.html#centos_domain_login


2012-08-08

epgdumprにパッチをあてる

以前pt2をインストール手順を記載した際、epgdumprは素のまま入れてパッチをあてませんでした。
今回はubuntuやrecpt1のアップグレードにあわせてパッチを当ててみようと思います。

参考:
http://mizupc8.bio.mie-u.ac.jp/pukiwiki/index.php?%E5%9C%B0%E3%83%87%E3%82%B8%2FKTV-FSUSB2

まずはパッチをダウンロードしてubuntuのワークフォルダにコピーします

http://www.honeyplanet.jp/epgdumpr2-utf8_segv.patch.gz
SEGV対策パッチ

http://www.mediafire.com/2sen
DTV→
up0246.zip
epgdump r2 184byte オーバーフロー修正パッチ (fix_overflow_184.patch)
up0248.zip
epgdump r2 セクション読み込みオーバーフロー修正&ファイルオープン状況確認パッチ
(fix_overflow_maxseclen.patch)



次にパッチを当ててからmake

$ wget "http://www.mda.or.jp/epgrec/index.php?plugin=attach&refer=%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E5%89%8D%E3%81%AE%E6%BA%96%E5%82%99&openfile=epgdumpr2-utf8.tar.gz" -O epgdumpr2-utf8.tar.gz
$ tar -zxvf epgdumpr2-utf8.tar.gz
$ wget http://www.honeyplanet.jp/epgdumpr2-utf8_segv.patch.gz
$ gunzip epgdumpr2-utf8_segv.patch.gz
$ unzip up0246.zip
$ unzip up0248.zip
$ cd epgdumpr2
$ patch -p1 < ../fix_overflow_184.patch
$ patch -p1 < ../fix_overflow_maxseclen.patch
$ patch -p1 < ../epgdumpr2-utf8_segv.patch
$ make

ここでエラーが出た
eit.c:295:31: error: array subscript is above array bounds [-Werror=array-bounds]
cc1: all warnings being treated as errors
make: *** [eit.o] エラー 1

http://baalzephon.dyndns.org/tech/index.php?Linux%2F%E3%83%86%E3%83%AC%E3%83%93%E9%96%A2%E9%80%A3%2Fepgrec
を参考にパッチを当てた
パッチを作りました→epgdumpr2-utf8_arraybounds.zip

ワークフォルダに移動して
$ wget --trust-server-names http://db.tt/iE8qfFka
$ unzip epgdumpr2-utf8_arraybounds.zip
$ cd epgdumpr2
$ patch -p1 < ../epgdumpr2-utf8_arraybounds.patch

リトライ
$ rm *.o
$ make
$ sudo make install
成功!

動作確認
$ recpt1 --b25 --strip 22 30 test.ts
$ epgdump test test.ts - | less


【アースソフト】地デジチューナー PT3 Rev.A
【アースソフト】地デジチューナー PT3 Rev.A
価格:13,860円(税込、送料別)

2012-08-06

12.04でpt2再インストール(httpサーバー版に変更)

Ubuntuを12.04にした関係でpt2周りがおかしくなったのを機に
最新版を入れなおしてみました。
また、今までとは違う派生パッケージを入れてみました。
今まではhttp://hg.honeyplanet.jp/pt1/の新本家を使っていたのですが
httpサーバーとしてリアルタイム視聴もできるhttpサーバー版を採用。
(例によってpt2周りはシミュレーションだったりb-casなしだったりの情報とします)

まずは既に入っていて邪魔しそうなものをアンインストール
arib25(方法が正しいかは不明)
$ sudo updatedb
$ locate arib25
にて表示されるarib25関連ファイルを削除する

pt1のdriver
$ rmmod /lib/modules/`uname -r`/kernel/drivers/video/pt1_drv.ko

Ubuntu10.10以降の場合、求めているchardev版ではなくdvb版のドライバがロードされてしまうらしいので
$ sudo vi /etc/modprobe.d/blacklist.conf
最後の行に
blacklist earth-pt1
を追記する

必要なパッケージを入手
$ sudo aptitude install build-essential

arib25同梱のパッケージをダウンロード
$ wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.zip

http://www.mediafire.com/2sen
から
up0319.zip (recpt1のhttpサーバー版RC4
up0307.zip (recpt1パッチ
up0340.zip (recpt1パッチ
をダウンロード

http://baalzephon.dyndns.org/tech/index.php?Linux%2F%E3%83%86%E3%83%AC%E3%83%93%E9%96%A2%E9%80%A3%2FPT2
からpt1_pci.c.tgz(パッチ適用済)をダウンロード (recpt1パッチ

http://d.hatena.ne.jp/katauna/20111225/1324810159
からrecpt1_epg_slim.tar.gzをダウンロード (recpt1パッチ

Ubuntu12.04標準パッケージだとpt2が動かないため古いパッケージを入れなおす
$ sudo aptitude install pcscd=1.5.5-3ubuntu2.1 libpcsclite1=1.5.5-3ubuntu2.1 libccid=1.3.11-1 pcsc-tools=1.4.16-1 libpcsclite-dev=1.5.5-3ubuntu2.1

古いパッケージを固定する
$ sudo aptitude install wajig
$ sudo wajig pcscd libpcsclite1 libccid pcsc-tools libpcsclite-dev

arib25インストール
$ cd
$ unzip pt1-c44e16dbb0e2.zip
$ cd pt1-c44e16dbb0e2/arib25
$ make
$ sudo make install

pt1driverインストール
$ cd
$ unzip up0319.zip
$ tar xvfz pt1_pci.c.tgz
$ cp pt1_pci.c ./pt1-http-rc4_fix/driver/.
$ cd pt1-http-rc4_fix/driver
$ make
$ sudo make install
$ sudo modprobe pt1_drv
一旦電源OFF→再起動した方が良いという説も

recpt1インストール
$ cd
$ unzip up0307.zip
$ cd pt1-http-rc4_fix/
$ patch -p1 < ../pt1-http-rc4-fix-pmt-scan.diff

$ cd
$ unzip up0340.zip
$ cd pt1-http-rc4_fix/recpt1/
$ patch -p0 < ../../patch/bs.patch

$ cd
$ tar xvzf recpt1_epg_slim.tar.gz
$ cd pt1-http-rc4_fix/recpt1/
$ patch -p0 < ../../recpt1_epg_slim/recpt1_epg_slim.patch

$ cd
$ cd pt1-http-rc4_fix/recpt1/
$ ./autogen.sh
$ ./configure --enable-b25
$ make
$ sudo make install

動作確認
$ recpt1 --b25 --strip --sid hd 25 30 test.ts
ここで--b25と--stripがunrecognizedと出る場合はarib25のインストールがうまくいっていない

httpサーバーとして動作させる場合は
$ recpt1 --b25 --strip --http 8888
とする。実際にデーモン起動の場合は
$ recpt1 --b25 --strip --http 8888 > /dev/null 2>&1
とする。
※チャンネルは受信側で指定する

epgrec動作確認
$ OUTPUT=test.ts CHANNEL=25 DURATION=30 TUNER=0 MODE=0 TYPE=GR /var/www/epgrec/do-record.sh
$ /var/www/epgrec/getepg.php

最後にhttpサーバーからの受信を行う

クライアントにはTVTestを用いる
http://tvtest.zzl.org/から最新版を入手。特に理由がなければx86版でいいらしい。

プラグインが必要で
http://www.mediafire.com/2senからup303(BonDriver_HTTP.dll)を入手。
TVTest.exeと同じフォルダに入れる。
BonDriver_HTTP.iniにチャンネル設定を行う
中身を見れば設定方法はだいたいわかる。
pathのallは帯域が厳しければhdにすると少しはマシになるかもしれない。

TVTest.exeを実行
初期設定では
ドライバ:BonDriver_HTTP.dll

これで受信ができるはず。
なお、vlcなどの通常のストリームクライアントから受信する場合は、
URLとして
http://ホスト名orIP:8888/チャンネル/SID
例:
http://192.168.1.123:8888/25/all
で受信可能。
all, hd, sd1, sd2, sd3, 1segなどが使用できるらしい。


参考:
http://kopemon.wordpress.com/2010/12/24/recpt1-http%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E7%89%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/
http://www.castanet.homeip.net/~tos/wiki/index.php?FreeBSD%A4%C7%C3%CF%A5%C7%A5%B8%A5%D3%A5%C7%A5%AA%A5%B5%A1%BC%A5%D0
http://webcache.googleusercontent.com/search?q=cache:eG_WdU3uJ6IJ:asakaryo777.blog39.fc2.com/blog-entry-192.html+&cd=3&hl=ja&ct=clnk&gl=jp


【送料無料】Ubuntu Magazine Japan(vol.05)
【送料無料】Ubuntu Magazine Japan(vol.05)
価格:1,155円(税込、送料別)
Ubuntu上級活用マニュアル/阿久津良和
Ubuntu上級活用マニュアル/阿久津良和
価格:3,129円(税込、送料別)

Ubuntu10.04 -> 12.04(2/2)

12.04へのアップグレードについて、part1の状態でいくつか問題がありました。
・ubuntu起動スプラッシュが10.04のまま
・結構な数のパッケージが依存エラー
・(b-casなしで試しに入れてる)pt2やmysqlなんかが動かない

試行錯誤の結果なんとか復旧した模様ではあるのですが、直接の原因は不明。
個人的な感触としては原因は
「12.04へのアップグレード時にmediaubuntuの最新パッケージリポジトリが参照できなくて依存関係が破壊された」です。

というわけで、この段階で同様のエラーが起きている人は今後のアクション方針を定めた方が良いです。
1.このブログを無視する
2.「今思えばこうすればよかったかも」を実施
3.このブログ通りに試行錯誤する
4.アップグレードを諦めてバックアップをリカバリする

2.「今思えばこうすればよかったかも」について
エラーが起きる前に対策できれば良さそうですがよくわからない。しかしきっとこれが原因。
エラーが起こって再起動した後、、、mediabuntuの最新リポジトリを登録する。
$ sudo wget --output-document=/etc/apt/sources.list.d/medibuntu.list
http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list
$ sudo aptitude update
$ sudo aptitude install medibuntu-keyring
$ sudo aptitude update
$ sudo aptitude upgrade

これをしておけばエラー解決も早い・・・はず

以降、試行錯誤の記録。

12.04アップグレード後、pt2を実行してみたところ。。。
$ recpt1 --b25 --strip 22 30 test.ts
using B25...
enable B25 strip
pid = 12319
Cannot tune to the specified channel
エラーが出ることに気づく。

さらに、
$ sudo apt-get install -s
としてみたところ
以下の問題を解決するために 'apt-get -f install' を実行する必要があるかもしれません:
以下のパッケージには満たせない依存関係があります:
gnome-keyring: 依存: libgtk-3-0 (>= 3.0.0) しかし、インストールされようとしていません
依存: libcap2-bin しかし、インストールされようとしていません
libgcr-3-1: 依存: libgtk-3-0 (>= 3.1.4) しかし、インストールされようとしていません
依存: libgcr-3-common しかし、インストールされようとしていません
libgnome-keyring0: 依存: libgnome-keyring-common (= 3.2.2-2) しかし、インストールされようとしていません
libgtk2.0-0: 依存: libx11-6 (>= 2:1.4.99.1) しかし、2:1.3.2-1ubuntu3 はインストールされようとしています
libx11-dev: 依存: libx11-6 (= 2:1.4.99.1-0ubuntu2) しかし、2:1.3.2-1ubuntu3 はインストールされようとしています
推奨: libx11-doc しかし、インストールされようとしていません
libxcomposite1: 依存: libx11-6 (>= 2:1.4.99.1) しかし、2:1.3.2-1ubuntu3 はインストールされようとしています
libxdamage1: 依存: libx11-6 (>= 2:1.4.99.1) しかし、2:1.3.2-1ubuntu3 はインストールされようとしています
libxext6: 依存: libx11-6 (>= 2:1.4.99.1) しかし、2:1.3.2-1ubuntu3 はインストールされようとしています
libxfixes3: 依存: libx11-6 (>= 2:1.4.99.1) しかし、2:1.3.2-1ubuntu3 はインストールされようとしています
libxi6: 依存: libx11-6 (>= 2:1.4.99.1) しかし、2:1.3.2-1ubuntu3 はインストールされようとしています
libxinerama1: 依存: libx11-6 (>= 2:1.4.99.1) しかし、2:1.3.2-1ubuntu3 はインストールされようとしています
libxrender1: 依存: libx11-6 (>= 2:1.4.99.1) しかし、2:1.3.2-1ubuntu3 はインストールされようとしています
python-gconf: 依存: python2.7 しかし、インストールされようとしていません
依存: python (>= 2.7) しかし、2.6.5-0ubuntu1 はインストールされようとしています
依存: python-gobject-2 (>= 2.17.0) しかし、インストールされようとしていません
python-gi: 依存: python2.7 しかし、インストールされようとしていません
依存: python (>= 2.7.1-0ubuntu2) しかし、2.6.5-0ubuntu1 はインストールされようとしています
python-gnome2: 依存: python2.7 しかし、インストールされようとしていません
依存: python (>= 2.7.1-0ubuntu2) しかし、2.6.5-0ubuntu1 はインストールされようとしています
依存: python-gobject-2 (>= 2.17.0) しかし、インストールされようとしていません
python-gobject: 依存: python-gobject-2 しかし、インストールされようとしていません
python-gtk2: 依存: python2.7 しかし、インストールされようとしていません
依存: python (>= 2.7.1-0ubuntu2) しかし、2.6.5-0ubuntu1 はインストールされようとしています
依存: python-gobject-2 (>= 2.21.3) しかし、インストールされようとしていません
python-gtksourceview2: 依存: python2.7 しかし、インストールされようとしていません
依存: python (>= 2.7) しかし、2.6.5-0ubuntu1 はインストールされようとしています
E: 未解決の依存関係です。'apt-get -f install' を実行してみてください (または解法を明示してください)。

と大量にエラーが。
初めてのエラーだったのでよくわからず、大量にパッケージを削除してみたり強制インストールしてみたりしたがどうにもならず。(というかかなりコアなパッケージまで削除しはじめることになり途中で断念)
他にも古いバージョン指定でインストールとかも試みたけど無理。
最終的にはうまくいき、結局何がよかったのかは不明だけど、次の3つが重要だったと思う。

$ sudo aptitude safe-upgrade
これで12.04になりきれていないパッケージをアップグレードしていく。
スプラッシュもこれで更新された。

確かaptitudeだったと思うが以下のエラーメッセージがでたのでそのディレクトリを手動で削除しておいた。
rmdir: `/var/lib/defoma/fontconfig.d/' を削除できません: ディレクトリは空ではありません

以下のエラーメッセージがapt-getやaptitudeの度に出ていた
E: 'python2.7-minimal' の即時設定は動作しません。詳細については man 5 apt.conf の APT::Immediate-Configure の項を参照してください。(2)
何とかするために
$ sudo aptitude safe-upgrade -o APT::Immediate-Configure=0
というコマンドを実行することで解消できた。

この3つをやってからはとんとん拍子に依存関係が回復していった。


上記にてまずは12.04へのアップグレードが完了し、次にpt2周りを復旧させた。

$ sudo aptitude install libccid pcsc-tools libpcsclite-dev
などをしていると
SCardEstablishContext: Service not available.
というエラーメッセージが出てしまった。
これは
$ sudo aptitude install pcscd
にて復旧した。

次にpcsc_scanをしたがWaitingから進まなくなっていた
$ pcsc_scan
PC/SC device scanner
V 1.4.18 (c) 2001-2011, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.7.4
Using reader plug'n play mechanism
Scanning present readers...
Waiting for the first reader...
USBとしては認識はしているのに・・・
$ lsusb

Bus 003 Device 002: ID 04e6:511a SCM Microsystems, Inc.

これはどうやら最新パッケージを使用しているとだめらしく、古いパッケージをインストールすることで対処した。

$ sudo aptitude install pcscd=1.5.5-3ubuntu2.1 libpcsclite1=1.5.5-3ubuntu2.1 libccid=1.3.11-1 pcsc-tools=1.4.16-1

うちのSCR3310-NTTComの場合、ランプが点滅したら成功らしい。確かに点灯していたのが点滅に変わった。

参考:
http://aqua-linux.blog.so-net.ne.jp/2012-03-25
http://desktoplinuxhowto.blogspot.jp/2012/04/ubuntu-1204-lts-pt21110.html


次に、どうやらarib25がうまく動かなくなっていたようなので入れなおした。
アンインストール方法がわからなかったので無理矢理削除
$ sudo updatedb
$ locate arib25
これで表示されたarib25関係らしきものをすべて削除

次に、recpt1を再ビルドしたらエラーメッセージが出た
decoder.h:26:5: エラー: 不明な型名 ‘uint8_t’ です
これも古いパッケージをインストールすることで対処した。
$ sudo aptitude install libpcsclite-dev=1.5.5-3ubuntu2.1

次に、mysqlがいつものエラーを出して動かなくなっていた
$ sudo service mysql stop
stop: Unknown instance:
$ sudo service mysql start
start: Job failed to start
以前の対処(http://xelalko.blogspot.jp/2011/09/mysql.html)を試みるも復旧せず。
これはどうやら最新mysqlでは設定項目が変わったみたいで、古い設定項目があるせいで動かなかったらしい。(ログを見ればすぐに分かったかもしれない)

$ sudo vi /etc/mysql/my.conf
[mysqld]セクションのdefault-character-setをcharacter-set-serverに名前変更する。
さらにこれらは最近は使わないほうがいいらしい
skip-character-set-client-handshake
init-connect = SET NAMES utf8
またこれはどうやら初期値っぽいのであえて設定する必要はないらしい
collation-server = utf8_general_ci
さいごに
$ sudo /etc/init.d/mysql restart


次に、apache2周りでエラメッセージが出ていた
Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
これはどうやらapache.confにサーバー名を書いていないことが問題らしく
$ sudo vi /etc/apache2/apache.conf
ServerName ホスト名:ポート番号
と記載して
$ sudo /etc/init.d/apache2 restart


こんな感じで12.04へのアップグレードが完了した。
その後は特に問題は出ていない。大変なアップグレード作業であった・・・。


【送料無料】Ubuntu Magazine Japan(vol.05)
【送料無料】Ubuntu Magazine Japan(vol.05)
価格:1,155円(税込、送料別)
Ubuntu上級活用マニュアル/阿久津良和
Ubuntu上級活用マニュアル/阿久津良和
価格:3,129円(税込、送料別)