Ads 468x60px

понедельник, 11 марта 2013 г.

Создание live-usb с персональным комплектом программ.

Цель: ознакомление коллег с linux.
Используемые средства:
1. Исходный Live-CD: elementaryos luna-beta-1.
2. Загрузчик для usb: syslinux.
Выбор исходного live-CD.
Для демонстрации возможностей систем на базе GNU/Linux, хотелось выбрать симпатичный, с большим набором драйверов и знакомый в обращении дистрибутив, что нибудь базирующееся на Debian. Изначально был выбран xubuntu(xfce4 - мой DE в повседневной деятельности), однако с его использованием возникли проблемы, зацикливания окна входа в систему. После чего на глаза попался достаточно симпатичный и рабочий дистрибутив elementaryos, который успешно запустился и подхватил оборудование ASUS ZENBOOK UX32VD.
Обновления пакетов.
Файловая структура live-CD расположена в filesystem.squashfs. Поэтому для изменения пакетов нам необходимо распаковать данный файл на жесткий диск, а затем обновить программное обеспечение:
- устанавливаем пакет для работы с squashfs:
$ sudo aptitude install squashfs-tools
- монтируем скаченный iso образ (директория /media/cdrom должна быть создана):
$ sudo mount -o loop iso/elementaryos-beta1-i386.20121114.iso /media/cdrom/
- распаковываем в директорию usb-live(создается автоматически):
$ sudo unsquashfs -d usb-live /media/cdrom/casper/filesystem.squashfs
Теперь подготавливаем систему для chroot:
- монтируем proc,sys,dev
$ sudo mount --bind /proc/ usb-live/proc/
$ sudo mount --bind /sys/ usb-live/sys/
$ sudo mount --bind /dev/ usb-live/dev/
- копируем файл описания серверов DNS:
$ sudo cp -L /etc/resolv.conf usb-live/etc/resolv.conf
Выполняем chroot для обновления пакетов:
$ sudo chroot usb-live/
- устанавливаем переменную для locale:
# export LC_ALL="C"
- при работе с ubuntu в chroot окружении может выскакивать следующая ошибка:"start: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused" для ее исправления необходимо выполнить следующее:
# dpkg-divert --local --rename --add /sbin/initctl
# ln -s /bin/true /sbin/initctl
Все готово обновляемся:
# apt-get update
# apt-get dist-upgrade
# apt-get autoremove
Если есть необходимость ставим дополнительное ПО.
Восстанавливаем исходную версию /sbin/initctl
# rm /sbin/initctl
# dpkg-divert --local --rename --remove /sbin/initctl
Возвращаемся в основную систему
# exit
Отсоединяем proc,sys,dev
$ sudo umount usb-live/proc/
$ sudo umount usb-live/dev/
С sys у меня возникла ошибка:
umount: /home/user/usb-live/sys: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
Однако поиски процесса, занявшего/home/user/usb-live/sys по средством lsof(8) or fuser(1), плодов не принесли, поэтому третий каталог, отключал с ключом -l:
$ sudo umount -l usb-live/sys/
Создаем обновленную версию filesystem.squashfs
$ sudo mksquashfs usb-live/ filesystem.squashfs
Подготовка usb flash.
Syslinux работает только с fat32, поэтому проверяем, что тип раздела W95 FAT32:
$ sudo fdisk -l /dev/sdd
в ответ должны получить примерно следующее:
   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1   *           1        1023     7674515    c  W95 FAT32 (LBA)
Если System не соответствует W95 FAT32, необходимо изменить с помощью того же fdisk.
Форматируем раздел в FAT32:
$ sudo mkfs.vfat /dev/sdd1
Устанавливаем наш загрузчик:
$ sudo dd if=/usr/lib/syslinux/mbr.bin of=/dev/sdd
Монтируем usb для переноса данных
$ sudo mkdir /media/usb
$ sudo mount /dev/sdd1 /media/usb/
Настраиваем загрузчик:
$ sudo mkdir /media/usb/syslinux/
$ sudo cp /media/cdrom/isolinux/vesamenu.c32 /media/usb/syslinux/
Создаем файл меню /media/usb/syslinux/syslinux.cfg
default vesamenu.c32
prompt 0
timeout 100

menu title Elementary Live CD
menu color title 1;37;44 #c0ffffff #00000000 std

label live
  menu label Live System
  kernel /casper/vmlinuz
  append  boot=casper initrd=/casper/initrd.img quiet splash --

label live
  menu label Live Persistent
  kernel /casper/vmlinuz
  append  boot=casper persistent initrd=/casper/initrd.img quiet splash --
Копируем файлы самой Live системы:
$ sudo mkdir /media/usb/casper/
$ sudo cp usb-live/boot/initrd.img-3.2.0-38-generic-pae \
/media/usb/casper/initrd.img
$ sudo cp usb-live/boot/vmlinuz-3.2.0-38-generic-pae \
/media/usb/casper/vmlinuz
$ sudo cp filesystem.squashfs /media/usb/casper/
Создаем файл для работы в режиме сохранения данных:
$ sudo dd if=/dev/zero of=/media/usb/casper-rw bs=1M count=512
$ sudo mkfs.ext3 /media/usb/casper-rw
Последний штрих запись syslinux на раздел:
$ sudo umount /media/usb/
$ sudo syslinux -d /syslinux/ -i /dev/sdd1
Все готово можно пробовать.
Очень помогла в написании данная статья:live-usb

Комментариев нет: