Установка Ubuntu 7.10 на ноутбук Sony VGN-SZ5XRN

Как обычно, вначале я должен вставить свое обычное предупреждение: все нижеописанное делалось мной и на моем ноутбуке. Все работает так как я описал. Пошагово повторить это может любой, но результата скорее всего добьется уже имеющий опыт работы с Linux. Если у вас что-то сломалось, то это целиком ваша вина.

Целью написания этого текста стал один простой вопрос, пришедший после выкладывания аналогичной рассказки про gentoo. Даже не вопрос, а пожелание. Суть была в следующем: gentoo конечно хорошо, но не для всех. А хочется и красоты и той же степени защиты.

Для экспериментов был взят тот же ноутбук, с теми же условиями: шифровать все доступное, кроме системы (ибо там ничего интересного, а шифрование всё-таки отнимает процессорное время) и не давать врагу возможности что-нибуть прочитать в случае кражи ноутбука.

В качестве пользователя был я, multik, так что если будете повторять, меняйте на свое. В остальном, если какие-то моменты непонятны, смотрите текст про установку gentoo: там я старался расписать от и до. Если совсем непонятно будет, пишите письма.

1. Установка.

Тут особо писать нечего, потому что ubuntu по праву считается одним из самых дружелюбных к пользователю дистрибутивов: вставили диск, загрузились, кликнули на install, пару раз next и после перезагрузки перед вами дистрибутив со всем необходимым.

Правда, в этот раз не обошлось без неприятностей: после установки я обнаружил, что мой роутер неправильно обрабатывает ipv6 DNS запросы. Симптомы простые: все адреса (скажем в браузере) находятся, но соединение с ними не происходит из-за тайм-аута. При этом тот же пинг проходит. Если коротко, то проблема в обработке AAAA запросов, в результате которых всякие программы, каботающие в интернете (wget, firefox и прочие) пытаются установить связь с адресом 1.0.0.0. Лечится это тремя путями: выключением нафиг ipv6, сменой прошивки у роутера и установкой своего кеширующего сервера. Я выбрал последнее.

Так как интернет есть, но роутер парит мозги, нам надо обойти его. Для этого нам нужен адрес любого DNS сервера, который примет наш запрос. Самый простой путь это спросить провайдера, в ответ вы получите 4 числа.

Открываем Applications-Accessories-Terminal и меняем адрес DNS сервера вручную. В моем примере адрес для московского "стрима"


sudo su -
nano /etc/resolv.conf
nameserver 195.34.32.116

Так как при установке была та же ситуация, то все обновления и прочее было отключено установщиком. Открываем файл конфигурации

nano /etc/apt/sources.list

... и ищем все строчки начинаюшиеся на deb, предваряющиеся следующим текстом: # Line commented out by installer because it failed to verify:. И удаляем лидирующий #.

ОБновляем списки репозитариев

apt-get update

Признаком правильности всего действа должно стать выпрыгнувшее окошко, сообщающее о наличии обновлений (естественно, если есть интернет)

Теперь ставим кеширующий DNS

apt-get install dnsmasq

И правим соответствующие конфигурационные файлы. Первый для того, что бы сервер в лишних местах не светился, а второй, что бы dhcp предпочитал наш DNS

nano /etc/dnsmasq.conf
listen-address=127.0.0.1

nano /etc/dhcp3/dhclient.conf
prepend domain-name-servers 127.0.0.1;

Теперь для приличия можете перезагрузиться, что бы удостовериться, что все нормально.

2. Веселимся

Для наших криптобаловств необходимы два пакета, которые и будут обеспечивать все необходимое

apt-get install cryptsetup
apt-get install libpam-mount

Теперь создаем на диске отдельный раздел, где будут храниться пользовательские данные. Сразу в инсталляторе я сделать забыл. Если вы не забыли, то пропустите это

fdisk -l /dev/sda
Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xab2a49a6

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1992    16000708+  83  Linux
/dev/sda2            1993        2241     2000092+  82  Linux swap / Solaris

root@multbook:~# fdisk /dev/sda

The number of cylinders for this disk is set to 19457.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (2242-19457, default 2242): 
Using default value 2242
Last cylinder or +size or +sizeM or +sizeK (2242-19457, default 19457): 
Using default value 19457

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

Так как я забыл, то мне надо перезагрузиться, что бы ядро перечитало таблицу разделов.

Форматируем раздел

cryptsetup luksFormat /dev/sda3

WARNING!
========
This will overwrite data on /dev/sda3 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase: 
Verify passphrase: 
Command successful.

Открываем его и форматируем в ReiserFS

cryptsetup luksOpen /dev/sda3 sda3
Enter LUKS passphrase: 
key slot 0 unlocked.
Command successful.

mkfs.reiserfs /dev/mapper/sda3 

pam-mount (в отличие от gentoo) немного староват и поэтому использует более понятный формат конфигурационных файлов.

nano /etc/security/pam_mount.conf

volume multik crypt - /dev/sda3 /home/multik - - -

Теперь необходим небольшой трюк. Так как ubuntu нельзя поставить без того, что бы создать пользователя, то у нас в домашнем каталоге накопилось много всякой полезной информации. Ну хотя бы пароли к чему-нибудь. Надо перенести. Для этого нам необходим суперпользователь.

nano /etc/shadow
root:*:13910:0:99999:7:::

Видите звездочку в первой строчке? Вот её необходимо стереть. Сохраняйте файл, выходите из графической оболочки и переключайтесь на текстовую консоль (Ctl-Alt-F1). Теперь логиньтесь пользователем root (он будет без пароля) и копируйте существующий каталог на зашифрованный раздел

mount /dev/mapper/sda3 /media
cp -avx /home/multik/* /media
chown -R multik:multik /media
umount /media
cryptsetup luksClose sda3

Теперь включаем pam_mount

echo "@include common-pammount" >> /etc/pam.d/login
echo "@include common-pammount" >> /etc/pam.d/gdm

Всё. Переходите обратно в графику (Ctrl-Alt-F7) и логиньтесь. Ничего не должно измениться. Только если вы наберете команду mount, в последней строчке вы должны увидеть следующее:

/dev/mapper/_dev_sda3 on /home/multik type reiserfs (rw)

Теперь шифруем swap

echo "cryptswap /dev/sda2 /dev/random swap" >> /etc/crypttab
swapoff -a
/etc/init.d/cryptdisks start

Теперь меняем /etc/fstab так, что бы вместо UUID система брала своп из /dev/mapper

/dev/mapper/cryptswap none swap sw 0 0

И командой swapon -a включаем своп обратно. Теперь у вас и swap тоже зашифрованный. Правда, гибернейт больше работать не будет.

Аналогично поправим /etc/fstab на предмет сохранения каталога /tmp в памяти

tmpfs /tmp tmpfs defaults,nosuid,mode=1777 0 0

Всё, теперь можете перезагрузиться и после перезагрузки посмотреть, все ли на месте:

multik@multbook:~$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              16G  2.6G   12G  18% /
varrun               1003M  100K 1003M   1% /var/run
varlock              1003M     0 1003M   0% /var/lock
udev                 1003M   92K 1003M   1% /dev
devshm               1003M     0 1003M   0% /dev/shm
lrm                  1003M   38M  966M   4% /lib/modules/2.6.22-14-generic/volatile
tmpfs                1003M   28K 1003M   1% /tmp
/dev/mapper/_dev_sda3
                      132G   65M  132G   1% /home/multik

$ cat /proc/swaps 
Filename                                Type            Size    Used    Priority
/dev/mapper/cryptswap                   partition       2000084 0       -1

3. Видео, видео, видео-о-о-о ... © мираж

Последнее, что нам осталось сделать, так это написать скрипт для автоматического переключения между двумя графическими адаптерами. Я устанавливал ubuntu с включенным режимом stamina, поэтому драйверов для nvidia нет.

apt-get install nvidia-glx

Копируем хорошую конфигурацию для stamina

cp /etc/X11/xorg.conf /etc/X11/xorg.conf.stamina

И правим текущий конфиг под nvidia

root@multbook:~# nano /etc/X11/xorg.conf

Section "Device"
        Identifier      "Intel Corporation Mobile 945GM/GMS, 943/940GML Express$
        Driver          "nvidia"
#       BusID           "PCI:0:2:0"
Option          "NoLogo"
EndSection
...
        SubSection "Display"
                Modes           "1280x800"
        EndSubSection

Переключаем переключатель в speed и перезагружаемся. Проверяем, все ли на месте, всё ли работает так как надо и когда будем уверены, делаем рабочий конфиг для режима speed

cp /etc/X11/xorg.conf /etc/X11/xorg.conf.speed

Берем уже готовый скрипт из gentoo, вырезаем все лишнее, добавляем нужное и получаем на выходе следующее:

# cat /etc/init.d/xorg_conf 
#!/bin/bash

### BEGIN INIT INFO
# Provides:        xorg_conf
# Required-Start:  $network $remote_fs $syslog
# Required-Stop:   $network $remote_fs $syslog
# Default-Start:   2 3 4 5
# Default-Stop:    0 1 6
# Short-Description: Configure X11 on sony SZ
### END INIT INFO

VIDEO=`/usr/bin/lspci |grep -c nVidia`

if [ "$VIDEO" = 1 ]; then
cp -f /etc/X11/xorg.conf.speed /etc/X11/xorg.conf
else
cp -f /etc/X11/xorg.conf.stamina /etc/X11/xorg.conf
fi

Я тут немного поленился: я не нашел как указать, что бы скрипт запускался ПЕРЕД графикой. Поэтому я поросил, что бы он запускался после поднятия сети. Немного некрасиво, зато функционально

Делаем его исполнимым и автозапускаемым при старте системы

chmod +x /etc/init.d/xorg_conf
update-rc.d xorg_conf defaults

Как ни странно, но это все

DMCA и RIAA - в студию!

Ну и как же без копирайтов. Этот текст распространяется под лицензией Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License

Creative Commons License This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.

Для читающих только это: вы можете копировать, модифицировать и распространять этот текст сколько угодно, но с указанием первоначального автора и не меняя лицензию. Использовать вышенаписанное в коммерческих целях запрещаю. Не потому что жадный, а потому что должен знать. Ибо везде есть подводные камни, которые я возможно помогу избежать.

© 2008 Вячеслав Калошин multik@multik.org