Instalacja Windowsa za pomocą GRUB [Debian]


(Pcziomal) #1

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.


(marcin82) #2

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.


(Pcziomal) #3

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" {


(marcin82) #4

Zajrzyj jeszcze tu:

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


(Pcziomal) #5

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


(roobal) #6

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.


(dragonn) #7

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.


(Pcziomal) #8

 

  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).


(roobal) #9

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: