Home
Categories
WIKI
Topic
User
LANGUAGE:
中文
English
自定义LVM+LUKS并安装LD
Experiences and Insight
4099
views ·
4
replies ·
To
floor
Go
MattD
deepin
2014-02-28 08:55
Author
本菜刚用LD没多久,觉得LD相当好用,但是美中不足的是安装器的自定义程度不足,难以满足某些高级分区方案的需求。刚好之前搜索论坛的时候发现有人写过了将LD安装到自定义btrfs+subvolume的教程:
http://www.linuxdeepin.com/forum/25/16324
。
受此教程启发,我就试着将LD安装到自定义的LVM+LUKS加密分区。还好一次就成功了,因此写下本帖,希望能给其他人提供帮助。
本帖部分步骤将直接照搬以上教程的内容,还望@woodelf莫怪。但是我加入了许多LVM+LUKS的特有步骤。如有错误或疏漏,万望指出并纠正。
本帖所用的安装介质为LD 2013的amd64版本ISO,应当同样适用于i386。
除非特殊说明,本帖中采用的命令都需要root权限。好了,让我们正式开始:
首先,启动LiveCD,打开终端,安装一些必要的工具:
apt-get install gdisk lvm2 squashfs-tools
Copy the Code
LD的LiveCD自带了LUKS加密工具和文件系统工具,因此我们只需要这三个工具就够了。我采用的是全盘GPT,共三个分区,sda1为BIOS兼容分区,sda2为/boot,采用ext4,sda3就是我们要用到的LVM+LUKS分区。
准备工作完成后,开始设置LVM+LUKS的分区规划。在这里,我把加密分区命名为dmcrypt_root,VG命名为deepin。当然,你也可以自己指定加密算法或者生成一份密钥文件:
cryptsetup --cipher aes-xts-plain64 luksFormat /dev/sda3 # 之后需要输入大写的YES进行确认,并设置加密密钥
cryptsetup luksOpen /dev/sda3 dmcrypt_root # 之后需要输入刚刚设置的密钥
pvcreate /dev/mapper/dmcrypt_root
vgcreate deepin /dev/mapper/dmcrypt_root
lvcreate -L10G --name rootfs deepin
lvcreate -L4G --name swap deepin
lvcreate -L20G --name usr deepin
lvcreate -L20G --name var deepin
lvcreate -l 100%FREE --name home deepin
Copy the Code
接着,在各个分区和LV上创建新的文件系统。为了实验不同文件系统的支持,我采用了ext4、reiserfs和xfs三种文件系统,各位可以根据需要自行调整:
mkfs.ext4 /dev/sda2
mkswap /dev/mapper/deepin-swap
mkfs.ext4 /dev/mapper/deepin-rootfs
mkfs.ext4 /dev/mapper/deepin-usr
mkfs.reiserfs /dev/mapper/deepin-var
mkfs.xfs /dev/mapper/deepin-home
Copy the Code
将所有的分区和LV挂载到/mnt:
mount /dev/mapper/deepin-rootfs /mnt
mkdir /mnt/{boot,home,usr,var}
mount /dev/mapper/deepin-home /mnt/home
mount /dev/mapper/deepin-usr /mnt/usr
mount /dev/mapper/deepin-var /mnt/var
mount /dev/sda2 /mnt/boot
Copy the Code
把光驱挂载到/mnt2,以便稍后安装系统:
mkdir /mnt2
mount /dev/sr0 /mnt2
Copy the Code
开始“安装”LD,即把filesystem.squashfs解压到/mnt:
unsquashfs -f -d /mnt /mnt2/casper/filesystem.squashfs
Copy the Code
等待解压完成,然后我们需要chroot到安装好的系统里面去,进行一些必要的配置:
cd /mnt
mount --bind /dev dev
mount --bind /dev/pts dev/pts
mount --bind /proc proc
mount --bind /sys sys
chroot /mnt /bin/bash
Copy the Code
先来配置/etc/fstab,通常按照我的这一份来即可,也可以自己定义一些选项:
# UNCONFIGURED FSTAB FOR BASE SYSTEM
/dev/sda2 /boot ext4 defaults 1 2
/dev/mapper/deepin-rootfs / ext4 defaults 0 1
/dev/mapper/deepin-swap none swap sw 0 0
/dev/mapper/deepin-home /home xfs defaults 0 0
/dev/mapper/deepin-usr /usr ext4 defaults 0 0
/dev/mapper/deepin-var /var reiserfs defaults 0 0
Copy the Code
然后修改/etc/hostname,改为自己喜欢的主机名。另外,修改下默认的locale。方法是创建/etc/default/locale文件,写入以下内容:
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN.UTF-8:zh_CN
Copy the Code
修改/etc/default/useradd文件,把SHELL=/bin/sh改为SHELL=/bin/bash。
创建新用户,按照我的示例即可:
useradd -m -G disk,cdrom,audio,video,plugdev,games,users,bluetooth YOURUSERNAME
Copy the Code
别忘了设置root和用户密码:
passwd
passwd YOURUSERNAME
Copy the Code
通过visudo命令,把你的用户加入sudoer,在root ALL=(ALL:ALL) ALL下面添加一行:
YOURUSERNAME ALL=(ALL:ALL) ALL
Copy the Code
然后,我们需要修改几个配置文件,以便initramfs能包含所有必要的模块。先是修改/etc/modules配置文件,用命令或文本编辑器添加指定模块即可:
echo "dm-crypt" >> /etc/modules
Copy the Code
然后是修改/etc/initramfs-tools/modules文件,用命令或文本编辑器添加指定模块即可:
echo "aes" >> /etc/initramfs-tools/modules
echo "aes_x86_64" >> /etc/initramfs-tools/modules
echo "aes_generic" >> /etc/initramfs-tools/modules
echo "dm-crypt" >> /etc/initramfs-tools/modules
echo "dm-mod" >> /etc/initramfs-tools/modules
echo "sha256" >> /etc/initramfs-tools/modules
echo "sha256_generic" >> /etc/initramfs-tools/modules
echo "lrw" >> /etc/initramfs-tools/modules
echo "xts" >> /etc/initramfs-tools/modules
echo "crypto_blkcipher" >> /etc/initramfs-tools/modules
echo "gf128mul" >> /etc/initramfs-tools/modules
Copy the Code
另外需要复制两个文件:
cp /usr/share/initramfs-tools/hooks/cryptroot /etc/initramfs-tools/hooks/cryptroot
cp /usr/share/initramfs-tools/scripts/local-top/cryptroot /etc/initramfs-tools/scripts/local-top/cryptroot
Copy the Code
接着,用blkid命令查看下/dev/sda3的UUID:
blkid /dev/sda3
Copy the Code
配置/etc/initramfs-tools/conf.d/cryptroot文件,用命令或文本编辑器添加指定模块即可:
echo "CRYPTOPTS=target=lvm,source=UUID=YOUR_UUID,lvm=deepin-rootfs" > /etc/initramfs-tools/conf.d/cryptroot
Copy the Code
这里的YOUR_UUID就是上一步查看的UUID。然后,删掉一个不需要的文件,否则会导致更新的initramfs有问题:
rm /etc/crypttab
Copy the Code
然后我们更新一下initramfs,使其包含所有必要的模块:
update-initramfs -u -k all
Copy the Code
好了,现在可以安装grub2,并生成配置文件了:
grub-install /dev/sda
update-grub
Copy the Code
生成的grub.cfg就已经是一份可启动的配置文件了,无需额外修改。
然后删除ubiquity安装程序,因为我们是直接把LiveCD解压过去的,因此系统中还有这个拖油瓶:
apt-get remove ubiquity
apt-get autoremove
Copy the Code
完成!可以重新启动进入你的LD了。启动过程中会出现以下界面,提示你输入密钥来解密根分区,否则是无法启动的:
2.png
解密成功:
3.png
我的分区规划情况:
4.png
好了,本教程到此结束,如有疑问,欢迎提出。 :mrgreen:
Reply
Like 0
Favorite
View the author
All Replies
woodelf
deepin
2014-03-01 00:50
#1
其实我以前也测试过,还是在LD 12.12的时候,那个版本有问题,会导致系统无法启动。
看来LD2013修复了那个问题。
Reply
Like 0
View the author
xliang9550
deepin
2014-03-01 23:50
#2
12.12版在GPT磁盘上安装的时候立即崩溃,12.12.1就修复了。
本人菜鸟目前没有那么研究深入,安装系统仍以GPT磁盘上的简单卷为主。至于LVM什么的暂时还只敢在虚拟机上尝试。
Reply
Like 0
View the author
呆了个呆
deepin
2014-08-16 00:05
#3
参照此帖成功安装 lvm deepin 2014,不过设置多多,问题也多多,慢慢更改修正。留足
Reply
Like 0
View the author
Ldeepin
deepin
2015-02-17 07:30
#4
学习了!
:D :D赞!
Reply
Like 0
View the author
Please
sign
in first
New Thread
Popular Ranking
Change
My beautiful Deepin-colored stock chart theme
Latest wine version
deepin 23 internal testing update on November 15, 2024
Update Announcement for deepin 23 Official Version on 11.14, 2024
presentation mode
System analyst
Popular Events
More
受此教程启发,我就试着将LD安装到自定义的LVM+LUKS加密分区。还好一次就成功了,因此写下本帖,希望能给其他人提供帮助。
本帖部分步骤将直接照搬以上教程的内容,还望@woodelf莫怪。但是我加入了许多LVM+LUKS的特有步骤。如有错误或疏漏,万望指出并纠正。
本帖所用的安装介质为LD 2013的amd64版本ISO,应当同样适用于i386。
除非特殊说明,本帖中采用的命令都需要root权限。好了,让我们正式开始:
首先,启动LiveCD,打开终端,安装一些必要的工具:
准备工作完成后,开始设置LVM+LUKS的分区规划。在这里,我把加密分区命名为dmcrypt_root,VG命名为deepin。当然,你也可以自己指定加密算法或者生成一份密钥文件:
创建新用户,按照我的示例即可:
然后删除ubiquity安装程序,因为我们是直接把LiveCD解压过去的,因此系统中还有这个拖油瓶:
2.png
解密成功:
3.png
我的分区规划情况:
4.png
好了,本教程到此结束,如有疑问,欢迎提出。 :mrgreen: