~~META: date created = 2016-05-29 18:27 ~~ ====== Create custom debian live usb-stick (jessie) ====== [[create-custom-debian-live-usb-stick-stretch|Updated Version for Debian Stretch]] ===== Install necessary packages on the build system ===== root@host:~# apt-get install debootstrap syslinux isolinux squashfs-tools genisoimage memtest86+ rsync dosfstools Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: mtools syslinux-common Suggested packages: wodim cdrkit-doc hwtools memtester kernel-patch-badram memtest86 floppyd openssh-server The following NEW packages will be installed: debootstrap genisoimage memtest86+ mtools rsync squashfs-tools syslinux syslinux-common 0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded. Need to get 2,579 kB of archives. After this operation, 9,360 kB of additional disk space will be used. Do you want to continue? [Y/n] [ ... ] ===== Create directory structure & install base image ===== root@host:~# mkdir /tmp/shtf-stick && cd /tmp/shtf-stick root@host:/tmp/shtf-stick# debootstrap --arch=i386 --variant=minbase jessie chroot http://http.at.debian.org/debian/ [ ... ] ===== Perform basic configuration ===== root@host:/tmp/shtf-stick# mount -o bind /dev ./chroot/dev && cp /etc/resolv.conf ./chroot/etc/resolv.conf root@host:/tmp/shtf-stick# chroot ./chroot root@host:/# mount none -t proc /proc && \ mount none -t sysfs /sys && \ mount none -t devpts /dev/pts && \ export HOME=/root && \ export LC_ALL=C && \ apt-get update && \ apt-get install dialog dbus --yes --force-yes && \ dbus-uuidgen > /var/lib/dbus/machine-id Ign http://ftp.at.debian.org jessie InRelease Hit http://ftp.at.debian.org jessie Release.gpg Hit http://ftp.at.debian.org jessie Release Get:1 http://ftp.at.debian.org jessie/main i386 Packages [6768 kB] Get:2 http://ftp.at.debian.org jessie/main Translation-en [4582 kB] Fetched 11.4 MB in 10s (1108 kB/s) Reading package lists... Done Reading package lists... Done Building dependency tree... Done The following extra packages will be installed: libcap-ng0 libdbus-1-3 libexpat1 Suggested packages: dbus-x11 The following NEW packages will be installed: dbus dialog libcap-ng0 libdbus-1-3 libexpat1 0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded. Need to get 861 kB of archives. After this operation, 2781 kB of additional disk space will be used. [ ... ] root@host:/# echo shtf > /etc/hostname root@host:/# passwd root Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully ===== Install additional packages ===== root@host:/# apt-get install --no-install-recommends --yes \ linux-image-3.16.0-4-686-pae live-boot \ network-manager net-tools wireless-tools wpagui tcpdump wget openssh-client \ blackbox xserver-xorg-core xserver-xorg xinit xterm \ pciutils usbutils gparted ntfs-3g hfsprogs rsync dosfstools syslinux partclone vim pv \ iceweasel chntpw lvm2 mdadm mc htop keepassx gdisk [ ... ] Setting up keyboard-configuration (1.123) ... Package configuration -------------------------------------------------------------------------------------------------------------------------------------------- +----------------Configuring keyboard-configuration-------------------+ ¦ Please select the layout matching the keyboard for this machine. ¦ ¦ ¦ ¦ Keyboard layout: ¦ ¦ +-----------------------------------------------------------------+ ¦ ¦ ¦English (US) ¦ ¦ ¦ ¦English (US) - Cherokee ¦ ¦ ¦ ¦English (US) - English (Colemak) ¦ ¦ ¦ ¦English (US) - English (Dvorak alternative international no dead ¦ ¦ ¦ ¦English (US) - English (Dvorak) ¦ ¦ ¦ ¦English (US) - English (Dvorak, international with dead keys) ¦ ¦ ¦ ¦English (US) - English (Macintosh) ¦ ¦ ¦ ¦English (US) - English (US, alternative international) ¦ ¦ ¦ ¦English (US) - English (US, international with dead keys) ¦ ¦ ¦ ¦English (US) - English (US, with euro on 5) ¦ ¦ ¦ ¦English (US) - English (Workman) ¦ ¦ ¦ ¦English (US) - English (Workman, international with dead keys) ¦ ¦ ¦ ¦English (US) - English (classic Dvorak) ¦ ¦ ¦ ¦English (US) - English (international AltGr dead keys) ¦ ¦ ¦ ¦English (US) - English (left handed Dvorak) ¦ ¦ ¦ ¦English (US) - English (programmer Dvorak) ¦ ¦ ¦ ¦English (US) - English (right handed Dvorak) ¦ ¦ ¦ ¦English (US) - English (the divide/multiply keys toggle the layo ¦ ¦ ¦ ¦English (US) - Russian (US, phonetic) ¦ ¦ ¦ ¦English (US) - Serbo-Croatian (US) ¦ ¦ ¦ ¦Other ¦ ¦ ¦ +-----------------------------------------------------------------+ ¦ +---------------------------------------------------------------------¦ ¦ < OK > ¦ +---------------------------------------------------------------------+ [ ... ] ===== Install duplicity (just to get the dependencies resolved) ===== root@host:/# echo nameserver $NAMESERVERIP > /etc/resolv.conf root@host:/# echo "deb http://http.at.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list root@host:/# apt-get update root@host:/# apt-get -t jessie-backports install duplicity python-boto ===== Install most recent version of duplicity from debian testing ===== Check path of packages! root@host:/# cd /tmp root@host:/tmp# wget http://ftp.at.debian.org/debian/pool/main/p/python-lockfile/python-lockfile_0.12.2-2_all.deb root@host:/tmp# wget http://ftp.at.debian.org/debian/pool/main/d/duplicity/duplicity_0.7.12-1_i386.deb root@host:/tmp# dpkg -i python-lockfile_0.12.2-1_all.deb root@host:/tmp# dpkg -i duplicity_0.7.06-2_i386.deb root@host:/tmp# cd .. ===== Cleanup & leave chroot environment ===== root@host:/# rm -f /var/lib/dbus/machine-id && \ apt-get clean && \ rm -rf /tmp/* && \ rm /etc/resolv.conf && \ umount -lf /proc && \ umount -lf /sys && \ umount -lf /dev/pts root@host:/# exit exit root@host:/tmp/shtf-stick# umount -lf chroot/dev root@host:/tmp/shtf-stick# rm chroot/root/.bash_history ===== Create filesystem & boot config ===== root@host:/tmp/shtf-stick# mkdir -p image/{live,isolinux} root@host:/tmp/shtf-stick# mksquashfs chroot image/live/filesystem.squashfs -e boot Parallel mksquashfs: Using 2 processors Creating 4.0 filesystem on image/live/filesystem.squashfs, block size 131072. [=========================================================================================================================\] 20760/20760 100% Exportable Squashfs 4.0 filesystem, gzip compressed, data block size 131072 compressed data, compressed metadata, compressed fragments, compressed xattrs duplicates are removed Filesystem size 270068.48 Kbytes (263.74 Mbytes) 39.38% of uncompressed filesystem size (685752.56 Kbytes) Inode table size 233267 bytes (227.80 Kbytes) 31.56% of uncompressed inode table size (739230 bytes) Directory table size 204617 bytes (199.82 Kbytes) 43.37% of uncompressed directory table size (471758 bytes) Xattr table size 37 bytes (0.04 Kbytes) 92.50% of uncompressed xattr table size (40 bytes) Number of duplicate files found 904 Number of inodes 21913 Number of files 17237 Number of fragments 1777 Number of symbolic links 2135 Number of device nodes 37 Number of fifo nodes 0 Number of socket nodes 3 Number of directories 2501 Number of ids (unique uids + gids) 13 Number of uids 2 root (0) messagebus (104) Number of gids 12 root (0) tty (5) kmem (15) disk (6) shadow (42) crontab (107) utmp (43) netdev (108) messagebus (109) staff (50) adm (4) mail (8) root@host:/tmp/shtf-stick# root@host:/tmp/shtf-stick# cp chroot/boot/vmlinuz-3.16.0-4-686-pae image/live/vmlinuz1 root@host:/tmp/shtf-stick# cp chroot/boot/initrd.img-3.16.0-4-686-pae image/live/initrd1 root@host:/tmp/shtf-stick# cat > image/isolinux/isolinux.cfg UI menu.c32 prompt 0 menu title The Shit Has Hit The Fan timeout 300 label Debian Live 3.16.0-4-686-pae menu label ^Debian Live 3.16.0-4-686-pae menu default kernel /live/vmlinuz1 append initrd=/live/initrd1 boot=live label memtest86+ menu label ^Memory Failure Detection (memtest86+) kernel /live/memtest ^D root@host:/tmp/shtf-stick# ===== Create CD image ===== root@host:/tmp/shtf-stick# cp /usr/lib/ISOLINUX/isolinux.bin image/isolinux/ && \ cp /usr/lib/syslinux/modules/bios/menu.c32 image/isolinux/ && \ cp /usr/lib/syslinux/modules/bios/libmenu.c32 image/isolinux/ && \ cp /usr/lib/syslinux/modules/bios/libutil.c32 image/isolinux/ && \ cp /usr/lib/syslinux/modules/bios/ldlinux.c32 image/isolinux/ && \ cp /usr/share/misc/pci.ids image/isolinux/ && \ cp /boot/memtest86+.bin image/live/memtest root@host:/tmp/shtf-stick# cd image && \ genisoimage -rational-rock -volid "SHTF" -cache-inodes -joliet -full-iso9660-filenames -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -output ../debian-shtf.iso . && \ cd .. ===== Prepare USB stick ===== root@host:/tmp/shtf-stick# dd if=/dev/zero of=/dev/sdc bs=1k count=100 100+0 records in 100+0 records out 102400 bytes (102 kB) copied, 1.5086 s, 67.9 kB/s root@host:/tmp/shtf-stick# fdisk /dev/sdc Welcome to fdisk (util-linux 2.25.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0x374a220b. Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): First sector (2048-2005431, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-2005431, default 2005431): Created a new partition 1 of type 'Linux' and of size 978.2 MiB. Command (m for help): a Selected partition 1 The bootable flag on partition 1 is enabled now. Command (m for help): t Selected partition 1 Hex code (type L to list all codes): b If you have created or modified any DOS 6.x partitions, please see the fdisk documentation for additional information. Changed type of partition 'Linux' to 'W95 FAT32'. Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks. root@host:/tmp/shtf-stick# mkdosfs -F 32 -I /dev/sdc1 mkfs.fat 3.0.27 (2014-11-12) root@host:/tmp/shtf-stick# ===== Create USB Stick ===== root@host:/tmp/shtf-stick# syslinux -i /dev/sdc1 root@host:/tmp/shtf-stick# dd if=/usr/lib/syslinux/mbr/mbr.bin of=/dev/sdc conv=notrunc bs=440 count=1 1+0 records in 1+0 records out 440 bytes (440 B) copied, 0.0564548 s, 7.8 kB/s root@host:/tmp/shtf-stick# mkdir /mnt/usb && \ mount /dev/sdc1 /mnt/usb root@host:/tmp/shtf-stick# cp /usr/lib/syslinux/modules/bios/libutil.c32 /mnt/usb/ && \ cp /usr/lib/syslinux/modules/bios/libmenu.c32 /mnt/usb/ && \ cp /usr/lib/syslinux/modules/bios/menu.c32 /mnt/usb/ && \ cp /boot/memtest86+.bin /mnt/usb/memtest && \ cp image/isolinux/isolinux.cfg /mnt/usb/syslinux.cfg && \ cp /usr/share/misc/pci.ids /mnt/usb/ && \ rsync -rv image/live /mnt/usb/ sending incremental file list live/ live/filesystem.squashfs live/initrd1 live/vmlinuz1 sent 308,553,889 bytes received 77 bytes 88,158,276.00 bytes/sec total size is 308,478,319 speedup is 1.00 root@host:/tmp/shtf-stick# umount /mnt/usb/ root@host:/tmp/shtf-stick# Source: [[http://willhaley.com/blog/create-a-custom-debian-jessie-live-environment-ubuntu-16-xenial/]] {{tag>kb linux shtf usb-stick}}