| |||||||
Başlamak için, şifrelenmiş disk bölümüne hapsolmalı (chroot) ve önyükleme aygıtı için bağlama noktasını oluşturmalısınız:
# chroot /mnt/efs # mkdir /loader |
Ardından, daha sonra ihtiyacınız olacak başlangıç ramdisk'ini (initrd) oluşturun:
# cd # dd if=/dev/zero of=initrd bs=1k count=4096 # mke2fs -F initrd # mkdir ramdisk # mount -o loop initrd ramdisk |
grsecurity kullanıyorsanız "Permission denied" hatasını alabilirsiniz. Bu durumda mount komutunu kafesin (chroot) dışında çalıştırmanız gerekir.
Dosya sistemi ağacını oluşturun ve gerekli dosyaları içine kopyalayın:
# mkdir ramdisk/{bin,dev,lib,mnt,sbin}
# cp /bin/{bash,mount} ramdisk/bin/
# ln -s bash ramdisk/bin/sh
# mknod -m 600 ramdisk/dev/console c 5 1
# mknod -m 600 ramdisk/dev/hda2 b 3 2
# mknod -m 600 ramdisk/dev/loop0 b 7 0
# cp /lib/{ld-linux.so.2,libc.so.6,libdl.so.2} ramdisk/lib/
# cp /lib/{libncurses.so.5,libtermcap.so.2} ramdisk/lib/
# cp /sbin/{losetup,pivot_root} ramdisk/sbin/
|
Eğer "/lib/libncurses.so.5: No such file or directory" veya "/lib/libtermcap.so.2: No such file or directory" hata iletileri ile karşılaşırsanız dert etmeyin; bash bu kütüphanelerden sadece birine ihtiyaç duyar. Gerçekte hangisinin gerekli olduğunu şöyle kontrol edebilirsiniz:
# ldd /bin/bash |
Parolanızın çekirdek iletileri (usb aygıtlarının kaydedilmesi gibi) tarafından taşırılmasını önlemek için aşağıdaki sleep programını derleyin.
# cat > sleep.c << "EOF"
#include <unistd.h>
#include <stdlib.h>
int main( int argc, char *argv[] )
{
if( argc == 2 )
sleep( atoi( argv[1] ) );
return( 0 );
}
EOF
# gcc -s sleep.c -o ramdisk/bin/sleep
# rm sleep.c
|
init betiğini oluşturun:
# cat > ramdisk/sbin/init << "EOF"
#!/bin/sh
/bin/sleep 3
echo -n "Enter seed value: "
read SEED
/sbin/losetup -e aes256 -S $SEED /dev/loop0 /dev/hda2
/bin/mount -r -n -t ext3 /dev/loop0 /mnt
while [ $? -ne 0 ]
do
/sbin/losetup -d /dev/loop0
/sbin/losetup -e aes256 -S $SEED /dev/loop0 /dev/hda2
/bin/mount -r -n -t ext3 /dev/loop0 /mnt
done
cd /mnt
/sbin/pivot_root . loader
exec /usr/sbin/chroot . /sbin/init
EOF
# chmod 755 ramdisk/sbin/init
|
Geridönüş aygıtını dosya sesteminden ayırın ve initrd'yi sıkıştırın:
# umount -d ramdisk # rmdir ramdisk # gzip initrd # mv initrd.gz /boot/ |
Sisteminizi CD-ROM gibi salt okunur bir ortamı kullanarak yüklemenizi öneririm.
syslinux paketini indirin ve açın:
$ wget http://ftp.kernel.org/pub/linux/utils/boot/syslinux/syslinux-3.07.tar.bz2 $ tar -xvjf syslinux-3.07.tar.bz2 |
isolinux'u yapılandırın:
# mkdir bootcd
# cp /boot/{vmlinuz,initrd.gz} syslinux-3.07/isolinux.bin bootcd
# echo "DEFAULT /vmlinuz initrd=initrd.gz ro root=/dev/ram0" > bootcd/isolinux.cfg
|
Yüklenebilir cd-rom eşlemini oluşturun ve yakın:
# mkisofs -o bootcd.iso -b isolinux.bin -c boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-J -hide-rr-moved -R bootcd
# cdrecord -dev 0,0,0 -speed 4 -v bootcd.iso
# rm -rf bootcd{,.iso}
|
Eğer yükleme cd'nizi kaybederseniz sabit disk bölümünüz yükleme yapabilmeniz için elinizin altındadır. Hda1 yazılabilir bir ortam olduğundan güvenilir olmadığını unutmayın ve ancak acil durumlarda kullanın!
Ext2 dosya sistemini oluşturun ve bağlayın:
# dd if=/dev/zero of=/dev/hda1 bs=8192 # mke2fs /dev/hda1 # mount /dev/hda1 /loader |
Çekirdeği ve başlangıç ramdisk'ini kopyalayın:
# cp /boot/{vmlinuz,initrd.gz} /loader |
grub kullanıyorsanız:
# mkdir /loader/boot
# cp -av /boot/grub /loader/boot/
# cat > /loader/boot/grub/menu.lst << EOF
default 0
timeout 10
color green/black light-green/black
title Linux
root (hd0,0)
kernel /vmlinuz ro root=/dev/ram0
initrd /initrd.gz
EOF
# grub-install --root-directory=/loader /dev/hda
# umount /loader
|
lilo kullanıyorsanız:
# mkdir /loader/{boot,dev,etc}
# cp /boot/boot.b /loader/boot/
# mknod -m 600 /loader/dev/hda b 3 0
# mknod -m 600 /loader/dev/hda1 b 3 1
# mknod -m 600 /loader/dev/hda2 b 3 2
# mknod -m 600 /loader/dev/hda3 b 3 3
# mknod -m 600 /loader/dev/hda4 b 3 4
# mknod -m 600 /loader/dev/ram0 b 1 0
# cat > /loader/etc/lilo.conf << EOF
lba32
boot=/dev/hda
prompt
timeout=60
image=/vmlinuz
label=Linux
initrd=/initrd.gz
read-only
root=/dev/ram0
EOF
# lilo -r /loader
# umount /loader
|
| ||||||||||