Клонирование системы на внешний диск [SOLVED]

Здравствуйте.

Я недавно купил внешний USB диск, хочу склонировать на него свою Генту (чтобы можно было пользоваться где угодно). Несколько вопросов:

1. Какую фс выбрать для диска? Ext3 вроде самая оптимальная в плане совместимости, есть аж два ifs драйвера и userspace утилита, а ещё плагин для тотал командера под альтернативную ос. Reiser3 тоже есть ifs драйвер и userspace утилита, но совсем ненаджные и юникод не понимают. Vfat наиболее совместимая (драйвер не нужен), но на диске 300гиб будет кластер 32киб, что не радует, да и имхо менее надежная она (300гиб это не шутка, fsck долго будет идти), плюс не уверен что система будет рада жить на ненативной фс. Ntfs религия не позволяет (ну и конечно тормозная она).

2. С какими cflags пересобирать world чтобы получить наиболее быструю но совместимую со старыми процессорами систему?

3. Как настроить xorg.conf чтобы иксы поднимались на любом железе?

4. Как настроить ядро для загрузки на любом железе (genkernel all будет достаточно, или ещё что надо)?

5. Эффективно ли будет использование squashfs+unionfs для корневого раздела? Или просто вывалить всё в чистую фс?

6. С какими ещё проблемами я могу столкнуться?

Пока план действий такой:

fdisk /dev/sdc                           # Разметка
mkfs /dev/sdc1                           # Создание фс
mkdir /mnt/newsystem                     # Создание точки монтирования
mount /dev/sdc1 /mnt/newsystem           # Монтирование
rsync -ax / /mnt/newsystem               # Клонирование системы
mount -o bind /proc /mnt/newsystem/proc  # Подготовка к chroot
mount -o bind /dev /mnt/newsystem/dev    # Подготовка к chroot
mount -o bind /sys /mnt/newsystem/sys    # Подготовка к chroot
chroot /mnt/newsystem /bin/bash          # chroot
env-update                               # Post-chroot
source /etc/profiles                     # Post-chroot
grep -v sda /proc/mounts /etc/mtab       # Подготовка к grub-install
grub-install --no-floppy /dev/sdc        # grub-install
nano /etc/make.conf                      # Настройка новых cflags
emerge -ave --keep-going world           # Пересборка мира с новыми cflags
emerge -av genkernel                     # Подготовка к genkernel
zcat /proc/config.gz > /usr/share/genkernel/x86/kernel-config-2.6 # Подготовка к genkernel
genkernel all                            # genkernel
blkid /dev/sdc1                          # Узнать UUID раздела с системой
nano /boot/grub/menu.lst                 # Настройка загрузчика (root=UUID=)
nano /etc/fstab                          # Исправление fstab для описания разделов по UUID 
emerge coldplug                          # Для определения железа
rc-update add coldplug boot              # Для определения железа

nano /etc/X11/xorg.conf                  # Настройка xorg (Как именно?)

Мое мнение по большинству

Мое мнение по большинству пунктов таково:

2. С какими cflags пересобирать world чтобы получить наиболее быструю но совместимую со старыми процессорами систему?
-march=i686 (или -mtune=i686, кому как), агрессивные флаги (наподобие -О3) убрать. Можнро добавить -pipe - компилить будет удобнее и быстрее

3. Как настроить xorg.conf чтобы иксы поднимались на любом железе?
Видеодрайвер указать vesa, в ядре - поддержку vesafb, устройства ввода настроить через evdev

4. Как настроить ядро для загрузки на любом железе (genkernel all будет достаточно, или ещё что надо)?
Драйверы устройств, что вам необходимы, скомпилить полностью, но модулями.

5. Эффективно ли будет использование squashfs+unionfs для корневого раздела? Или просто вывалить всё в чистую фс?
Решать вам. Я бы сделал так. Чтобы не загаживать чистую ФС логами и прочей лабудой.

И добавлю - смонтируйте /tmp в tmpfs после того, как пересоберете мир. Так удобнее и лучше.

Пользуясь моментом, хочу передать привет друзьям, которые также пользуются "Моментом"

Спасибо

Наконец то дошли руки сделать. В общем процесс:

