LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3183|回复: 5

Linux Encryption HOWTO 怎样制作一个加密的文件系统

[复制链接]
发表于 2005-1-2 23:34:22 | 显示全部楼层 |阅读模式
发表于 2005-1-4 16:49:50 | 显示全部楼层
被编成密码的根Filesystem HOWTO


Christophe Devine


修正历史


修正v1.2
2004-10-20
校正: 光盘


更新了包裹版本。


修正v1.1
2003-12-01
校正: 光盘


增加的支持对于幼虫。


修正v1.0
2003-09-24
校正: 光盘


最初的发行, 由LDP 回顾。


修正v0.9
2003-09-11
校正: 光盘


更新和转换成DocBook XML 。



这个文件解释怎么使您的个人数据安全由编成密码您的Linux 根filesystem 使用强的密码学。



准备系统


设定分开布局


您的硬盘(hda) 应该包含至少三分开:



hda1: 这小unencrypted 分开将请求密码为了登上被编成密码的根filesystem 。


hda2: 这分开将包含您的被编成密码的根filesystem; 确定它是足够大的。


hda3: 这分开拿着当前的GNU/Linux 系统。


这时, hda1 和hda2 是未使用的hda3 是您的Linux 发行当前被安装的地方; /usr 和/boot 不能 被分离从这分开。


这什么的例子您的分开布局也许看起来象:



# fdisk - l /dev/hda 盘/dev/hda: 255 个头, 63 个区段, 2432 个圆筒单位= 圆筒16065 把* 512 把字节设备起动起动块规Id 系统/dev/hda1 1 1 8001 83 Linux /dev/hda2 2 263 2104515 83 Linux /dev/hda3 264 525 2104515 83 Linux /dev/hda4 526 2047 12225465 83 Linux


安装Linux 2.4.27


有增加回送编成密码支持在仁的二个主要项目: cryptoloop 和圈AES 。这howto 根据圈AES, 因为它以Rijndael 的极端快速和高度优化实施为特色用汇编语言, 并且提供因此最高性能如果您有IA-32 (x86) CPU 。其外, 有对 cryptoloop 的一些 安全问题。


首先, 下载和打开圈AES 包裹:



wget http://loop-aes.sourceforge.net/loop-AES/loop-AES-v2.2b.tar.bz2 沥青- xvjf 圈AES v2.2b.tar.bz2


然后您必须下载和修补仁来源:



wget http://ftp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.27.tar.bz2 沥青- xvjf Linux 2.4.27.tar.bz2 光盘Linux 2.4.27 rm include/linux/loop.h drivers/block/loop.c 补丁- Np1 - i../loop-AES-v2.2b/kernel-2.4.27.diff


设定键盘地图:



dumpkeys | loadkeys - m - > drivers/char/defkeymap.c


其次, 配置您的仁; 确定以下选择被设置:



做menuconfig 块设备---> < * > 回送设备支持[ * ] AES 被编成密码的圈设备支持(新) < * > 随机存取存储磁盘支持(4096) 缺省随机存取存储磁盘大小(新) [ * ] 最初的随机存取存储磁盘(initrd) 支持文件系统---> < * > Ext3 日志文件系统支持< * >
其次延长的fs 支持(注意事项: 不要使能/dev 文件系统支持)


编写仁和安装它:



做dep bzImage 做模块modules_install cp arch/i386/boot/bzImage /boot/vmlinuz


如果幼虫是您的bootloader, 更新/boot/grub/menu.lst 或/boot/grub/grub.conf:



猫> /boot/grub/menu.lst < < EOF 缺省0 个暂停10 颜色green/black 光green/black 标题Linux 根(hd0,2) 仁/boot/vmlinuz ro root=/dev/hda3 EOF


否则, 更新/etc/lilo.conf 和跑的lilo:



猫> /etc/lilo.conf < < EOF lba32 boot=/dev/hda 及时timeout=100 image=/boot/vmlinuz label=Linux 只读root=/dev/hda3 EOF lilo


