установка centos из командной строки


  1. Качаем образ с одного из зеркал, которые можно найти на http://www.centos.org/modules/tinycontent/index.php?id=30
  2. Грузимся с LiveCD/DVD в любом режиме, например в Text Mode
  3. Меняем пользователя на root. Создаем таблицу разделов, если диск чистый, если нет, пропустите этот шаг.

    fdisk -l
    Disk /dev/sdb: 8589 MB, 8589934592 bytes
    255 heads, 63 sectors/track, 1044 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0xf1b6844c
    
    fdisk /dev/sda
    
    WARNING: DOS-compatible mode is deprecated. It is strongly recommended to
             switch off the mode (command 'c') and change display units to
             sectors (command 'u').
    
    Command (m for help): p
    
    Disk /dev/sdb: 8589 MB, 8589934592 bytes
    255 heads, 63 sectors/track, 1044 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0xf1b6844c
    
       Device Boot      Start         End      Blocks   Id  System
    
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-1044, default 1):
    Using default value 1
    Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): +8000M
    
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 2
    First cylinder (1022-1044, default 1022):
    Using default value 1022
    Last cylinder, +cylinders or +size{K,M,G} (1022-1044, default 1044):
    Using default value 1044
    
    Command (m for help): a
    Partition number (1-5): 1
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    
  4. Мы создали два раздела, один для корня, второй для шифрованной домашней папки, и присвоили флаг загрузочного, корневому. Теперь создадим на первом разделе файловую систему.

    mkfs.ext4 -b 4096 -O dir_index /dev/sdb1
    

    Опция dir_index включает поддержку использования b-trees для увеличения скорости просмотра каталога с большим кол-вом файлов. Некоторые рекомендуют изредка делать fsck -D для увеличения производительности.

  5. Зашифруем наш предполагаемый домашний раздел

    # заполним раздел случайными данными, для удаления остаточной информации, это займет некоторое время, в зависимости от размера раздела.
    dd if=/dev/urandom of=/dev/sdb2
    dd: writing to '/dev/sdb2': No space left on device
    369496+0 records in
    369495+0 records out
    189181440 bytes (189 MB) copied, 49.5773 s, 3.8 MB/s
    
    # инициализируем будущий шифрованный раздел и задаём пароль
    cryptsetup luksFormat /dev/sdb2
    WARNING!
    ========
    This will overwrite data on /dev/sdb2 irrevocably.
    
    Are you sure? (Type uppercase yes): YES
    Enter LUKS passphrase:
    Verify passphrase:
    
    # узнаем UUID раздела для его последующего монтирования без привязки к имени устройства
    cryptsetup luksUUID /dev/sdb2
    a041d481-e2f5-4972-b57a-6c1a59a1b29d
    
    # подключаем шифрованный раздел
    cryptsetup luksOpen /dev/sdb2 db
    Enter passphrase for /dev/sdb2:
    
    # отформатируем и этот раздел в ext4
    mkfs.ext4 -b 4096 -O dir_index /dev/mapper/db
    mke2fs 1.41.12 (17-May-2010)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    45696 inodes, 45674 blocks
    2283 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=50331648
    2 block groups
    32768 blocks per group, 32768 fragments per group
    22848 inodes per group
    Superblock backups stored on blocks:
        32768
    
    Writing inode tables: done
    Creating journal (4096 blocks): done
    Writing superblocks and filesystem accounting information: done
    
    This filesystem will be automatically checked every 37 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.
    
    # добавляем настройки в /etc/crypttab, UUID мы получили ранее
    luks-a041d481-e2f5-4972-b57a-6c1a59a1b29d UUID=a041d481-e2f5-4972-b57a-6c1a59a1b29d none luks
    
  6. Монтируем наш первый основной раздел, который будет корневым и копируем туда все файлы с LiveCD

    mkdir /centos
    rsync -avz / --exclude /selinux --exclude /mnt --exclude /proc --exclude /dev/ --exclude /centos /centos | tee ~/rsync.log
    # Проверяем вывод/лог, чтобы всё прошло гладко, без ошибок.
    # Монтируем наш зашифрованный раздел на /home, предварительно сделав его резервную копию и очистив, после монтирования перенесем туда все данные из бэкапа
    mv /home /tmp
    mkdir /home
    mount /dev/mapper/db /home
    mv /tmp/home /
    
    # монтируем proc и dev
    mkdir /centos/proc
    mkdir /centos/dev
    mount -t proc none /centos/proc
    mount -o bind /dev /centos/dev
    
  7. Перейдем в наш будущий корень с помощью chroot

    NB! Далее все команды будут выполняться из-под chroot

    chroot /centos
    
    # создаем initrd image
    mkinitrd
    
    # смотрим example и делаем как там, например
    
    mkinitrd /boot/initramfs-2.6.32-71.el6.i686.img 2.6.32-71.el6.i686
    
    # устанавливаем grub в MBR раздел /dev/sdb
    
    grub
    Probing devices to guess BIOS drives. This may take a long time.
    
    
        GNU GRUB  version 0.97  (640K lower / 3072K upper memory)
    
     [ Minimal BASH-like line editing is supported.  For the first word, TAB
       lists possible command completions.  Anywhere else TAB lists the possible
       completions of a device/filename.]
    grub> root (hd1,0)
    root (hd1,0)
     Filesystem type is ext2fs, partition type 0x83
    grub> setup (hd1)
    setup (hd1)
     Checking if "/boot/grub/stage1" exists... yes
     Checking if "/boot/grub/stage2" exists... yes
     Checking if "/boot/grub/e2fs_stage1_5" exists... yes
     Running "embed /boot/grub/e2fs_stage1_5 (hd1)"...  26 sectors are embedded.
    succeeded
     Running "install /boot/grub/stage1 (hd1) (hd1)1+26 p (hd1,0)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded
    Done.
    grub> quit
    
  8. Создаем, редактируем конфиг Grub /boot/grub/grub.conf

    echo "
    default=0
    timeout=3
    root (hd1,0)
    title CentOS Linux
    kernel /boot/vmlinuz-2.6.32-71.el6.i686 ro root=/dev/sdb1
    initrd /boot/initramfs-2.6.32-71.el6.i686.img" > /boot/grub/grub.conf
    
    # включаем автомонтирование в /etc/fstab (на этапе загрузки нужно будет вводить пароль)
    echo "
    /dev/sdb1  /         ext4    defaults         0 1
    /dev/mapper/luks-a041d481-e2f5-4972-b57a-6c1a59a1b29d /home ext4 defaults 0 0
    devpts     /dev/pts  devpts  gid=5,mode=620   0 0
    tmpfs      /dev/shm  tmpfs   defaults         0 0
    proc       /proc     proc    defaults         0 0
    sysfs      /sys      sysfs   defaults         0 0" > /etc/fstab
    
  9. Отключим selinux, т.к. нам не удасться скопировать его файлы, а при загрузке он будет выдввать ошибку и стопорить дальнейший её процесс. приведем файл /etc/selinux/config к следующему виду:

    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #   enforcing - SELinux security policy is enforced.
    #   permissive - SELinux prints warnings instead of enforcing.
    #   disabled - SELinux is fully disabled.
    SELINUX=disabled
    # SELINUXTYPE= type of policy in use. Possible values are:
    #   targeted - Only targeted network daemons are protected.
    #   strict - Full SELinux protection.
    SELINUXTYPE=targeted
    
  10. Перезагрузка должна будет показать наши результаты.

comments powered by Disqus