Предупреждение, стена текстового поступления. Это также отформатировано, поскольку я мог сделать его.
Если мы собираемся ответить на это, мы собираемся ответить на все это. Я не делаю другого ответа на этом, таким образом, здесь идет:
Давайте притворимся, что Вы абсолютно ничего не знаете, и я питаюсь, Вы нажимаете.
Это говорит Вам все, что необходимо знать, чтобы сделать эту ЦЕЛУЮ вещь с немного этого и добавленным. Действительно, читать.
Вы могли иметь путем чтения, что, прибыл в:
Загрузите Ubuntu 11.10 как живую.
Откройте терминал. Размеры, которые я использую, идут 40G виртуальный диск. Мы делаем это все как root
sudo su
apt-get install lvm2
fdisk /dev/sda
n
p
1
[enter]
+1000M
t
83
n
[enter]
[enter]
t
2
8e
w
Что означает, открытый dev/sda, новый основной раздел в положении 1 размера не менее чем 1000 МБ с типом ext3 или лучше, новый основной раздел в положении 2 типа LVM и запись к диску.
Поскольку я обстоятельно объяснил его, я собираюсь предположить, что Вы выполняете ту установку ТОЧНО.
Мы будем использовать/dev/sda1 для начальной загрузки / и/dev/sda2 для ВСЕГО ОСТАЛЬНОГО. Можно изменить размеры для удовлетворения установке без операционной системы, но это было, чтобы VM ответил вопрос.
pvcreate /dev/sda2
vgcreate iammaster /dev/sda2
lvcreate --name lvubuntu --size 10G iammaster
lvcreate --name lvhome --size 12G iammaster
lvcreate --name lvyouarestudent --size 13G iammaster
lvcreate --name lvswap --size 4G iammaster
Это говорит, создают физический том на/dev/sda2, группе объема имени iammaster на/dev/sda2, и логических томах lvubuntu, lvhome, lvyouarestudent, и lvswap на группе объема iammaster.
lvdisplay iammaster
Только проверить. Затем формат...
cryptsetup -c aes-cbc-essiv:sha256 -y -s 256 luksFormat /dev/mapper/iammaster-lvyouarestudent
YES
*passphrase twice*
cryptsetup -c aes-cbc-essiv:sha256 -y -s 256 luksFormat /dev/mapper/iammaster-lvhome
YES
*passphrase twice*
cryptsetup -c aes-cbc-essiv:sha256 -y -s 256 luksFormat /dev/mapper/iammaster-lvswap
YES
*passphrase twice*
cryptsetup -c aes-cbc-essiv:sha256 -y -s 256 luksFormat /dev/mapper/iammaster-lvubuntu
YES
*passphrase twice*
Оки-doke. Теперь Вы зашифровали LVM. Смонтируйте свои разделы склепа.
cryptsetup luksOpen /dev/mapper/iammaster-lvswap swap
*enter passphrase*
cryptsetup luksOpen /dev/mapper/iammaster-lvubuntu ubuntu
*enter passphrase*
cryptsetup luksOpen /dev/mapper/iammaster-lvhome home
*enter passphrase*
И подкачка форматирования и включения...
mkswap /dev/mapper/swap
swapoff -a
swapon /dev/mapper/swap
mkfs.ext4 /dev/mapper/ubuntu
mkfs.ext4 /dev/mapper/home
Установка на (пользовательский) нормальный и не перезагружает. Обратите внимание, что необходимо сделать нестандартную установку и двойной щелчок к на логических томах для выбора FS-Type и точки монтирования. Не забывайте/dev/sda1 как начальную загрузку. Мы затем нажимаем установку теперь. После того, как несколько продолжаются, Вы на пути. Щелчок продолжает тестировать НЕ, перезапускают теперь.
Подготовьте каталоги
mkdir /mnt/ubuntu
mount /dev/mapper/ubuntu /mnt/ubuntu
Смонтируйте специальные файловые системы и начальную загрузку
mount --bind /dev /mnt/ubuntu/dev
mount --bind /proc /mnt/ubuntu/proc
mount --bind /sys /mnt/ubuntu/sys
mount /dev/sda1 /mnt/ubuntu/boot
И chroot/install lvm/crypt
chroot /mnt/ubuntu
apt-get install cryptsetup lvm2 dmsetup
Затем нам нужен crypttab, таким образом, мы только разблокировали наши диски однажды
ubuntu /dev/mapper/iammaster-lvubuntu none luks
home /dev/mapper/iammaster-lvhome /etc/home.key luks
swap /dev/mapper/iammaster-lvswap /dev/urandom swap,cipher=aes-cbc-essiv:sha256
cat /etc/crypttab
cat /etc/fstab
*make sure everything matches*
dd if=/dev/urandom of=/etc/home.key bs=256 count=1
cryptsetup luksAddKey /dev/mapper/iammaster-lvhome /etc/home.key
*enter passphrase*
Теперь для initramfs
*edit /etc/initramfs-tools/modules*
aes-i586
dm-crypt
dm-mod
sha256
update-initramfs -k all -c
update-grub2
grub-install /dev/sda
init 6
Теперь на повторении всего этого для отслеживания в обратном порядке..., потому что, если Вы делаете это вручную правильный однажды, следующий раз должен быть тем же
startx
*open terminal*
vgchange -a y
cryptsetup -c aes-cbc-essiv:sha256 -y -s 256 luksFormat /dev/mapper/iammaster-lvswap
YES
*passphrase twice*
cryptsetup luksOpen /dev/mapper/iammaster-lvswap swap
*enter passphrase*
mkswap /dev/mapper/swap
swapoff -a
swapon /dev/mapper/swap
cryptsetup luksOpen /dev/mapper/iammaster-lvubuntu ubuntu
*enter passphrase*
cryptsetup luksOpen /dev/mapper/iammaster-lvhome home
*enter passphrase*
cryptsetup luksOpen /dev/mapper/iammaster-lvyouarestudent bt
*enter passphrase*
mkfs.ext4 /dev/mapper/bt
Установка указывает руководство, указывает точки монтирования (совместно использовал начальную загрузку / также. если Вы используете один позади/стабильный Ubuntu и края BT, это не должна быть проблема с избиением..., если Вы все еще заинтересованы, добавьте другой раздел начальной загрузки), не форматировать. На шаге 8, усовершенствованном
Когда это заканчивается, продолжают тестировать снова, точно так же, как прошлый раз:
Подготовьте каталоги
mkdir /mnt/bt
mount /dev/mapper/bt /mnt/bt
mkdir /mnt/tempmount
mount /dev/mapper/ubuntu /mnt/tempmount
cp /mnt/tempmount/etc/home.key /mnt/bt/etc/home.key
Смонтируйте специальные файловые системы и начальную загрузку
mount --bind /dev /mnt/bt/dev
mount --bind /proc /mnt/bt/proc
mount --bind /sys /mnt/bt/sys
mount /dev/sda1 /mnt/bt/boot
И chroot/install lvm/crypt
chroot /mnt/bt
apt-get install cryptsetup lvm2 dmsetup
Затем нам нужен crypttab, таким образом, мы только разблокировали наши диски однажды
bt /dev/mapper/iammaster-lvyouarestudent none luks
home /dev/mapper/iammaster-lvhome /etc/home.key luks
swap /dev/mapper/iammaster-lvswap /dev/urandom swap,cipher=aes-cbc-essiv:sha256
cat /etc/crypttab
cat /etc/fstab
*make sure everything matches*
Теперь для initramfs
*edit /etc/initramfs-tools/modules*
aes-i586
dm-crypt
dm-mod
sha256
update-initramfs -k all -c
init 6
Перезагрузка к человечности живые медиа
sudo su
apt-get install lvm2
vgchange -a y
cryptsetup luksOpen /dev/mapper/iammaster-lvubuntu ubuntu
*passphrase*
mkdir /mnt/ubuntu
mount /dev/mapper/ubuntu /mnt/ubuntu
*insert the bind steps and mount boot steps from before again*
chroot /mnt/ubuntu
update-initramfs -k all -c
update-grub2
grub-install /dev/sda
init 6
Просто измените/dev/mapper/ubuntu на/dev/mapper/bt и передайте правильные аргументы ядра, и Вы сделаны.
Я перешел к большой проблеме для создания этого учебного руководства. Я надеюсь, что Вы цените его.
*you may have to do this every time BT gets a kernel update*
Принятие a find
реализация как GNU find
это принимает a {}
встроенный в аргумент -exec
:
$ find . -type d \! -exec test -e '{}/README' \; -print
Здесь каталоги 1/1 через 5/5 имеют README, другие директора пусты.
$ tree
.
|-- 1
| `-- 1
| `-- README
|-- 10
| `-- 10
|-- 2
| `-- 2
| `-- README
|-- 3
| `-- 3
| `-- README
|-- 4
| `-- 4
| `-- README
|-- 5
| `-- 5
| `-- README
|-- 6
| `-- 6
|-- 7
| `-- 7
|-- 8
| `-- 8
`-- 9
`-- 9
Теперь, когда мы выполняем эту версию нашего find
команда:
$ find . -type d \! -exec test -e '{}/README' \; -print
.
./10
./10/10
./7
./7/7
./9
./9/9
./6
./6/6
./5
./8
./8/8
./4
./1
./3
./2
Можно использовать -exec
опция find
проверять на файл и затем печатать все результаты, для которых перестала работать проверка.
find /path/to/base -mindepth 1 -maxdepth 1 -type d -exec test -e {}/README \; -o -print
Нет необходимости в найти
. Просто используйте оболочку:
for d in */; do [ -f "$d"README ] || printf '%s\n' "$d"; done
c/
Если вам нужно, чтобы она была рекурсивной, вы можете использовать (для bash
, zsh
может сделать это по умолчанию, используйте set -o globstar
в ksh93
):
shopt -s globstar
for d in **/; do [ -f "$d"README ] || printf '%s\n' "$d"; done
(обратите внимание, что точечные файлы по умолчанию исключены).
С квалификаторами zsh
и glob ( e
строка ):
print -rl -- *(/e_'[[ ! -f $REPLY/README ]]'_)
или
print -rl -- *(/^e_'[[ -f $REPLY/README ]]'_)
добавьте D
в включить скрытые каталоги:
print -rl -- *(D/e_'[[ ! -f $REPLY/README ]]'_)
/
выбирает только каталоги, а e _ '[[! -f $ REPLY / README]] '_
далее выбирает только те имена каталогов, для которых код оболочки в кавычках возвращает истину
, то есть для каждого имени каталога ( $ REPLY
), в которую расширяется глобус * (/)
, он запускает [[! -f $ REPLY / README]]
и сохраняет имя каталога, если результат истина
.
Вторая форма ^ e _'.....'_
использует тот же квалификатор glob, но с отрицанием (но на этот раз условное выражение не отменено: [ [-f $ REPLY / README]]
).
Вышеупомянутое будет возвращать только имена каталогов в текущем каталоге.
Если вы хотите осуществлять рекурсивный поиск (опять же, чтобы включить скрытые каталоги, добавьте квалификатор D
):
print -rl ./**/*(/e_'[[ ! -f $REPLY/README ]]'_)
Переносимо, можно сделать:
find. -type d -exec sh -c '
for dir do
[ -f "$dir/README" ] || printf "%s\n" "$dir"
done' sh '{}' +
[ -f file ]
проверяет, существует ли файл и подтверждается, что является обычным файлом (после разрешения символической ссылки ).
Если вы хотите проверить, что он существует только (как запись в этом каталоге ), независимо от его типа, вам потребуется :[ -e file ] || [ -L file ]
, хотя обратите внимание, что вам нужно разрешение на поиск в каталоге для выполнения те тесты. Вы можете добавить несколько тестов [ -x "$dir" ]
для учета таких случаев, как:
find. -type d -exec sh -c '
for dir do
if [ -x "$dir" ]; then
[ -f "$dir/README" ] || printf "%s\n" "$dir"
else
printf >&2 "Cannot tell for \"%s\"\n" "$dir"
fi
done' sh '{}' +
Или, чтобы избежать состояния гонки, с помощьюzsh
:
find. -type d -exec zsh -c '
zmodload zsh/system
for dir do
ERRNO=0
if [ ! -f "$dir/README" ]; then
if [ "$errnos[ERRNO]" = ENOENT ]; then
printf "%s\n" "$dir"
else
syserror -p "ERROR: $dir/README: "
fi
fi
done' zsh '{}' +
См. также Как определить, что обычный файл не существует в Bash? на SO.