I just installed Debian 4.0r3 on a Linksys NSLU2 (arm-based tiny NAS box), installing the root filesystem onto a 256MB USB flash thumb drive. I ran into an annoying Debian installer issue where the installer appears to try to use the device for the entire thumb drive (rather than a partition), but mkfs.ext3 blocks the process by asking for confirmation.
The Debian installer I'm using is from: < http://www.slug-firmware.net/d-dls.php>. This is the same as the official installer, but include proprietary microcode for the ethernet hardware, which is necessary since I'm installing over the network. My setup: NSLU2 with 256MB thumb flash drive drive on USB port 2 and 1TB hard drive on USB port 1. The hard drive has 512MB of swap set up as /dev/sda1, and the rest as a partition I'll use for user data on /dev/sda2. I want to install Debian's root on the flash drive (/dev/sdb) to avoid accessing the disk too much, so it can spin down when idle. My procedure: - Flash Debian 4.0r3 firmware from http://www.slug-firmware.net/d-dls.php - Boot slug. - ssh in as installer. - Proceed to partitioning step. - Because the NSLU2 has too little RAM, we need to create a swap partition early. In another terminal, ssh in, go to shell, run 'mkswap /dev/sda1' and 'swapon /dev/sda1'. - Choose manual partitioning in installer. - Set up /dev/sdb1 as ext3, mounted on '/'. Oddly, it doesn't show the partitions on /dev/sda (SCSI1): ┌────────────────────────┤ [!!] Partition disks ├─────────────────────────┐ │ │ │ This is an overview of your currently configured partitions and mount │ │ points. Select a partition to modify its settings (file system, mount │ │ point, etc.), a free space to create partitions, or a device to │ │ initialise its partition table. │ │ │ │ Guided partitioning │ │ Help on partitioning │ │ │ │ /dev/mtdblock0 - 262.1 kB Unknown │ │ /dev/mtdblock1 - 131.1 kB Unknown │ │ /dev/mtdblock2 - 131.1 kB Unknown │ │ /dev/mtdblock3 - 1.4 MB Unknown │ │ /dev/mtdblock4 - 6.3 MB Unknown │ │ /dev/mtdblock5 - 131.1 kB Unknown │ │ SCSI1 (0,0,0) (sda) - 1.0 TB PI-202US SATA/USB20 Drive │ │ SCSI2 (0,0,0) (sdb) - 259.5 MB LEXAR JUMPDRIVE PHOTO │ │ > #1 259.5 MB F ext3 / │ │ │ │ Undo changes to partitions │ │ Finish partitioning and write changes to disk │ │ │ │ <Go Back> │ │ │ └─────────────────────────────────────────────────────────────────────────┘ - Continue. It hangs on this screen: ┌────────────────────────┤ Partitions formatting ├────────────────────────┐ │ │ │ 33% │ │ │ │ Creating ext3 file system for / in partition #1 of SCSI2 (0,0,0) │ │ (sdb)... │ └─────────────────────────────────────────────────────────────────────────┘ Running ps in a shell reveals: 11321 root 564 S udpkg --configure --force-configure partman-base 11322 root 492 S /bin/sh /var/lib/dpkg/info/partman-base.postinst conf 11323 root 680 S /bin/sh /bin/partman 11599 root 876 S parted_server 16361 root 672 S /bin/sh /lib/partman/commit.d/50format_ext3 16480 root 484 S log-output -t partman --pass-stdout mkfs.ext3 /dev/sc 16481 root 556 S mkfs.ext3 /dev/scsi/host1/bus0/target0/lun0/disc If I manually run the mkfs.ext3 command, I get: /var/log # mkfs.ext3 /dev/scsi/host1/bus0/target0/lun0/disc mke2fs 1.40-WIP (14-Nov-2006) /dev/scsi/host1/bus0/target0/lun0/disc is entire device, not just one partition! Proceed anyway? (y,n) n Looks like partman is invoking mkfs for the whole device and hanging while mkfs asks for confirmation! Here's my crude workaround: / # mkfs.ext3 /dev/sdb mke2fs 1.40-WIP (14-Nov-2006) /dev/sdb is entire device, not just one partition! Proceed anyway? (y,n) y Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 63488 inodes, 253440 blocks 12672 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=67371008 31 block groups 8192 blocks per group, 8192 fragments per group 2048 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729, 204801, 221185 Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 33 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. / # cd /sbin /sbin # mv mkfs.ext3 mkfs.ext3.real /sbin # echo '#!/bin/sh' > mkfs.ext3 /sbin # chmod +x mkfs.ext3 Then I kill the hung mkfs.ext3 process with 'kill 16481'. The partitioner fails, and I go back through the process again. This time it succeeds (since mkfs.ext3 is a no-op). It turns out a basic install of Debian (without the "standard system" task) just barely fits: ~ # df -h Filesystem Size Used Available Use% Mounted on tmpfs 14.6M 388.0k 14.3M 3% /dev tmpfs 14.6M 388.0k 14.3M 3% /dev tmpfs 14.6M 388.0k 14.3M 3% /.dev /dev/scsi/host1/bus0/target0/lun0/disc 239.7M 213.6M 13.7M 94% /target It's much better after running apt-get clean: sluggy:/var/cache# apt-get clean sluggy:/var/cache# df -h Filesystem Size Used Avail Use% Mounted on /dev/sdb 240M 168M 61M 74% / tmpfs 15M 0 15M 0% /lib/init/rw udev 10M 32K 10M 1% /dev tmpfs 15M 0 15M 0% /dev/shm I'm not sure what the best solution is to the installer problem. My preferred solution would be to have the partitioner actually use /dev/sdb1 rather than /dev/sdb. However, if there's some good reason to set up single-partition flash disks using the raw device rather than a partition, it should indicate that in the UI more clearly and invoke mkfs.ext3 in a way that it doesn't hang. Seth