Instalacja Windowsa za pomocą GRUB [Debian]

Witam,

posiadam laptopa, który niestety ma założone hasło na BIOSa (którego ja oczywiście nie znam), a bateria BIOS jest przylutowana do płyty głównej.

 

Chciałbym zainstalować na nim Windows 8, ale niestety nie mam jak zbootować instalatora z płyty, bo BIOS nie posiada możliwości uruchomienia Boot Menu przy uruchamianiu laptopa. Wpadłem więc na pomysł, że podłączę dysk z tego laptopa, do innego komputera, zainstaluję tam Debiana i po ponownym zamontowaniu dysku do laptopa - za pomocą GRUBa zbootuję sobie instalator z napędu.

 

Moje “prace” zatrzymały się po instalacji Debiana, ponieważ nie wiem jak mogę teraz zbootować płytę z napędu DVD za pomocą GRUBa. Próbuję na różne sposoby znalezione w sieci, ale żaden nie chce działać.

Zrobiłem sobie już nawet obraz płyty (.iso) i nagrałem go na drugą płytkę, ponieważ z tego co się dowiedziałem - za pomocą GRUBa nie można bootować niczego bezpośrednio (on chyba potrafi bootować tylko z .iso).

 

Proszę o jakieś “przykłady” co wkleić do /etc/grub.d/40_custom .

 

Z góry dziękuję za pomoc, bo męczę się z tym laptopem już kilka dni,

Pozdrawiam.

Wykonaj obraz ISO płyty z Win8, umieść go w głównym drzewie katalogów, czyli / i dostosuj wpis w Grubie wg. tego:

https://forums.hak5.org/index.php?/topic/14110-how-to-add-xp-vista-windows-install-iso-to-grub2-multiboot/ .

 

Oczywiście z poziomu Debiana przygotuj conajmniej jedną partycję podstawową, choć nie ręczę czego i w jakich rozmiarach wymaga Windows 8.

Niestety okazało się, że napęd nie działał :frowning:  (za pewne to przez to nie mogłem w żaden sposób z niego zbootować) - mógłbyś mi powiedzieć jak zbootować z dysku np. z  /windows.iso lub z pendrive?

 

Bo np.

