Attached patch stack handles everything on the d-i side, except firmware (see next post). It makes the mini.iso hybrid and updates the manual to document writing it to a USB stick, instead of its prior hand-waving about assembling a netboot USB stick manually. I've tested the mini.iso boots (from USB and as a CD), but nothing else. -- see shy jo
From 2a4f550612a16a1911284a918f32630e275bef31 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Mon, 13 Sep 2010 19:57:09 -0400 Subject: [PATCH 1/5] Run isohybrid on i386 and amd64 miniiso, which allows it to be written directly to and booted from a USB stick. --- installer/build/config/x86.cfg | 2 ++ installer/debian/changelog | 7 +++++++ installer/debian/control | 6 +++--- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/installer/build/config/x86.cfg b/installer/build/config/x86.cfg index e98467d..4a0a005 100644 --- a/installer/build/config/x86.cfg +++ b/installer/build/config/x86.cfg @@ -278,6 +278,8 @@ arch_miniiso: x86_syslinux genisoimage -r -J -b isolinux.bin -c boot.cat \ -no-emul-boot -boot-load-size 4 -boot-info-table \ -o $(TEMP_MINIISO) $(TEMP_CD_TREE) + + isohybrid $(TEMP_MINIISO) # Netboot files .PHONY: arch_netboot_dir diff --git a/installer/debian/changelog b/installer/debian/changelog index d3820df..2e67006 100644 --- a/installer/debian/changelog +++ b/installer/debian/changelog @@ -1,3 +1,10 @@ +debian-installer (20100913) UNRELEASED; urgency=low + + * Run isohybrid on i386 and amd64 miniiso, which allows it to be written + directly to and booted from a USB stick. + + -- Joey Hess <joeyh@debian.org> Mon, 13 Sep 2010 19:56:39 -0400 + debian-installer (20100912) unstable; urgency=low * Skip last translation changes for rescue and debian-installer- diff --git a/installer/debian/control b/installer/debian/control index 886120b..9e9f20d 100644 --- a/installer/debian/control +++ b/installer/debian/control @@ -7,7 +7,7 @@ Standards-Version: 3.8.3 Vcs-Svn: svn://svn.debian.org/d-i/trunk/installer Build-Conflicts: libnewt-pic [mipsel] # NOTE: Do not edit the next line by hand. See comment below. -Build-Depends: debhelper (>= 7.0.0), apt, apt-utils, gnupg, debian-archive-keyring (>= 2006.11.22), dctrl-tools, wget, bc, debiandoc-sgml, xsltproc, docbook-xml, docbook-xsl, libbogl-dev [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], glibc-pic, libslang2-pic (>= 2.0.6-4), libnewt-pic (>= 0.52.2-11.3) [!mipsel], libnewt-dev (>= 0.52.2-11.3) [mipsel], libgcc1 [i386 amd64], cramfsprogs [powerpc ia64 mips mipsel armeb armel], genext2fs (>= 1.3-7.1), e2fsprogs, mklibs (>= 0.1.25), genisoimage [!s390 !s390x], genromfs [sparc sparc64], hfsutils [powerpc], dosfstools [i386 ia64 m68k amd64], cpio, devio [armeb armel], slugimage (>= 0.10+r58-6) [armeb armel], dns323-firmware-tools [armel], uboot-mkimage [armel], syslinux (>= 2:3.63+dfsg-2) [i386 amd64], palo [hppa], elilo [ia64], yaboot [powerpc], aboot (>= 0.9b-2) [alpha], silo [sparc], sparc-utils [sparc sparc64], genisovh [mips], tip22 [mips], colo [mipsel], sibyl [mips mipsel], atari-bootstrap [m68k], vmelilo [m68k], m68k-vme-tftplilo [m68k], amiboot [m68k], emile [m68k], emile-bootblocks [m68k], apex-nslu2 [armeb armel], tofrodos [i386 amd64 kfreebsd-i386 kfreebsd-amd64], mtools [i386 ia64 m68k amd64 kfreebsd-i386 kfreebsd-amd64 hurd-i386], module-init-tools [i386 armeb armel amd64 alpha hppa ia64 m68k mips mipsel powerpc s390 sh4 sparc sparc64], bf-utf-source [!s390 !s390x], mkvmlinuz [powerpc], openssl [armel], win32-loader [i386 amd64 kfreebsd-i386 kfreebsd-amd64 hurd-i386], makefs [kfreebsd-i386 kfreebsd-amd64], grub-pc (>= 1.98~20100101-1) [kfreebsd-i386 kfreebsd-amd64 hurd-i386], xorriso [kfreebsd-i386 kfreebsd-amd64 hurd-i386], debian-ports-archive-keyring [sh4 sparc64] +Build-Depends: debhelper (>= 7.0.0), apt, apt-utils, gnupg, debian-archive-keyring (>= 2006.11.22), dctrl-tools, wget, bc, debiandoc-sgml, xsltproc, docbook-xml, docbook-xsl, libbogl-dev [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], glibc-pic, libslang2-pic (>= 2.0.6-4), libnewt-pic (>= 0.52.2-11.3) [!mipsel], libnewt-dev (>= 0.52.2-11.3) [mipsel], libgcc1 [i386 amd64], cramfsprogs [powerpc ia64 mips mipsel armeb armel], genext2fs (>= 1.3-7.1), e2fsprogs, mklibs (>= 0.1.25), genisoimage [!s390 !s390x], genromfs [sparc sparc64], hfsutils [powerpc], dosfstools [i386 ia64 m68k amd64], cpio, devio [armeb armel], slugimage (>= 0.10+r58-6) [armeb armel], dns323-firmware-tools [armel], uboot-mkimage [armel], syslinux (>= 2:4.02) [i386 amd64], palo [hppa], elilo [ia64], yaboot [powerpc], aboot (>= 0.9b-2) [alpha], silo [sparc], sparc-utils [sparc sparc64], genisovh [mips], tip22 [mips], colo [mipsel], sibyl [mips mipsel], atari-bootstrap [m68k], vmelilo [m68k], m68k-vme-tftplilo [m68k], amiboot [m68k], emile [m68k], emile-bootblocks [m68k], apex-nslu2 [armeb armel], tofrodos [i386 amd64 kfreebsd-i386 kfreebsd-amd64], mtools [i386 ia64 m68k amd64 kfreebsd-i386 kfreebsd-amd64 hurd-i386], module-init-tools [i386 armeb armel amd64 alpha hppa ia64 m68k mips mipsel powerpc s390 sh4 sparc sparc64], bf-utf-source [!s390 !s390x], mkvmlinuz [powerpc], openssl [armel], win32-loader [i386 amd64 kfreebsd-i386 kfreebsd-amd64 hurd-i386], makefs [kfreebsd-i386 kfreebsd-amd64], grub-pc (>= 1.98~20100101-1) [kfreebsd-i386 kfreebsd-amd64 hurd-i386], xorriso [kfreebsd-i386 kfreebsd-amd64 hurd-i386], debian-ports-archive-keyring [sh4 sparc64] # This package has the worst Build-Depends in Debian, so it deserves some # explanation. Note that this comment can also be used to generate a # Build-Depends line, by running the debian/genbuilddeps program. @@ -99,8 +99,8 @@ Build-Depends: debhelper (>= 7.0.0), apt, apt-utils, gnupg, debian-archive-keyri # On many arches boot loaders are copied onto or ran on the boot # images in one way or another. There's a reason our mailing list is # still called debian-boot.. -# - syslinux (>= 2:3.63+dfsg-2) [i386 amd64] -# With menu default64 support. +# - syslinux (>= 2:4.02) [i386 amd64] +# With isohybrid. # - palo [hppa] # - elilo [ia64] # - yaboot [powerpc] -- 1.7.1
From e4f52d1b882d034ed3a8797f7f60654fd804a088 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Mon, 13 Sep 2010 20:23:25 -0400 Subject: [PATCH 2/5] Update USB stick documentation to reflect isohybird mini.iso files, as generated by debian-installer >= 20100913. This is very suboptimal, the USB stuff is a dreadful mess and needs a complete rewrite, but hopefully isohybrid full CD images will obsolte it later. --- manual/debian/changelog | 4 ++ manual/en/install-methods/boot-usb-files.xml | 39 +++++++++++++++++-------- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/manual/debian/changelog b/manual/debian/changelog index f624134..88154a8 100644 --- a/manual/debian/changelog +++ b/manual/debian/changelog @@ -21,6 +21,10 @@ installation-guide (2010xxxx) UNRELEASED; urgency=low * Add the list of architectures supported by the kFreeBSD port. * Restrict "Board Devices" accessibility section to Linux. + [ Joey Hess ] + * Update USB stick documentation to reflect isohybird mini.iso files, + as generated by debian-installer >= 20100913. + -- Samuel Thibault <sthibault@debian.org> Mon, 06 Sep 2010 00:56:02 +0200 installation-guide (20100518) unstable; urgency=low diff --git a/manual/en/install-methods/boot-usb-files.xml b/manual/en/install-methods/boot-usb-files.xml index f8c9481..e2fc9af 100644 --- a/manual/en/install-methods/boot-usb-files.xml +++ b/manual/en/install-methods/boot-usb-files.xml @@ -4,26 +4,39 @@ <sect1 condition="bootable-usb" id="boot-usb-files"> <title>Preparing Files for USB Memory Stick Booting</title> -<para> +<para><para arch="x86"> There are two installation methods possible when booting from USB stick. -The first is to install completely from the network. The second is to -also copy a CD image onto the USB stick and use that as a source for -packages, possibly in combination with a mirror. This second method is -the more common. +The first is to only use the USB stick to boot the installer, and then +install completely from the network. The second is to also copy a CD image +onto the USB stick and use that as a source for packages, possibly in +combination with a mirror. -</para><para> +</para><para arch="x86"> + +To prepare a USB stick that only boots the installer, which then proceeds +to install entirely from the network, you'll need to download the +<filename>mini.iso</filename> image from the <filename>netboot</filename> +directory (at the location mentioned in <xref linkend="where-files"/>), and +write this file directly to the USB stick, overwriting its current contents. + +</para><para arch="x86"> + +For example, when using an existing GNU/Linux system, the +<filename>mini.iso</filename> file can be written to a USB stick as follows: + +<informalexample><screen> +# cat mini.iso > /dev/<replaceable>sdX</replaceable> +</screen></informalexample> -For the first installation method you'll need to download an installer -image from the <filename>netboot</filename> directory (at the location -mentioned in <xref linkend="where-files"/>) and use the -<quote>flexible way</quote> explained below to copy the files to the USB -stick. +This method will work with very small USB sticks, only a few megabytes in +size. </para><para> -Installation images for the second installation method can be found in -the <filename>hd-media</filename> directory and either the <quote>easy +To prepare a USB stick that installs packages from a CD image included +on the stick, use the installer images found in the +<filename>hd-media</filename> directory. Either the <quote>easy way</quote> or the <quote>flexible way</quote> can be used to copy the image to the USB stick. For this installation method you will also need to download a CD image. The installation image and the CD image must be -- 1.7.1
From c526b1d1effdb5a2aa66ba76b11b7bc8176412c2 Mon Sep 17 00:00:00 2001
From: Joey Hess <joey@kitenet.net>
Date: Mon, 13 Sep 2010 20:33:11 -0400
Subject: [PATCH 3/5] isohybrid support
* Always try to mount USB partitions as a fallback, in order
to support isohybrid images booted from USB stick.
* Set cdrom-detect/hybrid in that case for use by apt-setup.
* Removed cdrom-detect/try-usb, as that is now always done.
---
packages/cdrom-detect/debian/cdrom-detect.postinst | 24 ++++++++++----------
.../cdrom-detect/debian/cdrom-detect.templates | 12 +++++-----
packages/cdrom-detect/debian/changelog | 6 +++++
3 files changed, 24 insertions(+), 18 deletions(-)
diff --git a/packages/cdrom-detect/debian/cdrom-detect.postinst b/packages/cdrom-detect/debian/cdrom-detect.postinst
index 25641f6..a8bf6f4 100755
--- a/packages/cdrom-detect/debian/cdrom-detect.postinst
+++ b/packages/cdrom-detect/debian/cdrom-detect.postinst
@@ -95,24 +95,24 @@ mkdir /cdrom 2>/dev/null || true
while true; do
WRONG=
- if db_get cdrom-detect/try-usb && [ "$RET" = true ]; then
- devices="$(list-devices usb-partition)"
- for device in $devices; do
- if try_mount $device $FATFS; then
- break 2
- fi
- if try_mount $device $CDFS; then
- break 2
- fi
- done
- fi
-
devices="$(list-devices cd; list-devices maybe-usb-floppy)"
for device in $devices; do
if try_mount $device $CDFS; then
break 2
fi
done
+
+ devices="$(list-devices usb-partition)"
+ for device in $devices; do
+ if try_mount $device $CDFS; then
+ db_set cdrom-detect/hybrid true
+ break 2
+ fi
+ if try_mount $device $FATFS; then
+ break 2
+ fi
+ done
+
if [ "$WRONG" ]; then
db_input critical cdrom-detect/wrong-cd || [ $? -eq 30 ]
diff --git a/packages/cdrom-detect/debian/cdrom-detect.templates b/packages/cdrom-detect/debian/cdrom-detect.templates
index 157d468..1b20af9 100644
--- a/packages/cdrom-detect/debian/cdrom-detect.templates
+++ b/packages/cdrom-detect/debian/cdrom-detect.templates
@@ -65,6 +65,12 @@ Default: iso9660
Description: for internal use only
File system used on cdrom-detect/cdrom_device.
+Template: cdrom-detect/hybrid
+Type: boolean
+Default: false
+Description: for internal use only
+ Set if the CD appears to be on a USB stick.
+
Template: cdrom-detect/scanning_progress_title
Type: text
# :sl1:
@@ -129,9 +135,3 @@ Type: text
# Item in the main menu to select this package
# :sl2:
_Description: Detect and mount CD-ROM
-
-Template: cdrom-detect/try-usb
-Type: boolean
-Description: for internal use only
- Preseed this to true to try to mount /cdrom from USB partitions.
- Can be used for creating e.g. Debian Live USB sticks.
diff --git a/packages/cdrom-detect/debian/changelog b/packages/cdrom-detect/debian/changelog
index 7bc9daa..0ab1162 100644
--- a/packages/cdrom-detect/debian/changelog
+++ b/packages/cdrom-detect/debian/changelog
@@ -7,6 +7,12 @@ cdrom-detect (1.35) UNRELEASED; urgency=low
* Set cdrom/suite and cdrom/codename when premounted /cdrom found.
Closes: #594344.
+ [ Joey Hess ]
+ * Always try to mount USB partitions as a fallback, in order
+ to support isohybrid images booted from USB stick.
+ * Set cdrom-detect/hybrid in that case for use by apt-setup.
+ * Removed cdrom-detect/try-usb, as that is now always done.
+
-- Samuel Thibault <sthibault@debian.org> Sat, 21 Aug 2010 18:29:58 +0200
cdrom-detect (1.34) unstable; urgency=low
--
1.7.1
From 3bebf2f73d241e35fd67f1f55dc38c262d9c5bf7 Mon Sep 17 00:00:00 2001 From: Joey Hess <joey@kitenet.net> Date: Mon, 13 Sep 2010 20:39:08 -0400 Subject: [PATCH 4/5] remove redundant hd-media test 40cdrom avoids generating /var/lib/install-cd.id for hd-media installs, so 41cdset checking for that file is enough; it doesn't need to also check for /hd-media. --- packages/apt-setup/generators/41cdset | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) diff --git a/packages/apt-setup/generators/41cdset b/packages/apt-setup/generators/41cdset index 6a8e705..af11516 100755 --- a/packages/apt-setup/generators/41cdset +++ b/packages/apt-setup/generators/41cdset @@ -5,8 +5,7 @@ set -e file="$1" -if [ ! -e /cdrom/.disk/cd_type ] || [ -d /hd-media ] || \ - [ ! -e /var/lib/install-cd.id ]; then +if [ ! -e /cdrom/.disk/cd_type ] || [ ! -e /var/lib/install-cd.id ]; then exit 0 fi # multi-arch CDs have cd_type 'non_complete' -- 1.7.1
From c9f1637bf3ceb5d60d71205d6769167a595220a4 Mon Sep 17 00:00:00 2001
From: Joey Hess <joey@kitenet.net>
Date: Mon, 13 Sep 2010 20:41:30 -0400
Subject: [PATCH 5/5] When cdrom-detect/hybrid is true, the CD is not mountable by apt, so behave the same as for a hd-media install.
---
packages/apt-setup/debian/changelog | 8 ++++++++
packages/apt-setup/generators/40cdrom | 13 +++++++++----
2 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/packages/apt-setup/debian/changelog b/packages/apt-setup/debian/changelog
index a3f93c9..fd3fa5a 100644
--- a/packages/apt-setup/debian/changelog
+++ b/packages/apt-setup/debian/changelog
@@ -1,3 +1,11 @@
+apt-setup (1:0.47) UNRELEASED; urgency=low
+
+ * When cdrom-detect/hybrid is true, the CD is not mountable by apt,
+ so behave the same as for a hd-media install.
+ * Needs cdrom-detect 1.35.
+
+ -- Joey Hess <joeyh@debian.org> Mon, 13 Sep 2010 20:40:08 -0400
+
apt-setup (1:0.46) unstable; urgency=low
[ Updated translations ]
diff --git a/packages/apt-setup/generators/40cdrom b/packages/apt-setup/generators/40cdrom
index b26cbe4..af63342 100755
--- a/packages/apt-setup/generators/40cdrom
+++ b/packages/apt-setup/generators/40cdrom
@@ -9,6 +9,12 @@ if [ ! -e /cdrom/.disk/base_installable ]; then
exit 0
fi
+cd_mountable=1
+db_get cdrom-detect/hybrid || true
+if [ "$RET" = true ] || [ -d /hd-media ]; then
+ cd_mountable=""
+fi
+
fs=iso9660
if db_get cdrom-detect/cdrom_fs && [ "$RET" ]; then
fs="$RET"
@@ -19,7 +25,7 @@ if [ "$fs" != iso9660 ]; then
fi
remount_cd() {
- if [ "$ROOT" ] && [ ! -d /hd-media ]; then
+ if [ "$ROOT" ] && [ "$cd_mountable" ]; then
db_get cdrom-detect/cdrom_device
$logoutput mount -t "$fs" -o ro,exec $RET /cdrom || true
fi
@@ -60,8 +66,7 @@ if [ "$ROOT" ]; then
chroot=chroot
# Allow apt-cdrom to manage mounting/unmounting CDs in /target
- # (except for hd-media installs)
- if [ ! -d /hd-media ]; then
+ if [ "$cd_mountable" ]; then
rm -f $ROOT/etc/apt/apt.conf.d/00NoMountCDROM
# Also removes the bind-mount in /target
@@ -77,7 +82,7 @@ if $logoutput $chroot $ROOT apt-cdrom add \
</dev/null; then
cat $ROOT$tmp >> $file
- if [ "$ROOT" ] && [ ! -d /hd-media ]; then
+ if [ "$ROOT" ] && [ "$cd_mountable" ]; then
save_label
fi
else
--
1.7.1
Attachment:
signature.asc
Description: Digital signature