2017-09-21

Fedora 25で誤ってlightdmを削除したら...

Fedora 25で, lightdmを削除したら, グラフィカルログインができなくなってしまった.
このようなときは, 以下の手順でグラフィカルログインできるようにする.
$ sudo dnf install lightdm lightdm-gdk
$ sudo systemctl enable lightdm.service
$ sudo systemctl start lightdm.service
パッケージ lightdm をインストールするだけでは, グラフィカルログインが有効にならない. systemctl で lightdm.service を有効にする設定をする.

2017-09-16

OBS StudioのOpenGL要件

OBS Studioは, デスクトップやその他の映像をライブで編集・録画・ストリーミングできるソフトだ. OpenGLが使われており, 古いハードウェアでは動かない. LinuxをインストールしたThinkpad X201sで動かそうとすると, 「Failed to initialize video: Unspecified error」というエラーメッセージがでる. BBSの情報によると, Open GL 3.2 が必要らしい.
よくウェブサイトをみたら, システム要件のページができている.

2017-09-10

Redhat系OSの壊れたシステムファイルを修復

なぜかシステムのファイルが変更されてしまったときは, 以下の手順をとる.
  1. 変更されたファイルをつきとめる
    sudo rpm -Va
    
    変更されたファイルが出力される. フラグの「S」はサイズ違い, 「5」はMD5違い.
  2. ファイルを提供するパッケージ名を調べ, 再インストールする.
    rpm -qf /path/to/file
    sudo yum reinstall package_name
    

補足: prelinkというツールがインストールされていると, バイナリファイルに共有オブジェクトをリンクしてしまう. rpm -Vaではprelinkの変更を戻してからmd5をチェックするらしい.

何らかの理由で同じパッケージの異なるバージョンがインストールされてしまった場合, 以下のコマンドでそのようなパッケージを探すことができる.

rpm -qa --qf '%{NAME}\n' | sort | uniq -c | grep -v '^ *1 '

2017-09-09

SL7をPXEなど使ってネットワークインストールする

あるPCにSL7をインストールしたいが, USBメモリやCDRがなかったので, 別のマシンをネットワークブートのサーバに設定してインストールを行った. そのときの手順をメモ.

今回のサーバは, SL6.7.

TFTPとDHCPの設定

まずは,tftp, dhcpd, iptablesの設定をする. なお, dhcpd自体は既に設定済みで, PXEの設定を追加するだけ.

  1. tftp-serverをインストールする.
    sudo yum install tftp-server xinetd
  2. tftpの設定を行う.
    sudoedit /etc/xinetd.d/tftp
    以下のように太字の2箇所を設定する. Disableをyesからnoに変更する. ログを見やすくするため, server_argsに-vを追加する.
    service tftp
    {
            socket_type             = dgram
            protocol                = udp
            wait                    = yes
            user                    = root
            server                  = /usr/sbin/in.tftpd
            server_args             = -v -s /var/lib/tftpboot
            disable                 = no
            per_source              = 11
            cps                     = 100 2
            flags                   = IPv4
    }
  3. Xinetdの再起動.
    sudo service xinetd restart
  4. Firewallの設定.
    sudoedit /etc/sysconfig/iptables
    以下の1行を追加する. PXEではUDPでリクエストが来るので, TCPは開放せず, UDPを開放する.
    -A INPUT -p udp -m udp --dport tftp -j ACCEPT
    設定が済んだら, iptablesを再起動して設定を読み込む.
    sudo service iptables restart
  5. DHCPDに設定を追加する.
    sudoedit /etc/dhcp/dhcpd.conf
    2個の設定 (next-serverとfilename) を追加する. Next-serverで指定するのがTFTPが動いているサーバのアドレス. Filenameで指定するのがPXEで最初に読み込むファイル. (後で取得方法を説明)
    authoritative;
    default-lease-time 3600;
    max-lease-time 14400;
    log-facility local7;
    subnet 192.168.xx.0 netmask 255.255.255.0 {
            range 192.168.xx.y1 192.168.xx.y2;
            option domain-name-servers 8.8.4.4,8.8.8.8;
            option routers 192.168.xx.1;
    
            # for PXE boot
            next-server 192.168.xx.yy;
            filename "pxelinux/pxelinux.0";
    }
    設定が済んだら, dhcpdを再起動する.
    sudo service dhcpd restart