# Разметка диска
gparted /dev/sdc
fdisk -l /dev/sdc
{

Диск /dev/sdc: 320.1 ГБ, 320072933376 байт
255 heads, 63 sectors/track, 38913 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Disk identifier: 0x55555555

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdc1               1         245     1967931   82  Linux своп / Solaris
/dev/sdc2   *         246         261      128520   83  Linux
/dev/sdc3             262        2872    20972857+  83  Linux
/dev/sdc4            2873       38913   289499332+   c  W95 FAT32 (LBA)

}
mkswap /dev/sdc1
mkfs.ext2 -L boot /dev/sdc2
mkfs.reiser4 -L root -o create=ccreg40,compress=gzip1 /dev/sdc3

# Монтирование новых разделов
mkdir /media/root /media/root/boot
mount /dev/sdc3 /media/root
mount /dev/sdc2 /media/root/boot

# Клонирование корневого раздела
mkdir /tmp/root
mount --bind / /tmp/root/
rsync -axv /tmp/root/ /media/root/

# Небольшая чистка
rm -r /var/log/* /var/tmp/* /tmp/*
mkdir /home/arago/
chown arago:arago /home/arago/

## Перенос диска на десктоп (ибо мощнее)
# Chroot
mount --rbind /dev/ /media/root/dev
mount --rbind /sys/ /media/root/sys
mount --rbind /proc/ /media/root/proc
chroot /media/root/ /bin/bash

# Post-chroot
env-update
source /etc/profile
setarch i686

# Пересборка мира (http://ru.gentoo-wiki.com/wiki/HOWTO_Полное_обновление_системы)
nano /etc/make.conf
{

PORTAGE_NICENESS=39
CHOST="i686-pc-linux-gnu"
CFLAGS="-O2 -march=i686 -mtune=core2 -fomit-frame-pointer -pipe"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j2"
GENTOO_MIRRORS="ftp://gentoo-mirror.spb.ru/ http://mirror.yandex.ru/gentoo-distfiles/ ftp://mirror.yandex.ru/gentoo-distfiles/ http://gentoo-mirror.spb.ru/ "
SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
USE="semantic-desktop gcj zip rar unrar pm-utils embedded fontconfig freetype mysql -gtk -gnome qt kde alsa cdr sql webkit v4l2 sse sse2 ssse3 mmx -3dnow -ldap bash-completion bluetooth spell usb hal kde"
PORTDIR_OVERLAY="/usr/local/portage"
#ALSA_CARDS="hda-intel" 
LINGUAS="en ru" 
INPUT_DEVICES="evdev" 
LCD_DEVICES="" 
VIDEO_CARDS="vesa intel nvidia"
source /var/lib/layman/make.conf

# http://ru.gentoo-wiki.com/wiki/HOWTO_Экономия_трафика_с_помощью_deltup
FETCHCOMMAND="/usr/bin/getdelta.sh \${URI}"

# http://en.gentoo-wiki.com/wiki/TIP_speed_up_portage_with_sqlite
FEATURES="${FEATURES} metadata-transfer"

}
emerge -avf world
emerge -1v linux-headers glibc binutils gcc-config gcc binutils-config
source /etc/profile
emerge -1bv glibc binutils gcc portage
emerge -1bkev system
emerge -vbke --keep-going --accept-properties=-interactive world
emerge app-emulation/virtualbox-bin
lafilefixer --justfixit
revdep-rebuild

# Genkernel
emerge -av genkernel
mkdir /usr/share/genkernel/x86
cp /boot/config-2.6.33.2arago-netbook38 /usr/share/genkernel/x86/kernel-config-2.6
genkernel all --menuconfig --install --disklabel --real-root=UUID=0522f02f-ae70-423e-88eb-2a759c93c402 --loglevel=3 --makeopts=-j2 --slowusb
{

В menuconfig указал Local version=-generic-05, reiser4 файловую систему включил в ядро, отключил ext2 и ext3, включил ext4 с поддержкой ext3 и ext2

}

# Настройка /etc/fstab
blkid /dev/sdc1
blkid /dev/sdc2
blkid /dev/sdc3
blkid /dev/sdc4
mkdir /mnt/hdd
nano /etc/fstab
{

# <fs>                                  <mountpoint>    <type>  <opts>  <dump/pass>
UUID="42539b6c-8aa5-44a3-984c-13893d53e812"     none    swap    sw              0 0
UUID="92ed711d-1ac4-4b3f-9162-64a2d6a85adf"     /boot   ext2    defaults        0 0
UUID="0522f02f-ae70-423e-88eb-2a759c93c402"     /       reiser4 noatime         1 0

UUID="C2E4-250C"        /mnt/hdd        vfat    defaults                0 0
shm                     /dev/shm        tmpfs   nodev,nosuid,noexec     0 0
none                    /proc/bus/usb   usbfs   devgid=1008,devmode=664 0 0
none                    /tmp            tmpfs   defaults                0 0

}

# Инсталляция GRUB
touch /boot/hdd.marker
grub
{

grub> find /boot/hdd.marker
 (hd2,1)

grub> root (hd2,1)
 Filesystem type is ext2fs, partition type 0x83

grub> setup (hd2,1)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd2,1)"... failed (this is not fatal)
 Running "embed /boot/grub/e2fs_stage1_5 (hd2,1)"... failed (this is not fatal)
 Running "install /boot/grub/stage1 (hd2,1) /boot/grub/stage2 p /boot/grub/menu.lst "... succeeded
Done.

grub> quit

}
dd if=/dev/sdc bs=512 count=1
blkid /dev/sdc3
nano /boot/grub/menu.lst
{

default 0
timeout 1

title Gentoo Linux kernel-genkernel-x86-2.6.33.2-generic-05
root (hd0,1)
kernel /boot/kernel-genkernel-x86-2.6.33.2-generic-05 root=/dev/ram0 resume=UUID=42539b6c-8aa5-44a3-984c-13893d53e812 real_root=UUID=0522f02f-ae70-423e-88eb-2a759c93c402 video=vesafb:mtrr:3,ywrap vga=ask
initrd=/boot/initramfs-genkernel-x86-2.6.33.2-generic-05

}

## Перезагрузка с внешнего диска

# Конфигурирование иксов
X -configure
mv /root/xorg.conf.new /etc/X11/xorg.conf
cat /etc/X11/xorg.conf
{

Section "ServerLayout"
        Identifier     "X.org Configured"
        Screen      0  "Screen0" 0 0
        InputDevice    "Mouse0" "CorePointer"
        InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
        ModulePath   "/usr/lib/xorg/modules"
        FontPath     "/usr/share/fonts/misc/"
        FontPath     "/usr/share/fonts/TTF/"
        FontPath     "/usr/share/fonts/OTF"
        FontPath     "/usr/share/fonts/Type1/"
        FontPath     "/usr/share/fonts/100dpi/"
        FontPath     "/usr/share/fonts/75dpi/"
EndSection

Section "Module"
        Load  "dbe"
        Load  "dri"
        Load  "dri2"
        Load  "extmod"
        Load  "glx"
        Load  "record"
EndSection

Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "kbd"
EndSection

Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Protocol" "auto"
        Option      "Device" "/dev/input/mice"
        Option      "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
EndSection

Section "Device"
        ### Available Driver options are:-
        ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
        ### <string>: "String", <freq>: "<f> Hz/kHz/MHz"
        ### [arg]: arg optional
        #Option     "ShadowFB"                  # [<bool>]
        #Option     "DefaultRefresh"            # [<bool>]
        #Option     "ModeSetClearScreen"        # [<bool>]
        Identifier  "Card0"
        Driver      "vesa"
        VendorName  "nVidia Corporation"
        BoardName   "G84 [GeForce 8600 GT]"
        BusID       "PCI:1:0:0"
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        SubSection "Display"
                Viewport   0 0
                Depth     1
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     4
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     8
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     15
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     16
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     24
        EndSubSection
EndSection

}

echo hostname="arago-generic" > /etc/conf.d/hostname

Результат - система грузится, иксы стартуют, музыка играет, видео работает.
Глюки - при загрузке изза vga=ask система требует внимания (а ведь карты разные бывают - есть ли какой нить способ автоматизировать выбор фреймбуффера кроме как прописать его жестко?), потом при монтировании корня на десктопе система требует немного подождать и затем нажать ентер (видимо диск не успевает переинициализироваться - под виртуалбоксом и на буке успевает, грузится нормально; --slowusb не помогло), иксы поднимаются с разрешением 800x600/640x480, при том что консоль поднимается с разрешением до 1280x1024 - как побороть кроме прописывания туевой хучи моделиней в xorg.conf? Ещё, в кдешном апплете монтирования дисков при указывании встроенных дисков они не монтируются (но это и на десктопе так - видимо глюк кде). Иксы поднимаются только если правильно прописан BusID - а он на разных машинах разный (впихнуть X -configure && mv /root/xorg.conf.new /etc/X11/xorg.conf в /etc/conf.d/local.start - уж больно костыль...).. Ещё смущает root (hd0,1) - пока вроде подходит ко всем трём системам, но где гарантия что так будет всегда. Конечно всё это можно поправить напильником во время загрузки, но уж больно влом, хочется чтобы всё сразу работало нормально...

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".