menuentry “Instalator Windows 8” {

Zajrzyj jeszcze tu:

http://askubuntu.com/questions/24903/how-to-boot-from-an-iso-file-in-grub2

Nie mam jak sprawdzić - nie wiem czy działa.

Witam,

niestety - nie sprawdziłem, ale mam inny sposób. Rozpiszę tutaj wszystko, bo może ktoś będzie szukał.

 

Problem dotyczył laptopa Asus Aspire 5315, który niestety ma chyba fabrycznie ustawione hasło na BIOS, a bateria BIOS jest przylutowana do płyty głównej. Niestety nie da się tutaj jednorazowo zbootować np. z napędu czy pendrive, bo nie posiada on/ma wyłączoną funkcję boot menu (uruchamianą najczęściej klawiszami F6-F12).

 

Próbowałem wieloma sposobami zresetować BIOS (poza zwarciem baterii, bo nie chciałem aż tak ryzykować) i się nie udawało, więc piszę co należy zrobić:

  1. Po zainstalowaniu Debiana i jego pierwszym uruchomieniu, przekładamy dysk z powrotem do laptopa.

  2. Załatwiamy sobie pendrive conajmniej 4 GB (w przypadku systemów Windows Vista, lub nowszych), lub z 1-2 GB na Windows XP.

 

I tu uwaga - z tego co wiem - nie wszystkie pendrive nadają się do instalacji Windowsa, bo kiedyś np. na Windows XP dostawałem blue screena…

Ja tym razem korzystałem z pendrive Kingstona 4 GB.

 

  1. Pobieramy program Universal USB Installer (jest on dostępny na dobreprogramy.pl) i za jego pomocą tworzymy pendrive instalacyjny.

  2. Przygotowany pendrive podłączamy bezpośrednio do portu USB (nie przez huby, przedłużki itp).

  3. Uruchamiamy komputer i gdy ukaże się nam GRUB - klikamy C.

  4. Teraz wpisujemy kolejno i po każdej linijce klikamy ENTER:

chainloader +1

boot

 

UWAGA!

Jeśli wpisujesz dokładnie tak jak napisałem i otrzymujesz błąd po wpisaniu chainloader +1 - wpisz:

set root=’(hd1,0)’

chainloader +1

boot

 

Jeśli i to nie pomoże to:

set root=’(hd1,2)’

chainloader +1

boot

 

  1. I czekamy aż naszym oczom ukaże się instalator Windowsa  :smiley:

 

Po zainstalowaniu systemu - GRUB nie będzie już dla nas widoczny. Jeśli jednak będziecie chcieli go przywrócić to zapraszam do wujka Google  :slight_smile:

 

 

Mam nadzieję, że mój “poradnik” się komuś przyda, bo sam kilka dni siedziałem nad tym laptopem.

 

Tagi: Jak zmienić system Asus Aspire 5315, jak zmienić system Asus Aspire 5315, zmiana systemu Asus Aspire 5315, usuwanie hasła bios Asus Aspire 5315

Skoro przekładałeś dysk do innego komputera, to nie mogłeś od razu zainstalować Windowsa? Po co te zabawy z instalacją Debiana? To co opisałeś, to wykonanie rozruchu z innej partycji przez Grub. Co do uruchamiania obrazów ISO przez Grub, to z tego co mi wiadomo i o ile nic się nie zmieniło, Grub potrafi uruchomić ISO, które zostały do tego przystosowane, tak więc nie wszystkie dystrybucje muszą się uruchamiać z obrazu ISO. Windows na 99,99% nie jest przystosowany do uruchamiania przez Gruba, dlatego próby uruchamiania instalatora z ISO kończyły się niepowodzeniem.

Innym sposobem, zamiast pendrajwa, może być wypakowanie ISO przez Unetbootin na partycję Ntfs (musi być Ntfs, aby instalator ruszył, a przynajmniej w przypadku Unetbootin). Napisz jeszcze tylko czy w sposobie, który podałeś pendrajw był formatowany na Ntfs czy Fat32?

Tak swoją drogą, skoro kupiłeś nowego laptopa w sklepie, gdzie jest fabrycznie nałożone hasło na BIOS/UEFI, to powinieneś go albo oddać do sklepu, albo zgłosić się do producenta w celu udostępnienia hasła, lub oddać do serwisu na gwarancję z żadaniem zdjęcia lub podania hasła. Ja osobiście oddałbym taki sprzęt do sklepu. Zresztą masz prawo oddać go w ciągu 10 dni od zakupu bez podania przyczyny.

Ostatnio uruchomiłem instalkę windows z pendrivera za pomocą takiego skryptu:

#!/bin/sh

# Solution description:
#  1. partition and format the USB stick
#  2. copy all the files in iso image into the new partition
#  3. setup grub on the USB stick

# Dependency:
#  * >=bash-4.0   use its buildin regexp and associative array
#  * coreutils    use mktemp
#  * util-linux   use blkid,fdisk
#  * p7zip        extrace file from ISO
#  * cdrtools     use isoinfo
#  * ntfs-3g      format partition to ntfs
#  * >=grub-2.0

##########################################################
# util functions

setColorVars() {
    if ["${USECOLOR}" == 1] ; then
        GOOD=$'\e[32;01m'
        WARN=$'\e[33;01m'
        BAD=$'\e[31;01m'
        NORMAL=$'\e[0m'
        BOLD=$'\e[0;01m'
        UNDER=$'\e[4m'
    else
        GOOD=''
        WARN=''
        BAD=''
        NORMAL=''
        BOLD=''
        UNDER=''
    fi
}

print_info() {
    local indent=$1
    local str=$2

    echo -n "${GOOD} *"
    for ((x=0; x < $indent; x += 1)) ; do
        echo -n "  "
    done
    echo "${NORMAL} >> ${str}"
}

callInteractive() {
    local cmd=$1   ; shift
    local input=$*

    local execcmd="echo '"
    for item in ${input[*]} ; do
        if ["$item" = '\n'] ; then
            item=''
        fi
        execcmd=${execcmd}${item}$'\n'
    done
    execcmd="${execcmd}' | $cmd"

    eval "${execcmd}"
}

mediumTest() {
    local devname=$1

    local ret=$(dd if="$devname" of=/dev/null bs=512 count=1 2>&1)
    if ["$?" != "0"] ; then
        echo "0: ${ret##*: }"
        return
    fi

    echo 1
}

isMounted() {
    local devname=$1

    # check the device itself or any of its partition is mounted
    if ["x$(grep "^${devname}[0-9]* " /proc/mounts)" != "x" ] ; then
        echo 1
    else
        echo 0
    fi
}

getUuid() {
    local devname=$1

    local ret=$(blkid -s UUID "$devname")
    ret=${ret#*\"}
    ret=${ret%\"*}

    echo "$ret"
    return 0
}

getIsoVolumeId() {
    local isoname=$1
    local pattern='^Volume id: (.*)'

    local SAVEIFS=$IFS
    IFS=$'\n'
    for line in $(isoinfo -d -i "$isoname" 2>&1)
    do
        if [[$line =~ $pattern]]; then
            IFS=$SAVEIFS
            echo "${BASH_REMATCH[1]}"
            return 0
        fi
    done
    IFS=$SAVEIFS

    return 1
}

extractIso() {
    local isof=$1
    local dstdir=$2

    7z x "${isof}" -o"${dstdir}" > /dev/null
}

installGrubNtldr() {
    local devname=$1
    local partname=$2
    local partuuid=$3
    local mountdir=$4
    local grubcfgfile="${mountdir}/grldr/grub2/grub.cfg"

    grub-install --no-floppy --boot-directory="${mountdir}/grldr" "$devname" > /dev/null

    echo '' > "$grubcfgfile"
    echo "load_env"                                                        >> "$grubcfgfile"
    echo ""                                                                >> "$grubcfgfile"
    echo "set default=0"                                                   >> "$grubcfgfile"
    echo "set timeout=0"                                                   >> "$grubcfgfile"
    echo ""                                                                >> "$grubcfgfile"
    echo "menuentry boot-entry {"                                          >> "$grubcfgfile"
    echo "    search --no-floppy --set=root --fs-uuid $partuuid"           >> "$grubcfgfile"
    echo "    ntldr /bootmgr"                                              >> "$grubcfgfile"
    echo "}"                                                               >> "$grubcfgfile"
}

usage() {
    echo 'winiso2usb - create USB boot disk from Microsoft Windows Setup CD/DVD image'
    echo ''
    echo 'Usage:'
    echo '  winiso2usb iso-file dev-name'
    echo ''
    echo 'Supports:'
    echo '  Microsoft Windows Vista'
    echo '  Microsoft Windows 7'
    echo ''
    echo 'You must be root to run this tool.'
    echo ''
}

##########################################################
# main procedure

DEBUG=0
USECOLOR=1

if [$(id -u) != "0"]; then
    echo "Error: You must run this command as root!"
    exit 1
fi

argtemp=`getopt -o t: -n "make-liveusb" -- "$@"`
if [$? != 0] ; then exit 1 ; fi
eval set -- "$argtemp"
while true ; do
    case "$1" in
        -t) isotype="$2" ; shift 2 ;;
        --) shift ; break ;;
        *) usage ; exit 1 ;;
    esac