PXELinuxの準備

SL7のSyslinuxというパッケージに含まれているので, ここから必要なファイルを取り出す. その後, 設定ファイルを記載する.
  1. 適当なミラーサーバから syslinux-4.05-13.el7.x86_64.rpm をダウンロードする.
    cd /tmp
    wget .../syslinux-4.05-13.el7.x86_64.rpm
  2. RPM仲のファイルを展開する.
    mkdir /tmp/syslinux
    rpm2cpio syslinux-4.05-13.el7.x86_64.rpm | cpio -dimv
    
  3. 必要なファイルをtftpbootの下にコピーする. なお, *.c32すべて必要なわけではなく, vesamenu.c32 だけあれば良い.
    mkdir /var/lib/tftpboot/pxelinux
    cp /tmp/syslinux/usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/pxelinux/
    cp /tmp/syslinux/usr/share/syslinux/*.c32 /var/lib/tftpboot/pxelinux/
    
  4. Pxelinuxの設定ファイルを用意する.
    mkdir /var/lib/tftpboot/pxelinux/pxelinux.cfg/
    vim /var/lib/tftpboot/pxelinux/pxelinux.cfg/default
    以下のように記載する.
    default vesamenu.c32
    prompt 1
    timeout 600
    display boot.msg
    
    label Scientific Linux 7.3 nouveau=0
            menu label Install SL 7.3 without ^Nouveau
            menu default
            kernel ../sl73/images/pxeboot/vmlinuz
            append initrd=../sl73/images/pxeboot/initrd.img nouveau.modeset=0 inst.repo=ftp://.../scientific/7.3/x86_64/os
    label local
            menu label Boot from ^local drive
            localboot 0xffff
    label memtest86
            menu label ^Memory test
            kernel memtest
            append -
    Kernelとinitrdは次の手順で準備する.
    inst.repoの設定には, 適当な ftp://ftp.scientificlinux.org/linux/scientific/7.3/x86_64/os/ のミラーを指定すればよい.

Kernelとinitrdの準備

  1. まずは展開先のディレクトリを作成する.
    mkdir -p /var/lib/tftpboot/sl73/images/pxeboot
  2. 2個のファイルをダウンロードする.
    cd /var/lib/tftpboot/sl73/images/pxeboot
    wget ftp://.../scientific/7.3/x86_64/os/images/pxeboot/vmlinuz
    wget ftp://.../scientific/7.3/x86_64/os/images/pxeboot/initrd.img
    

インストールを開始する

インストール先のPCの電源をいれ, ネットワークから起動する.

以下のサイトを参考にした.

  • BIOS ベースのクライアント向けに PXE サーバーを設定する

    SL 7 Rollingの追加設定

    SL 7 RollingのインストーラーをPXEで起動するため, 設定を追加した.

    pxelinux/pxelinux.cfg/default に以下のエントリーを追記

    label Scientific Linux Rolling nouveau=0
            menu label Install SL ^Rolling without Nouveau
            menu default
            kernel ../sl7-rolling/images/pxeboot/vmlinuz
            append initrd=../sl7-rolling/images/pxeboot/initrd.img nouveau.modeset=0 inst.repo=ftp://ftp.jaist.ac.jp/pub/Linux/scientific/7rolling/x86_64/os/
    
    Kernelとinitrdを準備
    $ mkdir sl7-rolling/
    $ cd sl7-rolling/
    $ wget -r -l 1 ftp://ftp.jaist.ac.jp/pub/Linux/scientific/7rolling/x86_64/os/images/ 
    $ wget -r -l 1 ftp://ftp.jaist.ac.jp/pub/Linux/scientific/7rolling/x86_64/os/images/pxeboot/  
    $ mv ./ftp.jaist.ac.jp/pub/Linux/scientific/7rolling/x86_64/os/images/* ./