您可以现在重新开始系统。


安装Linux 2.6.8.1


如所描述改为进行在早先部分, 使用 圈aes' 仁2.6.8.1.diff 补丁。注意模块支持要求您安排模块init 工具包裹被安装。


安装util Linux 2.12b


losetup 节目, 是util Linux 包裹的一部分, 必须被修补和recompiled 为了增加强的密码学支持。下载, 打开和修补util Linux:



wget http://ftp.kernel.org/pub/linux/utils/util linux/util
Linux 2.12b.tar.bz2 沥青- xvjf util Linux 2.12b.tar.bz2 光盘util
Linux 2.12b 补丁- Np1 - i../loop AES v2.2b/util Linux 2.12c.diff


使用20 个字符是少于的密码, 进入:



CFLAGS="-o2 - DLOOP_PASSWORD_MIN_LENGTH=8 "; 出口CFLAGS


安全大概是您的主要关心的当中一个。因此, 请不要使能密码突然比20 个字符。数据保密性不是自由的, 你必须' 支付' 以长的密码的形式。


编写losetup 和安装它作为根:



/configure && 做解放登上mv - f /sbin/losetup /sbin/losetup~ rm - f /usr/share/man/man8/losetup.8 * 光盘登上gzip losetup.8 cp losetup /sbin cp losetup.8.gz /usr/share/man/man8/


创造被编成密码的根filesystem


用任意数据填装目标分开:



细片- n 1 - v /dev/hda2


设定被编成密码的回送设备:



losetup - e aes256 - S xxxxxx /dev/loop0 /dev/hda2


防止优选了字典攻击, 它被推荐增加- S xxxxxx 选择, "xxxxxx" 是您的任意地选上的种子(例如, 您也许选择"gPk4lA") 。并且, 为了避免有键盘的起动时间问题映射, 不要使用non-ASCII 字符(口音, 等。) 在您的密码。 Diceware 站点提供一个简单的方式创造强, 容易记住, passphrases 。


现在创造ext3 filesystem:



mke2fs - j /dev/loop0


检查您输入的密码是正确的:



losetup - d /dev/loop0 losetup - e aes256 - S xxxxxx /dev/loop0 /dev/hda2



mkdir /mnt/efs 登上/dev/loop0 /mnt/efs


您能比较被编成密码的和unencrypted 数据:



xxd /dev/hda2  | 较少xxd /dev/loop0 | 较少


是时间安装您的被编成密码的Linux 系统。如果您使用GNU/Linux 发行(譬如Debian 、Slackware 、Gentoo 、Mandrake 、RedHat/Fedora 、SuSE, 等), 跑以下命令:



cp - avx//mnt/efs


如果您使用Linux 从头书, 如所描述进行在指南, 以修改如下:



章节6 - 安装util Linux:


应用圈AES 补丁在打开来源以后。


章节8 - 使LFS 系统可起动:


参见下个部分(设定起动设备) 。


设定起动设备


创造ramdisk


开始与, chroot 在被编成密码的分开里面和创造起动设备登上点:



chroot /mnt/efs mkdir /loader


然后, 创造最初的ramdisk (initrd), 之后必要:



光盘dd if=/dev/zero of=initrd bs=1k count=4096 mke2fs -
F initrd mkdir ramdisk 登上- o 圈initrd ramdisk


如果您使用grsecurity, 您可以收到"允许被否认的" 错误信息; 您在这种情况下将必须跑登上命令在chroot 之外。


创造filesystem 阶层和复制必需的文件在它:



mkdir ramdisk/{bin, dev, 解放、mnt 、sbin} cp /bin/{bash, 登上} ramdisk/bin/ ln - s 打击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/


它是好如果您看一则消息象"/lib/libncurses.so.5: 没有这样的文件或目录", 或"/lib/libtermcap.so.2: 没有这样的文件或目录"; 打击只要求这两个图书馆的当中一个。您能检查哪个实际上要求与:



ldd /bin/bash


编写睡眠节目, 将防止密码提示由仁消息被充斥(譬如usb 设备登记) 。



猫> sleep.c < < "EOF" # 包括< unistd.h > # 包括< stdlib.h > 内部main(内部argc, 炭灰* argv[ ]) {if(argc == 2) sleep(atoi(argv[1 ])); return(0); } EOF gcc - s sleep.c - o ramdisk/bin/sleep rm sleep.c


创造init 剧本(不要忘记用您选上的种子替换"xxxxxx"):



猫> ramdisk/sbin/init < < "EOF" #!/bin/sh /bin/sleep 3 /sbin/losetup - e aes256 - S xxxxxx /dev/loop0 /dev/hda2 /bin/mount - r - n - t ext3 /dev/loop0 /mnt 当[ $? - ne 0 ] 做/sbin/losetup - d
/dev/loop0 /sbin/losetup - e aes256 - S xxxxxx /dev/loop0 /dev/hda2 /bin/mount - r - n - t ext3 /dev/loop0 /mnt 做的光盘/mnt /sbin/pivot_root 。装载者exec /usr/sbin/chroot 。/sbin/init EOF chmod 755 ramdisk/sbin/init


Umount 回送设备和压缩initrd:



umount - d ramdisk rmdir ramdisk gzip initrd mv initrd.gz /boot/


孕穗从CD-ROM


我强烈劝告您开始您的系统与只读媒介, 譬如可起动的CD-ROM 。


下载和打开syslinux:



wget http://ftp.kernel.org/pub/linux/ ... slinux-2.10.tar.bz2
沥青- xvjf syslinux-2.10.tar.bz2


配置isolinux:



mkdir bootcd cp /boot/{vmlinuz, initrd.gz} syslinux-2.10/isolinux.bin bootcd echo "缺省/vmlinuz initrd=initrd.gz ro root=/dev/ram0" \ > bootcd/isolinux.cfg


创造和烧可起动的光盘rom iso 图象:



mkisofs - o bootcd.iso - b isolinux.bin - c boot.cat \ - 没有emul 起动- 起动装载大小4 - 起动信息桌\ - J - 掩藏rr 被移动的- R bootcd/ cdrecord - dev 0,0,0 - 速度4 - v bootcd.iso rm - rf bootcd{.iso}


孕穗从HD 分开


引导分区可能进来得心应手如果您偶然丢失您可起动的CD 。 记得, hda1 是可写媒介和因而不安全; 使用它只紧急情况下!


创造和登上ext2 filesystem:



dd if=/dev/zero of=/dev/hda1 bs=8192 mke2fs /dev/hda1 登上/dev/hda1 /loader


复制仁和最初的ramdisk:



cp /boot/{vmlinuz, initrd.gz} /loader


如果您使用幼虫:



mkdir /loader/boot cp - av /boot/grub /loader/boot/ 猫> /loader/boot/grub/menu.lst < < EOF 缺省0 暂停10 颜色green/black 光green/black 标题Linux 根(hd0,0) 仁/vmlinuz ro root=/dev/ram0 initrd /initrd.gz EOF 除草根安装-- 根directory=/loader /dev/hda umount /loader


如果您使用lilo:



mkdir /loader/{boot, dev, 等} 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/ram0 b 1 0 猫> /loader/etc/lilo.conf < < EOF lba32 boot=/dev/hda 及时timeout=100 image=/vmlinuz label=Linux initrd=/initrd.gz 只读root=/dev/ram0 EOF
lilo - r /loader umount /loader


最后的步


仍然里面chroot, 修改/etc/fstab 以便它包含:



/dev/loop0/ext3 默认0 1


去除/etc/mtab 和从chroot 退出。终于, 奔跑"umount - d /mnt/efs" 和reboot 。如果某事变错误, 您能仍然解雇您的unencrypted 分开由进入"Linux root=/dev/hda3" 在LILO: 提示。


