magist3r 18.02.2011 16:33
Есть вопрос! — Раскатать убунту на 10 машин. Newbie way
Начну с того, что я в свободное время наведываюсь в родную школу, дабы помочь учительнице информатики с переходом на линукс. Ничего сложного: выкачал edubuntu, поставил - работает. Только вот процесс это далеко не быстрый. Во-первых, железо не первой свежести, во-вторых канал в интернет узкий, так что обновления ставятся весьма неспешно. Вот я и подумал, что надо бы на одном компе настроить, сделать образ и раскатать на остальные машины в компьютерном классе. Еще нужно сказать, что бубунта ставится второй системой рядом с вендой, потому как муниципалитет наш местный продлил лицензии еще на год. Итак, как бы я сделал образ и раскатал его?Ъ-way
1) Я использую Parted magic. Гружусь с него, утилиткой partclone снимаю образ файловой системы с бубунтой и скидываю его на внешний жесткий диск. Также копирую с помощью dd загрузчик из mbr.
2) Гружусь в Parted Magic на другую машину. Программкой ntfsresize урезаю файловую систему с виндой. fdisk'ом пересоздаю таблицу разделов.
3) Раскатываю образ с убунтой на свежеоткушенный раздел. Переписываю mbr.
4) Заменяю UUID в грубе и fstab.
Кстати, на счет этого пункта я не совсем уверен. Люди знающие, подскажите, как быстрее всего подменить UUID. У самого сузя, там немного по-другому, и груб там еще пока первый.
Newbie-way
Собственно вопрос. Как научить делать все вышеперечисленное учительницу информатики? Что из этого можно автоматизировать/обернуть в скрипт? Просто у меня самого не так много свободного времени, чтобы заниматься целым компьютерным классом. Надеюсь на вашу помощь.
UPD. Во время пересоздания таблицы разделов столкнулся с забавным поведением fdisk'а. Раздел с виндой (/dev/sda1) начинался с 63 блока, а fdisk упорно создает новый раздел с 2048. Беглое гугленье подсказало, что это связано с новыми жесткими дисками по 4Кб на блок. А вот как отключить - хз. В итоге создал разделы cfdisk'ом.
kstep 18.02.2011 16:35 #
+ 0 -
Первое, что приходит в голову: накатать скрипт и повесить в автозагрузку livecd.
Я думал об этом. Только я не очень себе представляю, как это провернуть. Конкретно меня волнует пересоздание таблицы разделов и замена UUID из скрипта.
Погуглил. Для того же fdisk'а можно использовать expect. Остался вопрос с UUID.
Remastersys спасет ацца русского тоталитаризма! А при составлении простого мануала и учительницу тоже.
О! Это то что нужно! Меня только один вопрос интересует: а оно будет ставиться также как и обычная бубунта, с разбиением разделов и прочими плюшками?
Стоп, стоп, стоп... Моя отказывается понимать в чём собственно сложность снять винты и за день в неспешном режиме разлить на них образ на своём рабочем ПК через USB адаптор.
Ну во-первых. Разбирать 10 машин не самое быстрое занятие. Во-вторых, делать это нужно в выходные, а времени у меня, как я уже говорил, немного. Ну и в-третьих, таскать винты туда сюда - не хотеть))
Мы на работе использовали Acronis, но он плохо работал с ext3 и в общем, CloneZilla теперь.
CloneZilla как раз и использует partclone. Суть вопроса не в том, как в принципе это сделать, а как научить это делать неразбирающегося в вопросе человека.
Можно не делать разделов вообще: воспользоваться Wubi и всё ставить прямо из винды, просто и быстро. Wubi делает файлы на NTFS, их можно копировать и клонировать, если лень шаги повторять.
Можно более продвинутый Ъ-way: на одной из машин поднять PXE-сервер, настроить preseed прямо с разбиением разделов и всеми опциями, и автоматически раскатывать убунту по локальной сети. Понадобится несколько часов времени, чтобы всё правильно настроить и протестировать, зато результатами работы можно пользоваться все будущие годы -- компы будут ломаться, меняться, ученики будут портить настройки -- перезалил с PXE и всё.
Можно более продвинутый Ъ-way: на одной из машин поднять PXE-сервер, настроить preseed прямо с разбиением разделов и всеми опциями, и автоматически раскатывать убунту по локальной сети. Понадобится несколько часов времени, чтобы всё правильно настроить и протестировать, зато результатами работы можно пользоваться все будущие годы -- компы будут ломаться, меняться, ученики будут портить настройки -- перезалил с PXE и всё.
Wubi работает до первого серьёзного обновления. Я как-то игрался, кончилось тем, что после очередного апдейта он не смог найти загрузочную запись.
Подтверждаю данный косяк.
Сталкивались знакомые, потом приходил фиксить
Сталкивались знакомые, потом приходил фиксить
как быстрее всего подменить UUID
использовать в fstab исходного образа /dev/sda1, dev/sda2 вместо UUID
для grub2 лучше скрипт, который будет делать: chroot, grub-install /dev/sda, update-grub
Сделал автоматическое клонирование с образа VirtualBox на жесткие диски любого размера. Вообщем ставится ОС в VM, настраивается как надо, потом цепляется жесткий диск, он автоматом разбивается на разделы и заливается операционка.
sudo ./fill.sh /dev/sdc /home/john/.VirtualBox/HardDisks/UbuntuOEM.vdi
cat fill.sh :
PartedGen.jar занимается тем кто генерет файлик для sfdisk. bash плохо знаю, поэтому быстрее было написать на java. у кого есть желание переписать на bash дам исходник на java.
sudo ./fill.sh /dev/sdc /home/john/.VirtualBox/HardDisks/UbuntuOEM.vdi
cat fill.sh :
#!/bin/bash
set -x
mountRoot='/media/cloneRoot'
mountHome='/media/cloneHome'
mountSrcRoot='/media/vdiRoot'
mountSrcHome='/media/vdiHome'
disk=$1
image=$2
umount `echo $disk'*'`
diskSize=`/sbin/sfdisk -s $disk`
#echo $?
let "diskSizeInMb = diskSize / 1024"
echo "disk size in MB: $diskSizeInMb"
java -jar PartedGen.jar $diskSizeInMb
dd if=/dev/zero of=$disk count=1 bs=512
#echo $?
sfdisk -uS --force $disk < parts
echo "exit: $?"
mkfs.ext4 -L root `echo $disk'1'`
#echo "exit: $?"
if < $? -ne 0 > ; then exit 5; fi
mkfs.ext4 -L home `echo $disk'3'`
if < $? -ne 0 > ; then exit 5; fi
mkswap `echo $disk'2'`
if < $? -ne 0 > ; then exit 5; fi
mkdir $mountRoot
mount `echo $disk'1'` $mountRoot
mkdir $mountHome
mount `echo $disk'3'` $mountHome
mkdir /media/vdfuse
mkdir $mountSrcRoot
mkdir $mountSrcHome
vdfuse/vdfuse-v82 -r -f $image /media/vdfuse
mount -o loop /media/vdfuse/Partition1 $mountSrcRoot
mount -o loop /media/vdfuse/Partition3 $mountSrcHome
cp -ax `echo $mountSrcRoot'/*'` $mountRoot
$mountSrcRoot'/etc/'` \
$mountSrcRoot'/root/'` \
$mountSrcRoot'/var'` $mountRoot
cp -ax `echo $mountSrcHome'/*'` $mountHome
grub-install --root-directory=$mountRoot --recheck $disk
umount $mountRoot
umount $mountHome
umount $mountSrcRoot
umount $mountSrcHome
sleep 3
umount /media/vdfuse
rmdir $mountRoot
rmdir $mountHome
rmdir /media/vdfuse
rmdir $mountSrcRoot
rmdir $mountSrcHome
exit 0
PartedGen.jar занимается тем кто генерет файлик для sfdisk. bash плохо знаю, поэтому быстрее было написать на java. у кого есть желание переписать на bash дам исходник на java.
53-55 ненужны, видимо случайно раскоментил при редактировании поста.
нулевая вероятность. уже таким образом залито на сотни машин. естественно перед запуском скрипта, VM надо заглушить.