LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (https://www.linuxquestions.org/questions/slackware-14/)
-   -   critical Slackware USB flash drive boot installer issue (https://www.linuxquestions.org/questions/slackware-14/critical-slackware-usb-flash-drive-boot-installer-issue-4175471276/)

dchmelik 07-29-2013 12:31 AM

critical Slackware USB flash drive boot installer issue
 
Why does the Slackware USB flash drive boot installer creation process involve making a damn Windows partition to put the installer on?!

I made a new USB flash drive installer, and when the BIOS of the system I tried it on did not detect it but started starting Windows, I took the flash drive out, but Windows must have tried to access the flash drive's Windows partition--then it was ruined!

Slackware is the greatest system for development purposes (even has more than any default BSD install, AFAIK, though perhaps BSD is still more stable) and that is great, but one would not expect such a system to use a Windows partition on its installer, and I have a serious problem with that!

elesmod 07-29-2013 03:46 AM

The Slackware USB flash drive creator makes a Windows partition because BIOSes can't boot from file systems such as e.g. ext4.

If your BIOS didn't boot from the flash drive, then either:
1) you've set the booting process wrong in the BIOS;
2) the flash drive didn't prepare correctly and is not bootable;
3) the BIOS doesn't have an option to boot from USB flash drives (usually in older computers).

Quote:

Originally Posted by dchmelik (Post 4998667)
Windows must have tried to access the flash drive's Windows partition--then it was ruined!

What do you mean it's ruined? The USB stick is ruined? How?

You could tell us how you prepared your Slackware install flash drive.

guanx 07-29-2013 04:14 AM

It's trivial to use another filesystem type that syslinux supports for the usb drive installer. I use ext2, for instance. This is no critical issue.

Are you sure you have your usb drive first in the boot device list, have syslinux installed on it, and the boot partition active?

TobiSGD 07-29-2013 04:15 AM

Quote:

Originally Posted by elesmod (Post 4998756)
The Slackware USB flash drive creator makes a Windows partition because BIOSes can't boot from file systems such as e.g. ext4.

BIOSes can't boot from any filesystem (UEFI firmware can read FAT partitions, BIOSes don't), they rely on finding executable code in the MBR of the medium you want to boot from.

To the original question, I never had to create a Windows filesystem when using the USB installer, all I ever do is writing the usbboot.img to the USB device using cat or dd. I also can't see any instructions to create a Windows partition in the USB README file?
Please elaborate where you did get those instructions and what exactly have you done, including why you think that the Windows installation has ruined your USB device.

dchmelik 07-29-2013 04:21 AM

Quote:

Originally Posted by TobiSGD (Post 4998766)
Please elaborate where you did get those instructions and what exactly have you done, including why you think that the Windows installation has ruined your USB device.

I recall when doing an fdisk on a USB flash drive set up by the instructions on Slackwiki's 'Install Slackware Using A USB Flash Drive', that its partition was listed as a hidden Windows type (those instructions use dd, so erase everything from the drive by overwriting it all with its own partition table and data). Ok, so the instructions are probably unofficial, but I am wondering not only what was the writer thinking, but why the software they used that is a part of Slackware made this ISO file that when dd was used made a Windows partition on the USB flash drive. I did not install Windows--I was trying to install Slackware on a system that currently has Windows on it, but since the Slackware installer process for a USB flash drive makes a Windows partition on the flash drive, Windows started reading it, without me remembering or noticing that, then I took it out, and can no longer detect the drive when it is plugged into any computer. Windows of course does not read from any type of ext partition, and it would have been ok to remove the drive if it had used an ext partition... but apparently it does not--otherwise it would not be ruined now (i.e., Windows 'mounted' it in the first few seconds of its boot process, and probably did something more that it should not have been doing, i.e. not just reading from it).

To answer another question asked above: the system I was trying this on does not even boot from USB--I selected something I thought might have been the USB flash drive after I plugged it in before turning on the computer on (since some BIOSes detect stuff plugged in, or have options that were updated but not documented) but it was the hard drive. This was not a question about the simple process of installing anything, which I have decades of experience with.

The flash drive was prepared correctly, because I have done this before, and the commands finished fine.

Coreboot is an example of a BIOS that can be compiled to boot from ext, if Coreboot even does not normally have an option or module to do that by default, but AFAIK it is as TobiSGD says--BIOS looks at a MBR to boot: if you have ever done fdisk on a new USB flash drive, or partitioned one like a new one, they have a little space at the beginning before the filesystem starts. I do not recall how it was with floppy discs; they might have worked similarly, though I do not recall if I ever did fdisk on one.

brianL 07-29-2013 04:43 AM

Try using the usbimg2disk script:
http://slackware.mirrors.tds.net/pub...xe-installers/

dchmelik 07-29-2013 04:48 AM

Quote:

Originally Posted by brianL (Post 4998782)

I looked in that script, and it makes a 32-bit FAT partition, just like the instructions I used. I think one can make whatever partition type one wants on a USB flash drive--I recall doing so recently (and then using the drive)--so apparently my criticism may be correct!

TobiSGD 07-29-2013 05:53 AM

I think that the labels from fdisk regarding the filesystems used are simply wrong. While fdisk reports this on my USB device with the installer copied to it
Code:

Disk /dev/sdd: 16.0 GB, 16039018496 bytes
64 heads, 32 sectors/track, 15296 cylinders, total 31326208 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x20ac7dda

This doesn't look like a partition table
Probably you selected the wrong device.

  Device Boot      Start        End      Blocks  Id  System
/dev/sdd1  ?  3224498923  3657370039  216435558+  7  HPFS/NTFS/exFAT
/dev/sdd2  ?  3272020941  5225480974  976730017  16  Hidden FAT16
/dev/sdd3  ?          0          0          0  6f  Unknown
/dev/sdd4        50200576  974536369  462167897    0  Empty

Partition table entries are not in disk order

I get this from parted
Code:

Model: Corsair VoyagerGT (scsi)
Disk /dev/sdd: 16.0GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags:

Number  Start  End    Size    File system  Flags
 1      0.00B  16.0GB  16.0GB  fat16

(which is by the way impossible, since FAT16 does not support partitions of that size) and lsblk does not report any partition on that device, which relates to the dmesg output, that also does not see any partition
Code:

[431975.070298] usb 6-4: new high-speed USB device number 4 using ehci-pci
[431975.188162] usb 6-4: New USB device found, idVendor=1b1c, idProduct=1a90
[431975.188174] usb 6-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[431975.188181] usb 6-4: Product: VoyagerGT
[431975.188187] usb 6-4: Manufacturer: Corsair
[431975.188192] usb 6-4: SerialNumber: AA04012700009218
[431975.189514] usb-storage 6-4:1.0: USB Mass Storage device detected
[431975.189677] scsi14 : usb-storage 6-4:1.0
[431976.987523] scsi 14:0:0:0: Direct-Access    Corsair  VoyagerGT        1100 PQ: 0 ANSI: 0 CCS
[431976.990410] sd 14:0:0:0: [sdd] 31326208 512-byte logical blocks: (16.0 GB/14.9 GiB)
[431976.991421] sd 14:0:0:0: [sdd] Write Protect is off
[431976.991433] sd 14:0:0:0: [sdd] Mode Sense: 43 00 00 00
[431976.993299] sd 14:0:0:0: [sdd] No Caching mode page present
[431976.993309] sd 14:0:0:0: [sdd] Assuming drive cache: write through
[431976.998778] sd 14:0:0:0: [sdd] No Caching mode page present
[431976.998788] sd 14:0:0:0: [sdd] Assuming drive cache: write through
[431977.001168]  sdd:
[431977.003527] sd 14:0:0:0: [sdd] No Caching mode page present
[431977.003536] sd 14:0:0:0: [sdd] Assuming drive cache: write through
[431977.004284] sd 14:0:0:0: [sdd] Attached SCSI removable disk

But in any way, even if Windows altered something on that partition that should not alter in any way the partition table, so that the device can not be seen anymore may be a coincidence. What is the output of dmesg regarding this device?

dchmelik 07-29-2013 06:09 AM

Quote:

Originally Posted by TobiSGD (Post 4998815)
I think that the labels from fdisk regarding the filesystems used are simply wrong.

Ok; and how did you make that installer? It looks like you did it differently than me, but the fact is, the script mentioned above makes a FAT partition. The fdisk output did not necessarily look wrong, but the parted output did. I would not trust fdisk for anything above 2 TB, though one needs something like parted for that, and if it is giving wrong data, that is unfortunate.

Quote:

But in any way, even if Windows altered something on that partition that should not alter in any way the partition table, so that the device can not be seen anymore may be a coincidence. What is the output of dmesg regarding this device?
After I unplugged the USB flash drive from the Windows machine and into my Slackware one, there was some bizarre dmesg I am not sure I had ever seen before. I must have rebooted to try a pxe installation, and now there is simply no dmesg output about the USB flash drive, and no lights flashing on it. If one takes out such a drive when it is being written to--which apparently Windows must have done for some idiotic reason--that is what one is often left with (or soon after, after being only partly readable): a drive damaged to the extent it is not even detected.

TobiSGD 07-29-2013 06:27 AM

Quote:

Originally Posted by dchmelik (Post 4998818)
Ok; and how did you make that installer?

I did it as the README stated, using dd to write the image to the USB device.

Quote:

If one takes out such a drive when it is being written to--which apparently Windows must have done for some idiotic reason--that is what one is often left with (or soon after, after being only partly readable): a drive damaged to the extent it is not even detected.
I extensively work with USB devices on Windows machines and this never happened to me. Therefore I mentioned that this may be just coincidence and the device was dying anyways.

dchmelik 07-29-2013 06:28 AM

Quote:

Originally Posted by TobiSGD (Post 4998826)
I extensively work with USB devices on Windows machines and this never happened to me. Therefore I mentioned that this may be just coincidence and the device was dying anyways.

It was a completely new Lexar (Micron) drive. The problem with pulling out USB flash drives when they are not finished being written to (even if their lights are not flashing) has nothing to do with whether the partition table is changed--it has to do with hardware. You get results similar to if you had pulled a floppy disc out when it was being written to, and like cancelling an optical disc writing session in the middle of it.

brianL 07-29-2013 06:38 AM

According to the rough notes I made at the time:
I had the Slackware tree i ~/temp, then ran (as root):
Code:

usbimg2disk -f -s /home/brian/temp/Slackware-14.0 -o /dev/sdb
/dev/sdb was a 8GB SanDisk Blade. Installation on an Asus eeepc 1001HA was successful.

guanx 07-29-2013 08:21 AM

Quote:

Originally Posted by dchmelik (Post 4998786)
so apparently my criticism may be correct!

Apparently not, as I have already made clear in my previous post.

dchmelik 07-29-2013 05:30 PM

Quote:

Originally Posted by guanx (Post 4998865)
Apparently not, as I have already made clear in my previous post.

Read the official Slackware script BrianL mentioned, and take a look at the partitions TobiSDG mentioned were created on his USB flash drive by following the README.

guanx 07-30-2013 03:04 AM

Quote:

Originally Posted by dchmelik (Post 4999199)
Read the official Slackware script BrianL mentioned, and take a look at the partitions TobiSDG mentioned were created on his USB flash drive by following the README.

The README only tells you something can be done in some way. It does not say other ways are forbidden.

dchmelik 07-30-2013 04:36 AM

Quote:

Originally Posted by guanx (Post 4999416)
The README only tells you something can be done in some way. It does not say other ways are forbidden.

Ok, let us get this straight. I am talking not only about the method I used, described at the wiki, which I think makes a FAT filesystem, but the official Slackware script in the directory BrianL mentioned, which you did not read; I will quote the script's explanation of itself, starting on line 45.

Code:

  echo "# Purpose #1: to use the content of Slackware's usbboot.img and"
  echo "#  transform a standard USB thumb drive with a single vfat partition"
  echo "#  into a bootable medium containing the Slackware Linux installer."
  echo "# "
  echo "# Purpose #2: to use the contents of a Slackware directory tree"
  echo "#  and transform a standard USB thumb drive with"
  echo "#  a single vfat partition and 2GB of free space into"
  echo "#  a self-contained USB installation medium for Slackware Linux."

I am not criticizing your alternative way of doing things, which of course is a way you can do things. I am criticizing the two methods I mentioned above, one of which is official, and one of which is unofficial, and both of which people use. Your method of doing things does not change the fact that these two methods exist, and that one is official, and people use them, and I am not talking about your way of doing things, except to say it should be the way things are done.

chemfire 07-30-2013 04:55 AM

I am not sure any the criticism is really justified. As far as partitions go its the norm to include a partition table on larger USB devices. As to the type of partition that is little more than a couple of magic numbers at some specific byte offsets.

They have no effect on what you put in the partition, they might be viewed as simply informational, as far you are concerned. Some things like BIOS,UEFI and other software are looking for specific values, its easiest to just use them, and there is no real down side.

As far as the VFAT filesystem goes, there again its a very common choice for removable USB media. The installer works fine using that filesystem as a source AND you can plug that same media into a Windows, Mac, other Linux box, and just about anything else with a USB port and read it as well; which may be helpful if you need to review one of the docs. As others have mentioned this is also the filesystem type you can count on UEFI being able to boot.

A DOS or Windows partition type, with a VFAT filesystem is the way this should be done.

guanx 07-30-2013 04:58 AM

The word "purpose" means what it intends to do, and not how things should be done. Did I understand it wrong? Maybe I lost my English skills during my travaling worldwide. Now I go on to another traval. Bye!

elesmod 07-30-2013 06:11 AM

Quote:

Originally Posted by TobiSGD (Post 4998766)
BIOSes can't boot from any filesystem, they rely on finding executable code in the MBR of the medium you want to boot from.

/facepalm. I'm sorry for speaking nonsense. Thanks for correcting me, TobiSDG.

dchmelik 11-16-2013 03:46 AM

Another reason I am critical of the FAT32 usage is because there is a process described to make a boot flash drive but keep the files you had already there, which can lead to unexpected inadequacies. For example, say one makes some scripts to do things after upgrading, or even to do the upgrade process (and then hopefully check it worked), or even that one will copy somewhere like /usr/local/bin, or something like ~/sh after installing. If you put the scripts on FAT32, they now have DOS newlines and will no longer run properly even when copied back onto EXT4. My point is, a POSIX-based OS installer should primarily run on a filesystem of its own, and only describe other partition usage to help people switch away from some other system. One does not need FAT32 on a USB flash drive by default, any more than for on your hard drive to boot from Loadlin or whatever may be used now.

gnashley 11-16-2013 04:21 AM

It uses a fat partition because that is the *most bootable* thing there is.
"finding executable code in the MBR" -should be "finding executable code in the device". Why? Because a CD does not have an MBR -but gets identified as being executable code.

When the BIOS sees a device it tries to figure out if there is executable code there -executable code of the proper type(architecture). Different BIOS's use different methods to make this determination and they are all based on heuristics. As mentioned, not every bootable device has an MBR or partition table. Floppies have no MBR, they have executable code beginning at the very beginning of the device. CD's have 32k which is *empty* right at the start of the device. Hard disks of course have 446 bytes of executable code at the start, followed by 64 bytes of partition table. A Zip disk also has an MBR(446+64 bytes), but for it to be found 'bootable' the partition table must have the first partition as *partition 4* and it should be marked 'bootable'. Flash devices can either have an MBR or be formatted as a single whole-disk drive, or they may look like a floppy -executable code with no partition table.