done

if [$# -lt 2] ; then usage ; exit 1 ; fi
isoname=$1
devname=$2
partname=""
partlabel=""
partuuid=""
mountdir=""

print_info 0 "Argument checking..."

if [! -e "$isoname"] ; then
    echo "Error: File \"$isoname\" does not exist"
    exit 1
fi

if [! -e "$devname"] ; then
    echo "Error: Device \"$devname\" does not exist"
    exit 1
fi

ret=$(isMounted "$devname")
if ["$ret" != 0] ; then
    echo "Error: Device \"$devname\" or any of its partitions already mounted, unmount it first"
    exit 1
fi

ret=$(mediumTest "$devname")
if ["$ret" != 1] ; then
    echo "Error: Device \"$devname\" medium test failed, ${ret#*: }"
    exit 1
fi

print_info 0 "Complete."

print_info 0 "Making USB flash disk..."

print_info 1 "Partitioning..."

dd if=/dev/zero of="$devname" bs=512 count=16            # clear mbr and pbr
fdiskinputs=('o' 'n' 'p' '1' '\n' '\n' 't' '7' 'a' '1' 'w')
callInteractive "fdisk \"$devname\" > /dev/null" ${fdiskinputs[*]}

print_info 1 "Complete."

print_info 1 "Format NTFS partition..."

partname="${devname}1"
partlabel="$(getIsoVolumeId $isoname)"

dd if=/dev/zero of="$partname" bs=512 count=1 > /dev/null
mkfs.ntfs -Q -L "$partlabel" "$partname" > /dev/null
partuuid="$(getUuid $partname)"

print_info 1 "Complete."

mountdir=`mktemp -d`
mount -t ntfs-3g "$partname" "$mountdir"

print_info 1 "Copy files from ISO..."

extractIso "$isoname" "$mountdir"

print_info 1 "Complete."

print_info 1 "Installing GRUB as bootloader..."

installGrubNtldr "$devname" "$partname" "$partuuid" "$mountdir"

print_info 1 "Complete."

umount "$partname"
rmdir "$mountdir"

print_info 0 "Complete."

exit 0

Jak widać korzysta on z gruba, można by z niego wyciągnąć potrzebne rzeczy, wgrać iso win na dysk/pendriver i go zbootować z tego wpisu z gruba.

 

  1. Problem w tym, że laptop ma już kilka lat (sprawdź sobie ten model), a poza tym nie jest to laptop mój, tylko znajomego.

  2. Pendrive był formatowany na FAT32 (sformatuje go już aplikacja którą podałem).

  3. Co do instalacji Windowsa w na innym komputerze niż na tym na którym będzie on użytkowany - nie wiem czy korzystasz na co dzień z tego systemu, ale za takie kombinowanie potrafi on się odwdzięczyć kilka razy dziennie… wysypując bluescreena  :smiley:

 

Wszystkie czynności opisałem po to, żeby ktoś nigdy nie korzystający z GRUBa/Linuxa mógł sobie w miarę łatwo poradzić z reinstalacją systemu na tym laptopie (pominąłem instrukcje jak zainstalować Debiana, bo takich poradników jest w sieci całe mnóstwo).

Zdarza mi się korzystać z Windowsa i zdarzało mi się instalować jeszcze XP na dysku pod innym komputerem, niż był użytkowany i wszystko działało, kwestia instalacji sterowników pod właściwym sprzętem. Windows 8 jest już bardziej elastyczny i dobiera sobie prawie jak Linux sterowniki pod odpowiedni sprzęt, więc też nie powinno być problemów. Zresztą spróbować nie zaszkodziło :wink: