Установка LINUX на новый компьютер.

A) Установку с нуля не рассматриваем. Можно сделать backup системы другого компьютера и перетащить его по сети. Для этого с нашей стороны нужен компьютер с уже работающим Linux , а с той стороны чтобы была запущена служба ssh. Тогда на нашем компьютере запускаем команду


# ssh root@192.168.0.20 "cd /; nice -n 10 tar cvpPz --exclude ={/home/user/Desktop/DOCUMENTS/*,/home/user/DOCUMENTS/*,/home/user/.thunderbird,/post,/proc/*,/sys/*,/tmp/*} /" > /root/backup.tar.gz (1)


где 192.168.0.20- адрес другого компьютера с которого делаем бэкап., ssh — позволяет зайти на удаленный компьютер, cd / - переход в корневой каталог удаленного компьютера, nice -n 10 — запускает команду стоящую за ней с пониженным приоритетом чтобы не тормозить работу того кто за ним работает,

Значение ключей команды tar: c-create, v-verbose,p- сохраняет permissions, P-сохраняет полный путь к файлам папкам, z- сжимает архив по алгоритму gzip что то в этом роде.

--exclude- исключает из архивирования папки которые нам не нужны а именно личные документы пользователя user , псевдофайловые папки pros sys , папку с временными файлами tmp. Так как в команде tar не указан файл (ключ --file=) в который записывается архив то он бы выводился прямо нам на экран, но конструкция ">/root/backup.tar.gz" записывает его прямо нам на компьютер.


Если у нас нет работающего компьютера с Linux загружаемся с Fedora Core Rescue Cd.

Появляется приглашение boot:----->жмем Enter (либо rescue cd Enter)----->выбираем English----->выбираем US----->Do you want to start the network interfaces on this system (выбираем Yes)----->снимам галочку с "Configure using DHCP" и вводим в полях "IP Address" и "Netmask" (ok) ----->при необходимости можно задать gateway и dns (ok) ----->The rescue environment will now attempt to find your Linux installation and mount it under directory /mnt/sysimage (выбираем skip). Теперь можем применить формулу (1). (Если в окне "Do you want to start the network interfaces on this system" выбрали No, то когда появится командная строка сеть всегда можно поднять командой


#ifconfig eth0 192.168.0.111 netmask 255.255.255.0 up (2)


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


В итоге получаем бэкап установленного Linux в /root/backup.tar.gz

Можно бы было не сжимать файлы в архив а скопировать, но так как в Linux огромное количество мелких файлов это гораздо дольше. Хотя конечно гораздо удобнее иметь бэкап в виде структуры каталогов, - вносить изменения при необходимости гораздо легче.


B) Итого мы получили или имеем бэкап работающей системы.

Берем новый компьютер, вставляем в него винчестер с бэкапом. Предлагаю пустой винчестер (куда ставим) делать hda (на время процесса установки это важно с точки зрения grub, чтобы правильно установить загрузчик, после установки это также важно с точки зрения /etc/fstab где прописано к каким папкам монтируются разделы винчестера), а винчестер с бэкапом hdc (в принципе неважно). (Linux дает ide устройствам названия так: на мат плате два ide контроллера primary и secondary , к каждому подключаем шлейф на два винчестера master и slave => hda -primary master, hdb -primary slave, hdb — secondary master, hdc- secondary slave.) Узнать какой винчестер каким является можно командой


#fdisk -l (3)


далее нужно пустой винчестер разметить на разделы, отметить какой раздел загрузочный и отформатировать разделы. Создадим три раздела, первый от начала диска так как он самый быстрый для подкачки, второй небольшой для загрузочного каталога /boot, третий для корневого каталога "/". Работу с разделами ведем командой-программой fdisk.


укаываем с каким винчестером будем работать

#fdisk /dev/hda


появляется приглашение для работы программы fdisk

Command (m for help):


если ввести "m" то можно посмотреть справку по командам программы fdisk.


Итак:

Command (m for help): n - новый раздел

Command (m for help): p — основной раздел (то есть с которого можно потенциально грузиться)

Command (m for help): 1 — номер раздела , логично начинать с единицы, но принципе можно, разбивать диск на разделы в любом порядке- то есть вначале прописать третий раздел , потом первый , потом второй, но это просто неудобно.

Command (m for help): 1- номер первого цилиндра котрым начинается раздел

Command (m for help): +512M — размер раздела


таким образом был создан первый раздел для подкачки ( у linux в основном не файл подкачки а раздел подкачки)

по аналогии второй и третий разделы


Command (m for help): n

Command (m for help): p

Command (m for help): 2

Command (m for help): enter — линукс сам понимает с какого цилиндра начать этот раздел

Command (m for help): +150M

Command (m for help): n

Command (m for help): p

Command (m for help): 3

Command (m for help): enter

Command (m for help): enter — здесь не вводим размер так как третий раздел последний и им мы занимаем все оставшееся место


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


Command (m for help): t — меняет тип раздела

Command (m for help): 1 — номер обрабатываемого раздела

Command (m for help): 82 — этот номер отвечает за тип раздела linux swap


еще нужно пометить второй раздел как загрузочныййй


Command (m for help): a

Command (m for help): 2 -номер раздела

Command (m for help): w — запиывает все изменения и выходит из программы fdisk.


Так как все изменения с диском происходят фактически после ввода команды "w" то в случае каких то ошибок можно просто выйти ничего не меняя командой


Command (m for help): q


посмотреть на план разделов диска всегда можно командой


Command (m for help): p


Итак разделы готовы. Остается их разметить.


#mkswap /dev/hda1 — форматируем swap раздел


второй и третий раздел форматируем как reiserfs, так как она журналируемая как ntfs и лучше защищена от нажатия на reset пользователем чем ext2/ext3. Сделать это можно командой

#mkreiserfs /dev/hda2

#mkreiserfs /dev/hda3

или (доступно только в уже установленном linux)

#mkfs.reiserfs /dev/hda2

#mkfs.reiserfs /dev/hda3


если нужно в ext3 то


#mkfs.ext3 /dev/hda2

#mkfs.ext3 /dev/hda3


в ext2


#mkfs.ext2 /dev/hda2

#mkfs.ext2 /dev/hda3


теперь начинаем работать с файловыми стистемами разделов, для этого в Linux разделы нужно прикрепить к каталогам (примонтировать). Создадим каталоги для монтирования.


#mkdir /1 — для монтирования файловой системы устанавливаемого Linux

#mkdir /2 — для монтирования диска с бэкап


монируем третий раздел пустого диска в папку /1


# mount /dev/hda3 /1


текущий каталог /1 в будущей системе будет будет монтироваться как корневой каталог , то есть "/". Внутри этого каталога будет присутствовать каталог /boot (в силу струкуры каталогов linux). Так вот каталог /boot мы свяжем с отдельным разделом — вторым разделом. Для этого прежде всего создадим каталог /boot внутри "/" , а так как сейчас каталог "/" есть каталог /1 => /boot должен сейчас быть /1/boot


# mkdir /1/boot


свяжем каталог /1/boot и второй раздел пустого винчестера


#mount /dev/hda2 /1/boot


таким образом когда мы теперь будем копировать файл в /1/boot они физически будут попадать на второй раздел.

Зачем это нужно. Чтоб загрузочные файлы лежали вначале диска и быстрее грузились, не были фрагментироваными и отдельный раздел вроде как безопасней с точки зрения яиц и корзины. Возможно что grub нормально не установится если /boot физически будет лежать где нибудь в конце раздела.


Мы положили выше (для определенности) что наш бэкап находится на hdc. Положм для определенности что на первом разделе. Значит чтобы примаунтить этот радел к каталогу /2 нужна команда


# mount /dev/hdc1 /2

для надежности лучше даже ращдел с бэкапом примонтировать в режиме "только чтение"

# mount -r /dev/hdc1 /2


перехдим в папку /2

# cd /2


и вспоминем где и в каком виде у нас хранится архив


# ls -1


предположим что архив в форме файла хранися /2/backup.tar.gz

тогда чтобы его распаковать вводим команду


# tar xvzp --file=/2/backup.tar.gz -C /1

здесь x- extract, v-verbose, z- разжимаем архив по алгоритму gzip, p -воссанавливает пермишнс к файлам, --file=/2/backup.tar.gz путь к архиву, -C /1 куда распаковываем архив. Мы не используем ключ "P" чтобы пути распаковки были относительными (относительно каталога /1 в данном случае).


Предположим что бэкап у нас не виде фа йла а в виде структуры каталогов. Для определенности пусть каталог с бэкапом будет /2/backup-fedora тогда нам ничего распаковыввать не нужно , а нужно перекопировать его в /1 .


это можно сделать например с помощью midnight commander. Если мы работаем через Fedora Core Linux rescue , то там midnight commander нет, тогда командой "cp"


# cp -RpPv /2/backup-fedora/* /1


-R – копирует рекурсивно каталоги вместе с подкаталогами, -p – сохраняет права доступа, -P - копирует символическую ссылку а не содержимое, -v – verbose

Если во время копирования понадобится выполнить еще какие нибудь команды, то это можно сделать со второй консоли Alt+F2 (переход обратно в первую консоль Alt+F1).


если что-то нужно удалить , например в /1 запускаем команду


# rm -r /1/* (использовать внимательно)

правда насколько я знаю такая команда не удаляет файлы и папки вида ".something".


Итак данные на новый винчестер скопированы. Теперь нужно установить загрузчик GRUB.

Скорее всего версия GRUB на Fedora Core Rescue Cd (или если вы работаете с настроенным linux) отличается от версии GRUB которая содержтся в бэкапе Linux. Поэтому нужно запустить GRUB из папки с раскрытым бэкапом командой


# /1/sbin/grub

появляется приглашение программы "grub >".

у GRUB другое обозначение дисков и разделов. В упрощеном случае когда рассматриваем только встроенные в мат плату два ide контроллера hda=hd0, hdb=hd1, hdc=hd2, hdd=hd3. Разделы нумеруются с нуля. В случае затруднения (и для контроля) облегчает определение нужного винчестера нажатие "Tab". В этом случае GRUB выдает полезную информацию. На примере нашего случая.

Вначале GRUB нужно указать раздел где лежать его файлы команой root (обращаю внимание что эта команда именно укзвыает где лежать файлы граба грабу и не имеет никакого отношения к каталогу "/" или /root).

Вводим


grub > root ("Tab"


после этого GRUB дополняеткоманду и выводит


grub > root (hd

Possibe disks are hd0 hd1


проверяем hd0

grub > root (hd0,"Tab"

Possible partitions are:

Partition num: 0, Filesystem type unknown, Partition type 0x82 — это свап

Partition num: 1, Filesystem type is reiserfs, Partition type 0x83 — это /boot

Partition num: 0, Filesystem type is reiserfs, Partition type 0x83 — это /


Так как GRUB находится в /boot то завершаем команду

grub > root (hd0,1)

Filesystem type is reiserfs, Partition type 0x83


когда указан root для grub, то остается выполнить команду установки

#setup (hd0)


если все правильно то GRUB напишет

... succeeded

Done.


Выходим из GRUB

#quit


C) Готово, можно загружать новуй систему с диска hda. Но перед этим можно внести изменения IP адреса и других параметров индивидуальных для нового компьютера.


Неплохо проверить что /1/temp пуст (иначе GNOME запустится с ошибками), если не пуст стереть все файлы и папки командой #rm -r /1/temp/* (применять внимательно)


С помощью midnight commander (из работающего Linux) или vi (Fedora Core Rescue CD) можно уже сейчас изменить некоторые индивидуальные параметры установленного Linux (hostname, Ipaddress,gateway). Замечу, что можно работая из Fedora Core Rescue CD которая не имеет midnight commander все же его запустить (так как править файлы из vi мало удовольствия), для этого выполняем команду

# chroot /1

chroot как бы меняет корневой каталог и мы попадаем в переменные окружения установленного linux, теперь можем запустить midnght commander

#mc

Если выполнили chroot, то из нижеуказанных путей к файлам исчезает "/1".


Меняем hostname в

/1/etc/sysconfig/network

/1/etc/sysconfig/networking/profiles/default/hosts

/1/etc/hosts

Для успеха нужно менять во всей группе файлов.


IP адрес и gateway в

/1/etc/sysconfig/networking/profiles/default/ifcfg-eth0

/1/etc/sysconfig/networking/devices/ifcfg-eth0

/1/etc/sysconfig/network-scripts/ifcfg-eth0


если мы настраивали cups (службу печати) чтобы она в браузере выдавала свою страницу управления на ввод IP адреса компьютера (http://192.168.0.xxx:631 а не http://loclahost:631) , то нужно поменять строку вида "Listen 192.168.0.xxx:631" на "Listen Ipaddress:631" в

/1/etc/cups/cupsd.conf

===========================================================

Опознать место где она находится можно по этому куску файла cupsd.conf

########
######## Network Options
########

#
# Ports/addresses that we listen to. The default port 631 is reserved
# for the Internet Printing Protocol (IPP) and is what we use here.
#
# You can have multiple Port/Listen lines to listen to more than one
# port or address, or to restrict access:
#
# Port 80
# Port 631
# Listen hostname
# Listen hostname:80
# Listen hostname:631
# Listen 1.2.3.4
Listen 192.168.0.112:631

===========================================================


изменить имя компьютера, рабочую группу в сети Windows (в linuxe она называется smb) в

/1/etc/samba/smb.conf

строки вида "server string =...", "netbios name =...", "workgroup=...".

Опознать место где они находятся можно по этому куску файла smb.conf

============================================
[global]

# workgroup = NT-Domain-Name or Workgroup-Name
workgroup = WORKGROUP

netbios name = f120

# server string is the equivalent of the NT Description field
server string = f120
=============================================


изменить имя папки /home/user/.wine/dosdevices/c:/windows/profiles/username на новое имя пользователя.

------------------------------------------------------------------------------------------------------------------


привожу три файла, которые автоматизируют процесс, позднее были добвалены команды sleep 10, так как на слабых компах система не успевала  и скрипт не отрабатывал с ошибкой error spawn:

-------------------------------------------------------

Файл part-1.sh


#!/bin/bash
PATH=$PATH:/sbin:/usr/sbin:/usr/bin
if [ -z "$1" ]
then
echo "no arguments $0 1 2 3 4 5"
echo "#########################"
echo "1 - fdisk razmetka"
echo "2 - montirovanie"
echo "3 - copirovanie"
echo "4 - perl zamena"
echo "5 - grub"
echo "########################"
exit 0
fi

#parametri
export computername=LAKOMKA
export ipadress=192.168.0.77
export sourcedisk=/dev/hda
export destdisk=/dev/hdb
export destdiskgrub=hd1
export printername=PRINTER\ OTDEL\ MOROJENOGO
username=user
destpath=/1
sourcepath=/ISTOCHNIK

#zapusk fdisk
if [ "$1" -eq 1 ]
then
umount $destdisk\2
umount $destdisk\3
perl -pi -e 's/set sourcedisk.*/set sourcedisk $ENV{sourcedisk}/' expect-fdisk.exp
perl -pi -e 's/set destdisk.*/set destdisk $ENV{destdisk}/' expect-fdisk.exp
expect -f expect-fdisk.exp
fi

#montirovanie katalogov
if [ "$2" -eq 2 ]
then
mkdir $destpath /2
mount $destdisk\3 $destpath
mkdir $destpath/boot
mount $destdisk\2 $destpath/boot
fi

#kopirivanie failov
if [ "$3" -eq 3 ]
then
cp -d -i -p -r $sourcepath/* $destpath
rm -rf $destpath/tmp
mkdir $destpath/{proc,tmp}
chmod -R 777 $destpath/tmp
fi

# mount $sourcedisk'1' /2
#tar xvzfp /2/FC4-pavl/backup.tar.gz -C $destpath
#tar xvzfp /2/backup.tar.gz -C $destpath


#menyaem hostname smb cups itp
if [ "$4" -eq 4 ]
then
perl -pi -e 's/HOSTNAME=(.*)/HOSTNAME=$ENV{computername}/' $destpath/etc/sysconfig/network
perl -pi -e 's/(.*)IPADDR=(.*)/IPADDR=$ENV{ipadress}/' $destpath/etc/sysconfig/networking/profiles/default/ifcfg-eth0
perl -pi -e 's/(.*)HWADDR=(.*)//' $destpath/etc/sysconfig/networking/profiles/default/ifcfg-eth0
perl -pi -e 's/(.*)IPADDR=(.*)/IPADDR=$ENV{ipadress}/' $destpath/etc/sysconfig/networking/devices/ifcfg-eth0
perl -pi -e 's/(.*)HWADDR=(.*)//' $destpath/etc/sysconfig/networking/devices/ifcfg-eth0
perl -pi -e 's/(.*)IPADDR=(.*)/IPADDR=$ENV{ipadress}/' $destpath/etc/sysconfig/network-scripts/ifcfg-eth0
perl -pi -e 's/(.*)HWADDR=(.*)//' $destpath/etc/sysconfig/network-scripts/ifcfg-eth0
perl -pi -e 's/(.*)127.0.0.1(.*)/127.0.0.1 localhost.localdomain localhost $ENV{computername}/' $destpath/etc/sysconfig/networking/profiles/default/hosts
perl -pi -e 's/(.*)127.0.0.1(.*)/127.0.0.1 localhost.localdomain localhost $ENV{computername}/' $destpath/etc/hosts
perl -pi -e 's/(.*)Listen(.*)127.0.0.(.*):631/vremenno/' $destpath/etc/cups/cupsd.conf
perl -pi -e 's/(.*)Listen(.*\d.*):631/Listen $ENV{ipadress}:631/' $destpath/etc/cups/cupsd.conf
perl -pi -e 's/^vremenno/Listen 127.0.0.1:631/' $destpath/etc/cups/cupsd.conf
perl -pi -e 's/.*server string.*=.*/server string = $ENV{computername}/' $destpath/etc/samba/smb.conf
perl -pi -e 's/.*netbios name.*=.*/netbios name = $ENV{computername}/' $destpath/etc/samba/smb.conf
perl -pi -e 's/NAME=ОТМЕНА ПЕЧАТИ.*/NAME=ОТМЕНА ПЕЧАТИ НА $ENV{printername}/' $destpath/home/user/.opera/opera6.adr
perl -pi -e 's/URL=http:\/\/192.168.*/URL=http:\/\/$ENV{ipadress}:631\/jobs/' $destpath/home/user/.opera/opera6.adr
wineprofile=$destpath/home/user/.wine/harddiskvolume0/windows/profiles
mv $wineprofile/`ls --format=single-column $wineprofile | grep -v All\ Users` $wineprofile/$username
echo "#################################"
echo "ne zabud sdelat "
echo "usermod -l newname -ppassw oldname"
echo "##################################"
fi

#zapusk grub
if [ "$5" -eq 5 ]
then
perl -pi -e 's/set destdiskgrub.*/set destdiskgrub $ENV{destdiskgrub}/' expect-grub.exp
expect -f expect-grub.exp
fi

-----------------------------------------------------------------------------------------------------


файл expect-grub.exp


#!/usr/bin/expect
#strace 1

#destination disk na kotorii stavim linux
set destdiskgrub hd1

spawn /sbin/grub
expect -timeout 10 "ujii"

send "root ($destdiskgrub,1)\r"
expect -timeout 10 "ujii"

send "setup ($destdiskgrub)\r"
expect -timeout 10 "ujii"

send "quit\n"
expect -timeout 10 "ujii"

------------------------------------------------------------------------

файл expect-fdisk.exp


#!/usr/bin/expect
#strace 1

#disk istochnik na kotorom lejit tar arhiv linux
set sourcedisk /dev/hda

#destination disk na kotorii stavim linux
set destdisk /dev/hdb

set odin 1
set dva 2
set tri 3

spawn fdisk $destdisk
expect -timeout 1 "ujii"

send "d\r"
expect -timeout 1 "ujii"

send "1\r"
expect -timeout 1 "ujii"

send "d\r"
expect -timeout 1 "ujii"

send "2\r"
expect -timeout 1 "ujii"

send "d\r"
expect -timeout 1 "ujii"

send "3\r"
expect -timeout 1 "ujii"

send "d\r"
expect -timeout 1 "ujii"

send "4\r"
expect -timeout 1 "ujii"



send "n\r"
expect -timeout 1 "ujii"

send "p\r"
expect -timeout 1 "ujii"

send "1\r"
expect -timeout 1 "ujii"

send "\r"
expect -timeout 1 "ujii"

send "+512M\r"
expect -timeout 1 "ujii"

send "n\r"
expect -timeout 1 "ujii"

send "p\r"
expect -timeout 1 "ujii"

send "2\r"
expect -timeout 1 "ujii"

send "\r"
expect -timeout 1 "ujii"

send "+150M\r"
expect -timeout 1 "ujii"

send "n\r"
expect -timeout 1 "ujii"

send "p\r"
expect -timeout 1 "ujii"

send "3\r"
expect -timeout 1 "ujii"

send "\r"
expect -timeout 1 "ujii"

send "\r"
expect -timeout 1 "ujii"

send "t\r"
expect -timeout 1 "ujii"

send "1\r"
expect -timeout 1 "ujii"

send "82\r"
expect -timeout 1 "ujii"

send "a\r"
expect -timeout 1 "ujii"

send "2\r"
expect -timeout 1 "ujii"

send "w\r"
expect -timeout 1 "ujii"

sleep 10
spawn mkswap $destdisk$odin
expect -timeout 1 "ujii"
sleep 10

spawn mkreiserfs $destdisk$dva
expect -timeout 1 "ujii"

send "y\r"
expect -timeout 1 "ujii"

spawn mkreiserfs $destdisk$tri
expect -timeout 1 "ujii"

send "y\r"
expect -timeout 1 "ujii"


----------------------------------------------------------

еще один bunch скриптов по администрированию .  смотри здесь


Сайт управляется системой uCoz