Возникла тут у меня необходимость соорудить ремонтную флэшку.
Причем, не хотела готовые варианты, а именно свою.
Подумала и накалякала такую вот инструкцию.
Сразу пару моментов:
1. Создаю систему первоначально в файлике на диске, потому как на флэшу пишеться дико медленно. И легче создать образ, настроить, а уж потом его перелить на флэшу целиком.
2. Использую qemu, а не kvm, потому как kvm требует физической поддержки виртуализации, а у меня её нету.
3. Пользую debootstrap, потому как через него быстрее, чем с установочного образа и бутор всякий не лезет туда.
Копирайты: желающие могут перетащить в вики или присвоить, мне плевать. Ссылаться на меня не обязательно, даже не желательно.
# Создадим новый имидж
dd if=/dev/zero of=./new.img bs=10M count=100
# Разметим диск
fdisk ./new.img << EOF
n
p
1
a
1
w
EOF
# Примонтируем диск
kpartx -a ./new.img
# Взглянем куда
kpartx -l ./new.img
# loop1p1 : 0 2045952 /dev/loop1 2048
# форматируем
mkfs.ext3 /dev/mapper/loop1p1
# Монтируем
mkdir /mnt/tmp
mount /dev/mapper/loop1p1 /mnt/tmp -t ext3
# Устанавливаем туда систему
debootstrap oneiric /mnt/tmp/ http://mirror.yandex.ru/ubuntu
# Правим файлики в новоиспеченной системе
/etc/network/interfaces
/etc/hostname
/etc/apt/sources.list
/etc/fstab
# Чтоб узнать какой UUID прописывать в fstab
blkid
# Запускаем систему под chroot
mount /proc /mnt/tmp/proc -o bind
mount /dev /mnt/tmp/dev -o bind
mount /sys /mnt/tmp/sys -o bind
chroot /mnt/tmp
# Немного настраиваем под себя
passwd
apt-get update;apt-get -y upgrade
apt-get -y install aptitude mc vim ntpdate language-pack-ru language-pack-ru-base man manpages manpages-ru zip unzip unrar
dpkg-reconfigure locales; update-locale
update-alternatives --config editor
# Устанавливаем ядро
# Ищем последнее ядро (у меня linux-image-3.0.0-20-generic)
aptitude search linux-image
# Игнорируем ошибки груба и продолжаем несмотря на них
apt-get install linux-image-3.0.0-20-generic
# Выходим из chroot и отключаем образ
exit
umount /mnt/tmp/proc
umount /mnt/tmp/dev
umount /mnt/tmp/sys
umount /mnt/tmp
kpartx -d ./new.img
# Запускаем нашу виртуалочку (пока без груба)
qemu -hda ./new.img \
-kernel /vmlinuz -initrd /initrd.img -append root=/dev/sda1 \
-net nic,vlan=0 -net tap,vlan=0,ifname=tap1,script=/etc/qemu-ifup
# Нижняя строчка - это подъем сети (ну есть у меня бридж)
# После запуска ставим grub (и обновляем на всякий пожарный)
grub-install /dev/sda
update-grub2
poweroff
# Запускаемся нормально и наслаждаемся
qemu -hda ./new.img \
-boot c \
-net nic,vlan=0 -net tap,vlan=0,ifname=tap1,script=/etc/qemu-ifup
# После всех настроек и установок необходимого ПО
# Сливаем на флэху, заранее остановив (sdc - у меня флэха)
dd if=./new.img of=/dev/sdc
sync