BIOS's which can boot from USB devices distinguish between one or more drive types -floppy, hard-disk or zip drive. Incidentally, after the initial empty 32K of a CD, the executable boot code appears to be a 'large floppy', so a USB CD drive can boot also.

It is even possible to make a drive look like more than one type of device. The 'bootfat' project produces images for booting from USB devices and can make a single device look like a floppy, a ZIP-drive and a hard disk -all at the same time. This makes such an MBR the most bootable thing there is. Then, there is the isohybrid tool which is part of syslinux, which makes an iso image also look like a hard disk. This means you can burn it to a CD and it looks like a bootable CD, or you can 'dd' the same image to a hard-disk or flash drive and it appears to be a partitioned device. There have been efforts to something similar with bootable images using grub.

Something that looks like a floppy on a FAT filesystem is the most universally-bootable thing there is. This is why the syslinux bootloader is the most successful at booting many types of machines.

If the OP is willing to accept a system/CD/whatever being less bootable *than possible*, then using another alternative will still produce the desired effect -but less often.

Didier Spaier 11-16-2013 04:31 AM

Well, I just put in an ISO image what I need using cdrecord, then run isohybrid on it, et voilą ;) No need to compute image size nor worry about making a filesystem, the image is usable to make an usb installer, with or without packages. You can do that with dd on Linux of course, and "rufus" works well on Windows.

For the records, this is explained in /isolinux/README.TXT. All you have to do is choose the files and directories you want to exclude with -m or -x, and possibly customize the content using option -graft-points of cdrecord.

Just a warning: preferably use software versions shipped in 14.1, I had isohybrid failing on some big ISO images in 14.0.

dchmelik 11-16-2013 04:46 AM

Quote:

Originally Posted by gnashley (Post 5065545)
It uses a fat partition because that is the *most bootable* thing there is. [...]

People already argued against that above. I do not know if a BIOS could USB boot before UEFI did, but if I recall, there was various software that would either enable that or boot from something else, then enable USB, relatively regardless of what OS was on, when few/no BIOSes booted filesystems. There have been many types of systems over the decades--many still seriously used--that booted from removable media using all sorts of different OSes and filesystems, so people should not just treat Microsoft/obsolete stuff as standard. Some people still use non-UEFI mode, but despite someone's arguement above 'BIOSes do not boot filesystems', what you say may be becoming correct, but there is still the problem if one uses FAT32 for extra stuff.

In fact, the modern Unix (BSD, etc.) filesystems, and EXT4, are usable on more types of systems than FAT32 is. So, I do not care what new BIOSes do--Unix and EXT4 should become standard in popularity, besides versatility (as it is). There is also Coreboot, and all one needs to do to prevent issues like I described is use that and/or make a boot partition in a USB flash drive, which should be a standard option, all documented as the first or second suggestion in a table of contents (such as in README_USB.TXT, though perhaps there should be a Howto), until modern Unix and GNU/Linux become standard.

UPDATE: actually, now I agree with a post above that the problem is not critical. It was probably my UEFI BIOS that mounted the flash drive, and BIOS/UEFI/whatever booting things seems to be the way of things now, which I had not known except in the case of Coreboot, which I had never been able to try. Of course, if it searched for media's filesystems to mount, the same thing would happen. So, it is more of a modern BIOS problem, than a Slackware problem. I recall almost a decade or so ago, the same thing would have happened if I put in a 5.25" or 3.5" disc and took it out when the BIOS was doing I/O to it. So, my whole post was rather ridiculous, except later mentioning the other problems one could have booting from filesystems not designed for the OS, which is course still not critical.


All times are GMT -5. The time now is 01:44 PM.