如果一切很好去, 您现在能分配您的盘和编成密码hda3 并且hda4 。在以下剧本, 我们假设, hda3 将拿着交换设备并且hda4 将包含/home; 您应该首先初始化两分开:



细片- n 1 - v /dev/hda3 细片- n 1 - v /dev/hda4 losetup - e aes256 - S xxxxxx /dev/loop1 /dev/hda3 losetup - e aes256 - S xxxxxx /dev/loop2 /dev/hda4 mkswap /dev/loop1 mke2fs - j /dev/loop2


然后创造一个剧本在系统起动目录和更新fstab:



猫> /etc/init.d/loop < < "EOF" #!/bin/sh 如果[ "`/usr/bin/md5sum /dev/hda1`"! = \ "5671.cebdb3bed87c3b3c345f0101d016 /dev/hda1" ] 然后echo - n "警告! hda1 正直证明失败了- 按进入。" 读fi echo "第1 个密码被选择上面" | \ /sbin/losetup - p 0 - e aes256 - S xxxxxx /dev/loop1 /dev/hda3 echo "第2 个密码被选择上面" | \ /sbin/losetup - p 0 - e aes256 - S xxxxxx /dev/loop2 /dev/hda4 /sbin/swapon /dev/loop1 为i 在` 顺序0 63` echo - n - e "\33[10;10]\33[11;10 ]" > /dev/tty$i 完成EOF chmod 700 /etc/init.d/loop ln - s../init.d/loop /etc/rcS.d/S00loop vi /etc/fstab... /dev/loop2 /home ext3 默认0 2


关于这HOWTO


被编成密码的根Filesystem HOWTO 是第一被写在2002 年11月为 Linux 从头 项目。我希望感谢的许多人民后来帮助我改进这个文件(在反向按年代顺序): Luc Vo 范, Jacobus 边缘, Ernesto P?z Est?z, 马修?Ploessel, 麦克?Lorek, Lars Bungum, 迈克尔盾, Julien Perrot, 格兰特?Stephenson, Cary W. Gilmer, 詹姆斯?Howells, Pedro Baez, Josh Purinton, Jari Ruusu 和Zibeli Aton 。


这HOWTO 被翻译了以各种各样的语言:



法语


意大利语


匈牙利语


请寄发任何意见到 Christophe Devine。
发表于 2005-1-4 16:50:54 | 显示全部楼层
不是吧


这种翻译怎么看~~~~~~~~~~~
发表于 2005-1-21 14:05:48 | 显示全部楼层
拿金山快译译的??????
如果是楼主自己译的,精神可佳
但,还不如看英文原稿
回复 支持 反对

使用道具 举报

发表于 2005-2-26 22:03:12 | 显示全部楼层
怎样制作一个加密的文件系统

Christophe Devine


修正历史
修正v1.2                                2004-10-20                        校正: 光盘


更新了包裹版本。


修正v1.1                                2003-12-01                        校正: 光盘


增加对grub的支持。


修正v1.0                                2003-09-24                        校正: 光盘


最初的发行, 由LDP检审。


修正v0.9                                2003-09-11                        校正: 光盘


更新和转换成DocBook XML 。



本文档介绍了怎样通过密码学加密你的根文件系统而使你的个人数据更安全!

系统准备

设定分区

您的硬盘(hda)最少应该包含三个分区:
        hda1:这个小的没加密的分区 应该 要求 一个 口令 为了 加载 加密 的根文件系统
        hda2:这个分区应该包含你的加密根文件系统;确保它足够大
        hda3:这个分区就是你的当前的GNU/Linux系统

在这时,hda1和hda2没有使用。hda3就是当前你安装的linux发行版; /usr 和/boot不能另外分区装载。

你的分区分布也许会像下面这样:

# fdisk -l /dev/hda

Disk /dev/hda: 255 heads, 63 sectors, 2432 cylinders
Units = cylinders of 16065 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1         1      8001   83  Linux
/dev/hda2             2       263   2104515   83  Linux
/dev/hda3           264       525   2104515   83  Linux
/dev/hda4           526      2047  12225465   83  Linux


安装 Linux-2.4.27


有两种主要的方案可用于在内核上添加 loopback加密支持:cryptoloop 和 loop-AES。本文是基于loop-AES方案的,因为因为它的特点是非常快 和非常优化实行 of Rijndael 用汇编语言。如果你有一个IA-32 (x86) CPU ,它将为您提供 最大的性能。另外,还有一些关于cryptoloop的安全关切.

首先,下载和解压 loop-AES 软件包:


wget http://loop-aes.sourceforge.net/loop-AES/loop-AES-v2.2b.tar.bz2
tar -xvjf loop-AES-v2.2b.tar.bz2


然后再下载内核源代码和补丁并为内核源码打上补丁:


wget http://ftp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.27.tar.bz2
tar -xvjf linux-2.4.27.tar.bz2
cd linux-2.4.27
rm include/linux/loop.h drivers/block/loop.c
patch -Np1 -i ../loop-AES-v2.2b/kernel-2.4.27.diff




设置键盘映射:


dumpkeys | loadkeys -m - > drivers/char/defkeymap.c


下一步,配置你的内核;确定下面的选项你已经选上了:


make menuconfig

    Block devices  --->

        <*> Loopback device support
        
  •    AES encrypted loop device support (NEW)

            <*> RAM disk support
            (4096)   Default RAM disk size (NEW)
            
  •    Initial RAM disk (initrd) support

        File systems  --->

            <*> Ext3 journalling file system support
            <*> Second extended fs support

    (important note: do not enable /dev file system support)




    编译并安装内核:


    make dep bzImage
    make modules modules_install
    cp arch/i386/boot/bzImage /boot/vmlinuz



    如果你的启动器是grub,更新你的 /boot/grub/menu.lst或 /boot/grub/grub.conf文件:



    cat > /boot/grub/menu.lst << EOF
    default 0
    timeout 10
    color green/black light-green/black
    title Linux
        root (hd0,2)
        kernel /boot/vmlinuz ro root=/dev/hda3
    EOF



    启动器是lilo的话就更新/etc/lilo.conf并运行 lilo :



    cat > /etc/lilo.conf << EOF
    lba32
    boot=/dev/hda
    prompt
    timeout=100
    image=/boot/vmlinuz
        label=Linux
        read-only
        root=/dev/hda3
    EOF
    lilo



    现在重启你的系统。




    安装Linux 2.6.8.1


    像之前所说的那样进行前面的部分,所用补丁是loop-aes'kernel-2.6.8.1.diff 。要注意的是你要安装module-init-tools软件包以便你的系统支持模块。


    安装util-linux-2.12b

    这个losetup程序包含在util-linux-2.12b软件包中。必须打补丁并重新编译以使它支持加密。下载,解压并打为util-linux打补丁:



    wget http://ftp.kernel.org/pub/linux/ ... linux-2.12b.tar.bz2
    tar -xvjf util-linux-2.12b.tar.bz2
    cd util-linux-2.12b
    patch -Np1 -i ../loop-AES-v2.2b/util-linux-2.12c.diff





    使用少于20个字符的密码,键入:




    CFLAGS="-O2 -DLOOP_PASSWORD_MIN_LENGTH=8"; export CFLAGS




    安全可能是你主要关心的一个问题。为此,请不要使您的密码少于20个字符。数据保密性不是免费的, 你必须以‘支付’的形式使用长的密码。


    使用root用户编译安装 losetup程序:




    ./configure && make lib mount
    mv -f /sbin/losetup /sbin/losetup~
    rm -f /usr/share/man/man8/losetup.8*
    cd mount
    gzip losetup.8
    cp losetup /sbin
    cp losetup.8.gz /usr/share/man/man8/





    创建加密的根文件系统



    用随机数据填充目标分区:


    shred -n 1 -v /dev/hda2


    安装加密loopback设备:


    losetup -e aes256 -S xxxxxx /dev/loop0 /dev/hda2


    为防止比较快的字典攻击,推荐加上-S xxxxxx 选项,"xxxxxx" 是你随机选取的种子(例如,你可能选择 "gPk4lA" )。 同样,为了防止启动时的键盘映射问题,在密码中不要使用非ASCII字符(方言,等)。Diceware站点提供了一种简单的的方法去创建强大并容易记住的密码。


    现在开始创建ext3文件系统:

    mke2fs -j /dev/loop0

    检测你输入的密码是正确的:


    losetup -d /dev/loop0
    losetup -e aes256 -S xxxxxx /dev/loop0 /dev/hda2


    mkdir /mnt/efs
    mount /dev/loop0 /mnt/efs




    你可以比较已加密的和未加密的数据:

    xxd /dev/hda2  | less
    xxd /dev/loop0 | less


    现在是时候安装你的加密的linux系统了。如果你使用的是GNU/Linux发行版(譬如Debian, Slackware, Gentoo, Mandrake, RedHat/Fedora, SuSE, etc.), 运行下面的命令:


    cp -avx / /mnt/efs




    如果你使用是Linux From Scratch手册,照着lfs手册上所说的那样进行配置,但要做以下修改:


    Chapter 6 - Installing util-linux:
           
            在解压源代码后打上 loop-AES 的补丁。

    Chapter 8 - Making the LFS system bootable:

            指向我们的下一章(创建启动设备)。


    --------------------------------------------------------

    创建启动设备

    创建ramdisk

    在开始时,先用chroot命令进入你的加密分区并创建启动设备的挂载点:


    chroot /mnt/efs
    mkdir /loader


    然后创建 initial ramdisk (initrd),它将会在以后用到:


    cd
    dd if=/dev/zero of=initrd bs=1k count=4096
    mke2fs -F initrd
    mkdir ramdisk
    mount -o loop initrd ramdisk


    如果您使用 grsecurity . 您可能会收到"ermission denied"的提示错误的信息;如果是这样你将必须在chroot命令之前运行 mount命令。


    创建文件系统的目录组织并复制所需要的的文件进去:


    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/




    如果你看到像"/lib/libncurses.so.5: No such file or directory","/lib/libtermcap.so.2: No such file or directory"的信息,这是正常的。bash 只要求用这两个库中的其中一个。 你可以检测哪一个才是你实际所需要的:


    ldd /bin/bash


    编译sleep程序,它将防止密码提示被内核信息所淹没(例如当usb设备注册时)。



    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




    创建初始化脚本(不要忘记替换掉你之前报选的种子 "xxxxxx" ):


    cat > ramdisk/sbin/init << "EOF"
    #!/bin/sh

    /bin/sleep 3
    /sbin/losetup -e aes256 -S xxxxxx /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 xxxxxx /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



    卸载 loopback 设备并压缩initrd:



    umount -d ramdisk
    rmdir ramdisk
    gzip initrd
    mv initrd.gz /boot/


    从CD-ROM启动


    我强烈建议您从只读的媒体里启动您的系统,例如可启动的光盘。

    下载并解压syslinux:


    wget http://ftp.kernel.org/pub/linux/ ... slinux-2.10.tar.bz2
    tar -xvjf syslinux-2.10.tar.bz2


    配置isolinux:


    mkdir bootcd
    cp /boot/{vmlinuz,initrd.gz} syslinux-2.10/isolinux.bin bootcd
    echo "DEFAULT /vmlinuz initrd=initrd.gz ro root=/dev/ram0" \
        > bootcd/isolinux.cfg


    把iso映像刻录到可启动光盘中:


    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}



    从硬盘启动


    当你丢失了你的可启动光盘时,启动分区就可以派上用场了。请记住hda1是个可写分区,因而并不是很可靠的,只有当你遇到紧急的情况时才使用它!

    创建并挂载ext2文件系统:


    dd if=/dev/zero of=/dev/hda1 bs=8192
    mke2fs /dev/hda1
    mount /dev/hda1 /loader



    复制内核和initial ramdisk:


    cp /boot/{vmlinuz,initrd.gz} /loader


    如果你使用的是grub :


    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:



    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/ram0 b 1 0
    cat > /loader/etc/lilo.conf << EOF
    lba32
    boot=/dev/hda
    prompt
    timeout=100
    image=/vmlinuz
        label=Linux
        initrd=/initrd.gz
        read-only
        root=/dev/ram0
    EOF
    lilo -r /loader
    umount /loader




    最后一步


    仍然保持chroot的状态,修改/etc/fstab增加以下选项:



    /dev/loop0      /               ext3    defaults       0       1



    去除 /etc/mtab 并从chroot中退出。最后 ,运行 "umount -d /mnt/efs"命令然后重启系统。 如果有某些错误发生,你仍然可以在 LILO提示中用"Linux root=/dev/hda3"来启动你未加密的分区。



    如果一切都顺利,你就可以重新分区你的硬盘和继续加密你的hda3或hda4分区。在下面的脚本中,我们假设 hda3将挂载swap设备,hda4挂载/home目录;你应该先初始化这两个分区:



    shred -n 1 -v /dev/hda3
    shred -n 1 -v /dev/hda4
    losetup -e aes256 -S xxxxxx /dev/loop1 /dev/hda3
    losetup -e aes256 -S xxxxxx /dev/loop2 /dev/hda4
    mkswap /dev/loop1
    mke2fs -j /dev/loop2



    然后在系统的启动目录里创建一个脚本并更新 /etc/fstab:



    cat > /etc/init.d/loop << "EOF"
    #!/bin/sh

    if [ "`/usr/bin/md5sum /dev/hda1`" != \
         "5671cebdb3bed87c3b3c345f0101d016  /dev/hda1" ]
    then
        echo -n "WARNING! hda1 integrity verification FAILED - press enter."
        read
    fi

    echo "1st password chosen above" | \
        /sbin/losetup -p 0 -e aes256 -S xxxxxx /dev/loop1 /dev/hda3

    echo "2nd password chosen above" | \
        /sbin/losetup -p 0 -e aes256 -S xxxxxx /dev/loop2 /dev/hda4

    /sbin/swapon /dev/loop1

    for i in `seq 0 63`
    do
        echo -n -e "\33[10;10]\33[11;10]" > /dev/tty$i
    done

    EOF

    chmod 700 /etc/init.d/loop
    ln -s ../init.d/loop /etc/rcS.d/S00loop
    vi /etc/fstab
    ...
    /dev/loop2      /home           ext3    defaults       0       2




    关于这份HOWTO


    这个怎样制作加密文件系统的文档最早是写于2002年11月,是lfs项目之一.我要谢谢 自从那时起帮助过我的人(按年代的反序排列) Luc Vo Van, Jacobus Brink, Ernesto Pérez Estévez, Matthew Ploessel, Mike Lorek, Lars Bungum, Michael Shields, Julien Perrot, Grant Stephenson, Cary W. Gilmer, James Howells, Pedro Baez, Josh Purinton, Jari Ruusu and Zibeli Aton.


    这个 HOWTO 被译成了不同的语言:

    法语


    意大利语


    匈牙利语


    有任何意见请寄到 Christophe Devine。


    ------------------------------------------------------

    小弟第一次译东西,有任何建议尽管提出来!
  • 回复 支持 反对

    使用道具 举报

    发表于 2005-2-28 17:31:30 | 显示全部楼层
    呵呵,不错。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表