You are not logged in.

#1 2008-11-07 04:16:17

carbonjiao
Member
Registered: 2008-11-07
Posts: 20
Website

Make archlive which can boot from harddisk

Anyone can told me how to make archlive which can boot from harddisk?

The one made from present rev of larch just can boot from USB and CD/DVD....

Last edited by carbonjiao (2008-11-10 03:35:31)


http://archlive.googlecode.com
http://archlive-pkg.googlecode.com
Live system and build scripts base on Arch GNU/Linux
基于Arch GNU/Linux的live系统及制作脚本

Offline

#2 2008-11-07 04:27:31

lilsirecho
Veteran
Registered: 2003-10-24
Posts: 5,000

Re: Make archlive which can boot from harddisk

Check out Faunos for the install to hdd.


My ailment? Lackatesla!
Tesla fails smog test..no gas!
Favorite song...Tesla On My Mind....

Offline

#3 2008-11-07 04:50:01

carbonjiao
Member
Registered: 2008-11-07
Posts: 20
Website

Re: Make archlive which can boot from harddisk

Thanks for your reply.
I will try it.


http://archlive.googlecode.com
http://archlive-pkg.googlecode.com
Live system and build scripts base on Arch GNU/Linux
基于Arch GNU/Linux的live系统及制作脚本

Offline

#4 2008-11-07 13:10:50

gradgrind
Member
From: Germany
Registered: 2005-10-06
Posts: 921

Re: Make archlive which can boot from harddisk

It's quite easy to install larch to hard disk - if you know how the boot process works ...

If I have time I'll try to make it a bit easier!

Offline

#5 2008-11-08 03:48:50

carbonjiao
Member
Registered: 2008-11-07
Posts: 20
Website

Re: Make archlive which can boot from harddisk

I just want :
1. Download iso image to my hard disk;
2. Extract the file "archlive.img" and "vmlinuz" to C:\
3. Add below lines to menu.lst
     title Boot ArchLive Lxde Desktop
     root (hd0,0)
     kernel /vmlinuz26 lang=en ramdisk_size=60% aufs nonfree=no
     initrd /archlive.img
4. Through the grldr and menu.lst to boot the archlive...


My hard disk is SATA,  the erros occured when I boot from this ...
   the errors looks like " No filesystem could mount root, tried: Kernel panic -not syncing: VFS: Unable to mount rootfs on unknown block (254,7)

I am trying your script to re-creat iso image, maybe it can boot like this method...

Last edited by carbonjiao (2008-11-08 05:27:19)


http://archlive.googlecode.com
http://archlive-pkg.googlecode.com
Live system and build scripts base on Arch GNU/Linux
基于Arch GNU/Linux的live系统及制作脚本

Offline

#6 2008-11-08 05:33:29

carbonjiao
Member
Registered: 2008-11-07
Posts: 20
Website

Re: Make archlive which can boot from harddisk

Re-created iso image, and boot it, erro occured again:
" Could not load /lib/modules/2.6.27-ARCH/modules.dep, no such file or directory, Fail to mount /dev/sr[0-9]

Use unetbootin-windows-282.exe in Windows write boot files to C:\, boot again, erros looks like:
"ERROR: cannot find booted cdrom device, cannot continue    Kernel panic - not syncing: "

HOOKS    bootall mybe need add some function...

bootall content:

run_hook ()
{
    # external drives may need to settle
    msg ":: Waiting for usb devices to settle..."
    /sbin/udevadm trigger --subsystem-match=usb
    /sbin/udevadm settle
    sleep 5

    msg ":: Scanning for boot cdrom device..."
   
    /bin/mkdir -p /bootmnt
    /bin/mkdir -p /live
    live="/live"
    bootmnt="/bootmnt"
    found=0
   
    if [ "${break}" = "y" ]; then
        echo ":: Break requested, type 'exit' to resume operation"
        echo "   NOTE: klibc contains no 'ls' binary, use 'echo *' instead"
        PS1="ramfs$ " /bin/sh -i
    fi
   
if [ "x${bootiso}" != "x" ]; then
     for usb in /dev/sd[a-z][0-9]; do
        if mount -t vfat "${usb}" ${bootmnt} >/dev/null 2>&1 ||\
            mount -t ext2 "${usb}" ${bootmnt} >/dev/null 2>&1; then
            if [ -e "${bootmnt}/${bootiso}" ]; then
                found=1
                msg "${usb}"
                break
            fi
        else
            echo "Failed to mount ${usb}"
        fi
        [ ${found} -eq 0 ] && umount ${bootmnt} >/dev/null 2>&1
    done
elif [ "${bootusb}" = "y" ]; then
    for usb in /dev/sd[a-z][0-9]; do
        if mount -t vfat "${usb}" ${bootmnt} >/dev/null 2>&1 ||\
            mount -t ext2 "${usb}" ${bootmnt} >/dev/null 2>&1; then
    if [ "x${from}" != "x" ]; then
            if [ -e "${bootmnt}/${from}/archlive.sqfs" ]; then
                found=1
                msg "${usb}"
        /bin/mount -o bind "${bootmnt}/${from}" "${live}"
                break
            fi
    else
         if [ -e "${bootmnt}/archlive.sqfs" ]; then
                found=1
                msg "${usb}"
                break
            fi
    fi
        else
            echo "Failed to mount ${usb}"
        fi
        [ ${found} -eq 0 ] && umount ${bootmnt} >/dev/null 2>&1
    done
else
    /bin/modprobe -q isofs >/dev/null 2>&1
    for cdrom in /dev/sr[0-9]; do
        if mount -r -t iso9660 "${cdrom}" ${bootmnt} >/dev/null 2>&1; then
        if [ -e "${bootmnt}/archlive.sqfs" ]; then
                found=1
                msg "${cdrom}"
                break
            fi
        else
            echo "Failed to mount ${cdrom}"
        fi
        [ ${found} -eq 0 ] && umount ${bootmnt} >/dev/null 2>&1
    done
fi
   

    if [ ${found} -eq 0 ]; then
    if [ "${bootusb}" = "y" ]; then
        echo "ERROR: cannot find booted usb device, cannot continue..."
    else
        echo "ERROR: cannot find booted cdrom device, cannot continue..."
    fi
        exit 1
    else
        export BOOT_MOUNT="${bootmnt}"
    fi

}

# vim:ft=sh:ts=4:sw=4:et:


http://archlive.googlecode.com
http://archlive-pkg.googlecode.com
Live system and build scripts base on Arch GNU/Linux
基于Arch GNU/Linux的live系统及制作脚本

Offline

#7 2008-11-08 08:24:23

carbonjiao
Member
Registered: 2008-11-07
Posts: 20
Website

Re: Make archlive which can boot from harddisk

change the HOOKS as "base udev pata scsi sata usb fw bootall archiso filesystems", can recognize my SATA driver, but still cannot find mntiso...
bootall script need to update..........


http://archlive.googlecode.com
http://archlive-pkg.googlecode.com
Live system and build scripts base on Arch GNU/Linux
基于Arch GNU/Linux的live系统及制作脚本

Offline

#8 2008-11-09 07:14:29

carbonjiao
Member
Registered: 2008-11-07
Posts: 20
Website

Re: Make archlive which can boot from harddisk

I updated two copies, but all have some errors...

Someone can help to to de-bugs?  Thanks!

Maybe these script can boot from Hard disk (replace the old bootall)

First one, errors as "line 98: syntax error near unexpected token `done'"

test_live_data_dir ()
{
    /bin/mount -r -t iso9660 "$1" $2 >/dev/null 2>/dev/null || \
    /bin/mount -r -t vfat -o noatime,nodiratime "$1" $2 >/dev/null 2>/dev/null || \
    /bin/mount -r -t ntfs-3g -o noatime,nodiratime "$1" $2 >/dev/null 2>/dev/null || \
    /bin/mount -r -t ext2 -o noatime,nodiratime "$1" $2 >/dev/null 2>/dev/null
    if [ $? -eq 0 ]; then
        if [ -f "$2/${from}/carbon" ]; then
            LDEV="$1"
            msg_ " ... found at $1"
            found=1
            return 0
        else
            /bin/umount $2 2>/dev/null
            msg_ " ... $1 mounted, but no 'carbon' found"
        fi
    else
        msg_ "  ... not $1"
    fi
    return 1
}


run_hook ()
{
    # external drives may need to settle
    msg ":: Waiting for usb devices to settle..."
    /sbin/udevadm trigger --subsystem-match=usb
    /sbin/udevadm settle
    sleep 5

    msg_ ":: Scanning for boot device..."
    /bin/mkdir -p /bootmnt
    /bin/mkdir -p /live
    live="/live"
    bootmnt="/bootmnt"
    found=0      
    
    if [ "${break}" = "y" ]; then
        echo ":: Break requested, type 'exit' to resume operation"
        echo "   NOTE: klibc contains no 'ls' binary, use 'echo *' instead"
        PS1="ramfs$ " /bin/sh -i
    fi
        
    # look for livecd data directory, first try ${root}
    LDEV="${root}"
    if [ "x${LDEV}" != "x" ]; then
        /bin/mount -r -t iso9660 "${LDEV}" "${bootmnt}" >/dev/null 2>/dev/null || \
        /bin/mount -r -t vfat -o noatime,nodiratime "${LDEV}" "${bootmnt}" >/dev/null 2>/dev/null || \
        /bin/mount -r -t ntfs-3g -o noatime,nodiratime "${LDEV}" "${bootmnt}" >/dev/null 2>/dev/null || \
        /bin/mount -r -t ext2 -o noatime,nodiratime "${LDEV}" "${bootmnt}" >/dev/null 2>/dev/null
        if [ $? -eq 0 ]; then
            if [ -d "${bootmnt}/${from}/carbon" ]; then
                msg_ ":: Archlive system at ${LDEV}"
                /bin/mount -o bind "${bootmnt}/${from}" "${live}"
                found=1
                break
            else
                /bin/umount "${bootmnt}" 2>/dev/null
                echo "!! No Archlive system at ${LDEV}"
                LDEV=""
            fi
        else
            echo "!! Couldn't mount ${LDEV}"
            LDEV=""
        fi
    fi

    # then try cdroms
    if [ "x${LDEV}" = "x" ]; then
        msg_ ":: Looking for boot device"
        cdroms=$( /bin/cat /proc/sys/dev/cdrom/info | { while read a b c; do
                if [ "${a}" = "drive" -a "${b}" = "name:" ]; then
                    echo "${c}"
                    break
                fi
            done
        } )
        for i in ${cdroms}; do
            test_live_data_dir "/dev/${i}" "${bootmnt}"
            if [ $? -eq 0 ]; then break; fi
        done
    fi

    # test USB devices (and disks) repeatedly until timed out
    if [ "x${LDEV}" = "x" ]; then
        msg_ ":: Searching for usb (and disk) devices .."
        for i in 1 2 3 4 5; do
            msg_ " :wait ${i} :::"
            /bin/sleep ${i}
            for d in /dev/sd[a-z][0-9]*; do
                test_live_data_dir "${d}" "${bootmnt}"
                if [ $? -eq 0 ]; then break 2; fi
            done
        done
    fi
    export BOOT_MOUNT="${bootmnt}"
done
}

Second one, errors as " line 63: syntax error near unexpected token `elif' "

run_hook ()
{
    # external drives may need to settle
    msg ":: Waiting for usb devices to settle..."
    /sbin/udevadm trigger --subsystem-match=usb
    /sbin/udevadm settle
    sleep 5

    msg ":: Scanning for boot cdrom device..."
    
    /bin/mkdir -p /bootmnt
    /bin/mkdir -p /live
    live="/live"
    bootmnt="/bootmnt"
    found=0
    
    if [ "${break}" = "y" ]; then
        echo ":: Break requested, type 'exit' to resume operation"
        echo "   NOTE: klibc contains no 'ls' binary, use 'echo *' instead"
        PS1="ramfs$ " /bin/sh -i
    fi
    
    # look for livecd data directory, first try ${root}
    LDEV="${root}"
    if [ "x${LDEV}" != "x" ]; then
        /bin/mount -r -t iso9660 "${LDEV}" "${bootmnt}" >/dev/null 2>/dev/null || \
        /bin/mount -r -t vfat -o noatime,nodiratime "${LDEV}" "${bootmnt}" >/dev/null 2>/dev/null || \
        /bin/mount -r -t ntfs-3g -o noatime,nodiratime "${LDEV}" "${bootmnt}" >/dev/null 2>/dev/null || \
        /bin/mount -r -t ext2 -o noatime,nodiratime "${LDEV}" "${bootmnt}" >/dev/null 2>/dev/null
        if [ $? -eq 0 ]; then
            if [ -d "${bootmnt}/${from}/carbon" ]; then
                msg_ ":: Archlive system at ${LDEV}"
                /bin/mount -o bind "${bootmnt}/${from}" "${live}"
                found=1
                break
            else
                /bin/umount "${bootmnt}" 2>/dev/null
                echo "!! No Archlive system at ${LDEV}"
                LDEV=""
            fi
        else
            echo "!! Couldn't mount ${LDEV}"
            LDEV=""
        fi
    fi
    
    if [ "x${bootiso}" != "x" ]; then
       for usb in /dev/sd[a-z][0-9]; do
           if mount -t vfat "${usb}" ${bootmnt} >/dev/null 2>&1 ||\
               mount -t ntfs-3g "${usb}" ${bootmnt} >/dev/null 2>&1 ||\
               mount -t ext2 "${usb}" ${bootmnt} >/dev/null 2>&1; then
                    if [ -e "${bootmnt}/${bootiso}" ]; then
                        found=1
                        msg "${usb}"
                        break
                    fi
                    else
                    echo "Failed to mount ${usb}"
            fi
           [ ${found} -eq 0 ] && umount ${bootmnt} >/dev/null 2>&1
        done
        
    elif [ "${bootusb}" = "y" ]; then 
        for usb in /dev/sd[a-z][0-9]; do
           if mount -t vfat "${usb}" ${bootmnt} >/dev/null 2>&1 ||\
              mount -t ntfs-3g "${usb}" ${bootmnt} >/dev/null 2>&1 ||\
              mount -t ext2 "${usb}" ${bootmnt} >/dev/null 2>&1; then
                if [ "x${from}" != "x" ]; then
                    if [ -e "${bootmnt}/${from}/carbon" ]; then
                        found=1
                        msg "${usb}"
                        /bin/mount -o bind "${bootmnt}/${from}" "${live}"
                        break
                    fi
                    else
                    if [ -e "${bootmnt}/carbon" ]; then
                        found=1
                        msg "${usb}"
                        break
                       fi
                fi
            else
                echo "Failed to mount ${usb}"
            fi
         [ ${found} -eq 0 ] && umount ${bootmnt} >/dev/null 2>&1    
     done
    else
        /bin/modprobe -q isofs >/dev/null 2>&1
        for cdrom in /dev/sr[0-9]; do
            if mount -r -t iso9660 "${cdrom}" ${bootmnt} >/dev/null 2>&1; then
                if [ -e "${bootmnt}/${from}/carbon" ]; then
                    found=1
                    msg "${cdrom}"
                    break
                fi
            else
                echo "Failed to mount ${cdrom}"
            fi
            [ ${found} -eq 0 ] && umount ${bootmnt} >/dev/null 2>&1
        done
    fi
    export BOOT_MOUNT="${bootmnt}"
}

http://archlive.googlecode.com
http://archlive-pkg.googlecode.com
Live system and build scripts base on Arch GNU/Linux
基于Arch GNU/Linux的live系统及制作脚本

Offline

#9 2008-11-09 08:38:31

godane
Member
From: NH, USA
Registered: 2008-02-03
Posts: 241
Website

Re: Make archlive which can boot from harddisk

@carbonjiao
You need boot option 'bootusb' in order for you to boot my archlive.

     title Boot ArchLive Lxde Desktop
     root (hd0,0)
     kernel /vmlinuz26 lang=en ramdisk_size=60% aufs nonfree=no bootusb
     initrd /archlive.img

You can also put it on in a subfolder so you can have keep your hard drive neat.

     title Boot ArchLive Lxde Desktop
     root (hd0,0)
     kernel /vmlinuz26 lang=en ramdisk_size=60% aufs nonfree=no bootusb from=archlive
     initrd /archlive.img

The above will find the first hard drive with archlive folder and use it.

You can also save changes over everything in my archlive distro.

     title Boot ArchLive Lxde Desktop
     root (hd0,0)
     kernel /vmlinuz26 lang=en ramdisk_size=60% aufs nonfree=no bootusb from=archlive changes
     initrd /archlive.img

This will save all your files in archlive/changes since 'from' boot option equals archlive. i just hope you have a ext2 format hard drive or this will be a bad idea.

PS This is how i boot my archlive system on my hard drive. wink

Also you will not be able to use ntfs-3g mount option in initramfs cause its not there.


I'm working on a live cds based on Archlinux. http://godane.wordpress.com/

Offline

#10 2008-11-09 12:47:13

carbonjiao
Member
Registered: 2008-11-07
Posts: 20
Website

Re: Make archlive which can boot from harddisk

godane wrote:

@carbonjiao
You need boot option 'bootusb' in order for you to boot my archlive.

     title Boot ArchLive Lxde Desktop
     root (hd0,0)
     kernel /vmlinuz26 lang=en ramdisk_size=60% aufs nonfree=no bootusb
     initrd /archlive.img

You can also put it on in a subfolder so you can have keep your hard drive neat.

     title Boot ArchLive Lxde Desktop
     root (hd0,0)
     kernel /vmlinuz26 lang=en ramdisk_size=60% aufs nonfree=no bootusb from=archlive
     initrd /archlive.img

The above will find the first hard drive with archlive folder and use it.

You can also save changes over everything in my archlive distro.

     title Boot ArchLive Lxde Desktop
     root (hd0,0)
     kernel /vmlinuz26 lang=en ramdisk_size=60% aufs nonfree=no bootusb from=archlive changes
     initrd /archlive.img

This will save all your files in archlive/changes since 'from' boot option equals archlive. i just hope you have a ext2 format hard drive or this will be a bad idea.

PS This is how i boot my archlive system on my hard drive. wink

Also you will not be able to use ntfs-3g mount option in initramfs cause its not there.

Really works, Thanks!
Thank your hard work....


http://archlive.googlecode.com
http://archlive-pkg.googlecode.com
Live system and build scripts base on Arch GNU/Linux
基于Arch GNU/Linux的live系统及制作脚本

Offline

#11 2008-11-09 13:52:36

carbonjiao
Member
Registered: 2008-11-07
Posts: 20
Website

Re: Make archlive which can boot from harddisk

Dear Godane,

How can I build my own ISO by your script with other locales (such as Chinese, or Japanese...)?  I put special locale-gen in overlay, while it doesn't make sense...

Last edited by carbonjiao (2008-11-10 03:59:23)


http://archlive.googlecode.com
http://archlive-pkg.googlecode.com
Live system and build scripts base on Arch GNU/Linux
基于Arch GNU/Linux的live系统及制作脚本

Offline

#12 2008-11-09 16:39:25

godane
Member
From: NH, USA
Registered: 2008-02-03
Posts: 241
Website

Re: Make archlive which can boot from harddisk

You have to remove the usr/share/locale in configs/arch-mini/config file. Otherwise there will be no locale files.

Also you have to install the mkarchiso i have in archiso folder.

make install

Now in the configs/arch-mini folder. You will have to run this command:

mkarchiso -f -b syslinux all .working arch-mini.iso

I just hope you have changes in your grub menu or you will not be able to do this since the packages are save in /var/cache/pacman/pkg.

mkarchiso -f -b syslinux -c .packages all .working arch-mini.iso

The above will should help you build your livecd even on a livecd. tongue

You can get my archiso-live scripts here;
http://github.com/godane/archiso-live/tree/master

Have a good day.


I'm working on a live cds based on Archlinux. http://godane.wordpress.com/

Offline

#13 2008-11-10 03:34:54

carbonjiao
Member
Registered: 2008-11-07
Posts: 20
Website

Re: Make archlive which can boot from harddisk

Hi, godane,

Thank you very much!
I will do as your instructions, and will write here if there are some questions...

Have a nice day!


http://archlive.googlecode.com
http://archlive-pkg.googlecode.com
Live system and build scripts base on Arch GNU/Linux
基于Arch GNU/Linux的live系统及制作脚本

Offline

#14 2008-11-12 03:54:10

carbonjiao
Member
Registered: 2008-11-07
Posts: 20
Website

Re: Make archlive which can boot from harddisk

Hi, Godane,

If I want patch the kernel, add the support of UTF-8 in kernel, the only way is I re-creat a new kernel in Archlinux and replace the one on the finished ISO image?

A Chinese programmer write a patch to kernel to add support of UTF-8 in kernel, you can download it from below address.
http://zdbr.net.cn/download/utf8-kernel … .patch.bz2

Added support of Chinese simp, Chinese Trad.  Janpanese, Korean...

http://www.linuxsir.org/bbs/attachment. … 1158033414


http://archlive.googlecode.com
http://archlive-pkg.googlecode.com
Live system and build scripts base on Arch GNU/Linux
基于Arch GNU/Linux的live系统及制作脚本

Offline

Board footer

Powered by FluxBB