-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 7114 b: refs/heads/master c: 67d2c36 h: refs/heads/master v: v3
- Loading branch information
Linus Torvalds
committed
Sep 5, 2005
1 parent
a6e0ade
commit 87c60af
Showing
873 changed files
with
13,427 additions
and
21,116 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 1cc77248106aafc12ba529953f652d6f8db2c84d | ||
refs/heads/master: 67d2c36e901403bb97cb79ddb44d702c3284d0ba |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,138 @@ | ||
Author: Andreas Steinmetz <ast@domdv.de> | ||
|
||
|
||
How to use dm-crypt and swsusp together: | ||
======================================== | ||
|
||
Some prerequisites: | ||
You know how dm-crypt works. If not, visit the following web page: | ||
http://www.saout.de/misc/dm-crypt/ | ||
You have read Documentation/power/swsusp.txt and understand it. | ||
You did read Documentation/initrd.txt and know how an initrd works. | ||
You know how to create or how to modify an initrd. | ||
|
||
Now your system is properly set up, your disk is encrypted except for | ||
the swap device(s) and the boot partition which may contain a mini | ||
system for crypto setup and/or rescue purposes. You may even have | ||
an initrd that does your current crypto setup already. | ||
|
||
At this point you want to encrypt your swap, too. Still you want to | ||
be able to suspend using swsusp. This, however, means that you | ||
have to be able to either enter a passphrase or that you read | ||
the key(s) from an external device like a pcmcia flash disk | ||
or an usb stick prior to resume. So you need an initrd, that sets | ||
up dm-crypt and then asks swsusp to resume from the encrypted | ||
swap device. | ||
|
||
The most important thing is that you set up dm-crypt in such | ||
a way that the swap device you suspend to/resume from has | ||
always the same major/minor within the initrd as well as | ||
within your running system. The easiest way to achieve this is | ||
to always set up this swap device first with dmsetup, so that | ||
it will always look like the following: | ||
|
||
brw------- 1 root root 254, 0 Jul 28 13:37 /dev/mapper/swap0 | ||
|
||
Now set up your kernel to use /dev/mapper/swap0 as the default | ||
resume partition, so your kernel .config contains: | ||
|
||
CONFIG_PM_STD_PARTITION="/dev/mapper/swap0" | ||
|
||
Prepare your boot loader to use the initrd you will create or | ||
modify. For lilo the simplest setup looks like the following | ||
lines: | ||
|
||
image=/boot/vmlinuz | ||
initrd=/boot/initrd.gz | ||
label=linux | ||
append="root=/dev/ram0 init=/linuxrc rw" | ||
|
||
Finally you need to create or modify your initrd. Lets assume | ||
you create an initrd that reads the required dm-crypt setup | ||
from a pcmcia flash disk card. The card is formatted with an ext2 | ||
fs which resides on /dev/hde1 when the card is inserted. The | ||
card contains at least the encrypted swap setup in a file | ||
named "swapkey". /etc/fstab of your initrd contains something | ||
like the following: | ||
|
||
/dev/hda1 /mnt ext3 ro 0 0 | ||
none /proc proc defaults,noatime,nodiratime 0 0 | ||
none /sys sysfs defaults,noatime,nodiratime 0 0 | ||
|
||
/dev/hda1 contains an unencrypted mini system that sets up all | ||
of your crypto devices, again by reading the setup from the | ||
pcmcia flash disk. What follows now is a /linuxrc for your | ||
initrd that allows you to resume from encrypted swap and that | ||
continues boot with your mini system on /dev/hda1 if resume | ||
does not happen: | ||
|
||
#!/bin/sh | ||
PATH=/sbin:/bin:/usr/sbin:/usr/bin | ||
mount /proc | ||
mount /sys | ||
mapped=0 | ||
noresume=`grep -c noresume /proc/cmdline` | ||
if [ "$*" != "" ] | ||
then | ||
noresume=1 | ||
fi | ||
dmesg -n 1 | ||
/sbin/cardmgr -q | ||
for i in 1 2 3 4 5 6 7 8 9 0 | ||
do | ||
if [ -f /proc/ide/hde/media ] | ||
then | ||
usleep 500000 | ||
mount -t ext2 -o ro /dev/hde1 /mnt | ||
if [ -f /mnt/swapkey ] | ||
then | ||
dmsetup create swap0 /mnt/swapkey > /dev/null 2>&1 && mapped=1 | ||
fi | ||
umount /mnt | ||
break | ||
fi | ||
usleep 500000 | ||
done | ||
killproc /sbin/cardmgr | ||
dmesg -n 6 | ||
if [ $mapped = 1 ] | ||
then | ||
if [ $noresume != 0 ] | ||
then | ||
mkswap /dev/mapper/swap0 > /dev/null 2>&1 | ||
fi | ||
echo 254:0 > /sys/power/resume | ||
dmsetup remove swap0 | ||
fi | ||
umount /sys | ||
mount /mnt | ||
umount /proc | ||
cd /mnt | ||
pivot_root . mnt | ||
mount /proc | ||
umount -l /mnt | ||
umount /proc | ||
exec chroot . /sbin/init $* < dev/console > dev/console 2>&1 | ||
|
||
Please don't mind the weird loop above, busybox's msh doesn't know | ||
the let statement. Now, what is happening in the script? | ||
First we have to decide if we want to try to resume, or not. | ||
We will not resume if booting with "noresume" or any parameters | ||
for init like "single" or "emergency" as boot parameters. | ||
|
||
Then we need to set up dmcrypt with the setup data from the | ||
pcmcia flash disk. If this succeeds we need to reset the swap | ||
device if we don't want to resume. The line "echo 254:0 > /sys/power/resume" | ||
then attempts to resume from the first device mapper device. | ||
Note that it is important to set the device in /sys/power/resume, | ||
regardless if resuming or not, otherwise later suspend will fail. | ||
If resume starts, script execution terminates here. | ||
|
||
Otherwise we just remove the encrypted swap device and leave it to the | ||
mini system on /dev/hda1 to set the whole crypto up (it is up to | ||
you to modify this to your taste). | ||
|
||
What then follows is the well known process to change the root | ||
file system and continue booting from there. I prefer to unmount | ||
the initrd prior to continue booting but it is up to you to modify | ||
this. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.