- Качаем образ с одного из зеркал, которые можно найти на http://www.centos.org/modules/tinycontent/index.php?id=30
- Грузимся с LiveCD/DVD в любом режиме, например в Text Mode
Меняем пользователя на 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.
Мы создали два раздела, один для корня, второй для шифрованной домашней папки, и присвоили флаг загрузочного, корневому. Теперь создадим на первом разделе файловую систему.
mkfs.ext4 -b 4096 -O dir_index /dev/sdb1
Опция dir_index включает поддержку использования b-trees для увеличения скорости просмотра каталога с большим кол-вом файлов. Некоторые рекомендуют изредка делать fsck -D для увеличения производительности.
Зашифруем наш предполагаемый домашний раздел
# заполним раздел случайными данными, для удаления остаточной информации, это займет некоторое время, в зависимости от размера раздела. 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
Монтируем наш первый основной раздел, который будет корневым и копируем туда все файлы с 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
Перейдем в наш будущий корень с помощью 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
Создаем, редактируем конфиг 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
Отключим 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
Перезагрузка должна будет показать наши результаты.