LinuxForum.Fans
Тема

Мой способ приготовления загрузочной usb флэшки

Автор: zenon 12 сообщений 3303 просмотров
#56543

Вот собственно мучаю скрипт который устанавливает debian на флэшку, хотел бы его обсудить, можно использовать не только для флэш, например ставить на виртуалку (установка grub будет чуть по-другому).
Подразумеваем флэшка = /dev/sdc, раздел /dev/sdc1 отформатирован ext3.
Дебиан = unstable /sid.
Дабы не качать по нескольку раз одни и те же пакеты стоит approx, репозитории редактируются в /etc/approx/approx.conf, сидит на localhost:9999.

text

#!/bin/sh
# Подразумеваем что наша флэшка = /dev/sdc
# Раздел на котороый инсталируем = /dev/sdc1 - отформотирован в ext3

USER=user # Имя пользователя MPOINT=/mnt/usb-sdc # Точка монтирования ARCHITEC=amd64

mkdir $MPOINT mount /dev/sdc1 $MPOINT debootstrap --include=locales --verbose --arch $ARCHITEC unstable $MPOINT http://127.0.0.1:9999/debian # ftp://ftp.fi.debian.org/debian mount --bind /dev $MPOINT/dev mount --bind /proc $MPOINT/proc rm -f $MPOINT/etc/locale.gen echo 'en_US ISO-8859-1 en_US.UTF-8 UTF-8 ru_RU.KOI8-R KOI8-R ru_RU.UTF-8 UTF-8 ' > $MPOINT/etc/locale.gen chroot $MPOINT locale-gen chroot $MPOINT localedef -i ru_RU -f UTF-8 ru_RU.UTF-8 # chroot /mnt/usb-tmp dpkg-reconfigure locales rm -f $MPOINT/etc/apt/sources.list echo '# /apt/sources.list # ====================================================================================== deb http://127.0.0.1:9999/debian unstable main contrib non-free deb http://127.0.0.1:9999/debian experimental main contrib non-free # deb ftp://ftp.fi.debian.org/debian/ unstable main contrib non-free # deb ftp://ftp.fi.debian.org/debian/ experimental main contrib non-free # ====================================================================================== ' > $MPOINT/etc/apt/sources.list rm -f $MPOINT/etc/fstab echo '# # ====================================================================================== # /etc/fstab: информация о статических файловых системах. # ====================================================================================== # файл. система точка монтир. тип параметры дамп проход proc /proc proc defaults 0 0 # ====================================================================================== /dev/sda1 / ext3 defaults 0 0 # ====================================================================================== ' > $MPOINT/etc/fstab rm -f $MPOINT/etc/hostname echo 'usb' > $MPOINT/etc/hostname rm -f $MPOINT/etc/resolv.conf echo 'nameserver 127.0.0.1' > $MPOINT/etc/resolv.conf rm -f $MPOINT/etc/hosts echo '127.0.0.1 localhost 127.0.1.1 usb' > $MPOINT/etc/hosts chroot $MPOINT apt-get update chroot $MPOINT dpkg-reconfigure tzdata chroot $MPOINT apt-get install -y console-cyrillic console-data console-setup chroot $MPOINT apt-get install -y linux-image-2.6.32-5-$ARCHITEC chroot $MPOINT apt-get install -y ntfs-3g ntfsprogs reiserfsprogs reiser4progs mc zsh chroot $MPOINT apt-get install -y sysv-rc-conf chkconfig pppoeconf htop unrar-free elinks mkdir $MPOINT/boot/grub echo '(hd0) /dev/sdc' > $MPOINT/boot/grub/device.map cat $MPOINT/boot/grub/device.map grub-install --root-directory=$MPOINT --no-floppy '(hd0)' chroot $MPOINT apt-get install -y grub2 chroot $MPOINT update-grub echo ' # =========================================== ROOT PASWOORD for new system................. # ===========================================' chroot $MPOINT passwd chroot $MPOINT adduser $USER chroot $MPOINT addgroup --system admin chroot $MPOINT adduser $USER admin echo -e '%admin ALL=(ALL) ALL' > $MPOINT/etc/sudoers chroot $MPOINT aptitude clean chroot $MPOINT chown nzion -v -R /home/$USER chroot $MPOINT aptitude clean rm -fv $MPOINT/etc/rc.local echo 'export LANG=ru_RU.UTF-8 export LC_CTYPE="ru_RU.UTF-8" export LC_NUMERIC="ru_RU.UTF-8" export LC_TIME="ru_RU.UTF-8" export LC_COLLATE="ru_RU.UTF-8" export LC_MONETARY="ru_RU.UTF-8" export LC_MESSAGES="ru_RU.UTF-8" export LC_PAPER="ru_RU.UTF-8" export LC_NAME="ru_RU.UTF-8" export LC_ADDRESS="ru_RU.UTF-8" export LC_TELEPHONE="ru_RU.UTF-8" export LC_MEASUREMENT="ru_RU.UTF-8" export LC_IDENTIFICATION="ru_RU.UTF-8" exit 0 ' > $MPOINT/etc/rc.local

