Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: current snapshot cannot mount / from CD



> > boot device cd0
> > root on cd0a dumps on cd0b
> > vfs_mountroot: can't open root device
> > cannot mount root, error = 6
> > root device (default cd0a):
> 
> Oh, I've seen this before.  What happens if you tell it cd0d?

I'm afraid dev/scsipi/cd.c and kern/subr_disk_mbr.c are messy...

---
static void
cdgetdefaultlabel(struct cd_softc *cd, struct cd_formatted_toc *toc,
    struct disklabel *lp)
{
 :
        lp->d_partitions[0].p_offset = 0;
        lp->d_partitions[0].p_size = lp->d_secperunit;
        lp->d_partitions[0].p_cdsession = lastsession;
        lp->d_partitions[0].p_fstype = FS_ISO9660;

        lp->d_partitions[RAW_PART].p_offset = 0;
        lp->d_partitions[RAW_PART].p_size = lp->d_secperunit;
        lp->d_partitions[RAW_PART].p_fstype = FS_UDF;
---
static int
scan_iso_vrs(mbr_args_t *a)
{
 :
        /* add iso9660 partition if found */
        if (is_iso9660 >= 0) {
                /* set 'a' partition to iso9660 */
                a->lp->d_partitions[0].p_offset = 0;
                a->lp->d_partitions[0].p_size   = a->lp->d_secperunit;
                a->lp->d_partitions[0].p_cdsession = is_iso9660;
                a->lp->d_partitions[0].p_fstype = FS_ISO9660;
        } else {
                a->lp->d_partitions[0].p_size   = 0;
                a->lp->d_partitions[0].p_fstype = FS_UNUSED;
        }

        /* add udf partition if found */
        if (is_udf >= 0) {
                /* set the RAW partition to UDF for CD/USB stick etc */
                a->lp->d_partitions[RAW_PART].p_fstype = FS_UDF;
                /* UDF doesn't care about the cd session specified here */
        }

---


Home | Main Index | Thread Index | Old Index