umount $MPOINT/dev umount $MPOINT/proc umount /dev/sdc1

exit

С rc.local и русским языком может перемудрил, но хотел его гвоздями вбить :)
Имя хоста правим в скрипте.
В таком виде работает, только что поставил на флэшку....
У меня правда он еще копирует настроки всякие, в т.ч. zsh...
После этого можно навернуть иксы...

Проверить можно с помощью qemu / kvm:
kvm -hda /dev/sdc

#56856
newzenon написал:
устанавливает debian на флэшку

Флешка выстумает в качестве харддиска?

#56903
Shlomo написал:

Флешка выстумает в качестве харддиска?

Да.

Немного намудрил в срипте, а именно не знал что в zsh опция setopt noclobber запрещает перезапись файла командой echo, для безусловной перезаписи надо было просто делать так: echo >| _имя_файла.
И вот это еще поправил:
# echo -e '%admin ALL=(ALL) ALL' > $MPOINT/etc/sudoers
echo "%admin ALL=(ALL) ALL" | tee -a $MPOINT/etc/sudoers

text

#!/bin/sh
# Подразумеваем что наша флэшка = /dev/sdc
# Раздел на котороый инсталируем = /dev/sdc1 - отформотирован в ext3

USER=user # Имя пользователя MPOINT=/mnt/usb-sdc # Точка монтирования ARCHITEC=amd64 LINIMAGE=linux-image-2.6.32-5-amd64

mkdir $MPOINT mount /dev/sdc1 $MPOINT debootstrap --include=locales --verbose --arch $ARCHITEC unstable $MPOINT http://127.0.0.1:9999/debian # ftp://ftp.fi.debian.org/debian mount --bind /dev $MPOINT/dev mount --bind /proc $MPOINT/proc rm -f $MPOINT/etc/locale.gen echo 'en_US ISO-8859-1 en_US.UTF-8 UTF-8 ru_RU.KOI8-R KOI8-R ru_RU.UTF-8 UTF-8 ' >| $MPOINT/etc/locale.gen chroot $MPOINT locale-gen chroot $MPOINT localedef -i ru_RU -f UTF-8 ru_RU.UTF-8 # chroot /mnt/usb-tmp dpkg-reconfigure locales echo '# /apt/sources.list # ====================================================================================== deb http://127.0.0.1:9999/debian unstable main contrib non-free deb http://127.0.0.1:9999/debian experimental main contrib non-free # deb ftp://ftp.fi.debian.org/debian/ unstable main contrib non-free # deb ftp://ftp.fi.debian.org/debian/ experimental main contrib non-free # ====================================================================================== ' >| $MPOINT/etc/apt/sources.list echo '# # ====================================================================================== # /etc/fstab: информация о статических файловых системах. # ====================================================================================== # файл. система точка монтир. тип параметры дамп проход proc /proc proc defaults 0 0 # ====================================================================================== /dev/sda1 / ext3 defaults 0 0 # ====================================================================================== ' >| $MPOINT/etc/fstab echo 'usb' >| $MPOINT/etc/hostname echo 'nameserver 127.0.0.1' >| $MPOINT/etc/resolv.conf echo '127.0.0.1 localhost 127.0.1.1 usb' >| $MPOINT/etc/hosts chroot $MPOINT apt-get update chroot $MPOINT dpkg-reconfigure tzdata chroot $MPOINT apt-get install -y console-cyrillic console-data console-setup chroot $MPOINT apt-get install -y $LINIMAGE chroot $MPOINT apt-get install -y ntfs-3g ntfsprogs reiserfsprogs reiser4progs mc zsh chroot $MPOINT apt-get install -y sysv-rc-conf chkconfig pppoeconf htop unrar-free elinks mkdir $MPOINT/boot/grub echo '(hd0) /dev/sdc' >| $MPOINT/boot/grub/device.map cat $MPOINT/boot/grub/device.map grub-install --root-directory=$MPOINT --no-floppy '(hd0)' chroot $MPOINT apt-get install -y grub2 chroot $MPOINT update-grub echo ' # =========================================== ROOT PASWOORD for new system................. # ===========================================' chroot $MPOINT passwd chroot $MPOINT adduser $USER chroot $MPOINT addgroup --system admin chroot $MPOINT adduser $USER admin # echo -e '%admin ALL=(ALL) ALL' > $MPOINT/etc/sudoers echo "%admin ALL=(ALL) ALL" | tee -a $MPOINT/etc/sudoers chroot $MPOINT aptitude clean chroot $MPOINT chown nzion -v -R /home/$USER chroot $MPOINT aptitude clean echo 'export LANG=ru_RU.UTF-8 export LC_CTYPE="ru_RU.UTF-8" export LC_NUMERIC="ru_RU.UTF-8" export LC_TIME="ru_RU.UTF-8" export LC_COLLATE="ru_RU.UTF-8" export LC_MONETARY="ru_RU.UTF-8" export LC_MESSAGES="ru_RU.UTF-8" export LC_PAPER="ru_RU.UTF-8" export LC_NAME="ru_RU.UTF-8" export LC_ADDRESS="ru_RU.UTF-8" export LC_TELEPHONE="ru_RU.UTF-8" export LC_MEASUREMENT="ru_RU.UTF-8" export LC_IDENTIFICATION="ru_RU.UTF-8" exit 0 ' >| $MPOINT/etc/rc.local

umount $MPOINT/dev umount $MPOINT/proc # umount /dev/sdc1

exit

#56909
newzenon написал:
Shlomo пишет:
Флешка выстумает в качестве харддиска?
Да.
newzenon написал:
/dev/sda1 / ext3 defaults 0 0

очень не осмотрительно.

#56912
system-root написал:

очень не осмотрительно.

А варианты? С установкой груба из под чрута? И чтобы потом везде грузилось...

#56927

newzenon, это ф л е ш к а. её нельзя грузить с rw ФС, что предполагает ваш defaults.

#56989

system-root Ну так а предложения какие? И почему нельзя rw?

#57031
newzenon написал:
И почему нельзя rw?

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

newzenon написал:
Ну так а предложения какие?

подготовить систему так, чтоб она не обращалась к корню на запись, а var монтировать в ОЗУ.

#57054

LiveUSB надо делать, а не так

#57063

faithman c лив все понятно, я же не претендую на чт-то особенное, так и сказал - мой способ приготовления wink

system-root написал:
подготовить систему так, чтоб она не обращалась к корню на запись, а var монтировать в ОЗУ.

Над этим надо подумать.

#57065

newzenon, с ext3 или любой журналируемой фс, флешка умрет очень быстро, как написал system-root, максимум, ext2 нужОн. а если есть делание сделать полноценную "лайв-систему", с апдейтами и всем прочим, то нужно делать по другому. Несколько лет назад, был какой то дистр на базе Арча. Уже не помню названия. Так там было все "по взрослому".

#57098

Надо посмотреть в сторону debirf.

Войдите или зарегистрируйтесь, чтобы ответить.