-
-
-
Statt /bin/bash beim chrooten Teil2 des Skripts (der in der chroot-Umgebung laufen soll) aufrufen würd ich mal probieren.
arghgra
-
Zitat
Verstehe ich jetzt nicht, also es schaut so aus:
Bash
Alles anzeigen#!/bin/sh .... .... .... mount /dev/hda1 /mnt tar xvzf /image/backup.tgz -C /mnt mkdir -p /mnt/{proc,tmp,sys} mount -t proc none /mnt/proc chroot /mnt /bin/bash lilo -M /dev/hda
Und genau, dieses lilo wird nicht mehr ausgeführt, auf der Komandozeile hingegen schon?
MFG Ronny
-
-
Also wenn es nur darum geht, das lilo im chroot auszuführen ...
Codegreywolf@matrix:~$ man lilo [..] -r root-directory Before doing anything else, do a chroot to the indicated direc- tory. The new root directory must contain a /dev directory, and may need a /boot directory. It may also need an /etc/lilo.conf file.
NACHTRAG:
oder halt
wenn unbedingt auch das in /mnt liegende lilo ausgeführt werden soll. -
Zitat
Original von ronnykornexl
Und genau, dieses lilo wird nicht mehr ausgeführt, auf der Komandozeile hingegen schon?Türlich - da chroot eine neue ( eigene ) Instanz der Bash startet , pausiert die Ausführung deines Scriptes . Gibst du in der chroot Umgebung exit ein , gehts weiter .
Die Lösung wurde ja schon genannt - ein weiteres Script , welches chroot als Parameter übergeben wird .
HJS
-
Der Vorschlag von Greywolf klappt. (ist letztendlich nur zum rücksichern eines images von CD)
Bash
Alles anzeigen#!/bin/sh -x ROOT=3000M SWAP=128M dd if=/dev/zero of=/dev/hda bs=1024 count=2 fdisk /dev/hda << EOC n p 1 +$ROOT n p 2 +$SWAP t 2 82 n p 3 a 1 w EOC fdisk -l /dev/hda mkreiserfs -f -q /dev/hda1 mkswap /dev/hda2 mkreiserfs -f -q /dev/hda3 mount /dev/hda1 /mnt tar xvzf /image/backup.tgz -C /mnt mkdir -p /mnt/{proc,tmp,sys} mount -t proc none /mnt/proc chroot /mnt /sbin/lilo -M /dev/hda chroot /mnt /sbin/lilo
MFG Ronny
-
Zitat
Wozu das
am Ende? Wie hjs schon schrieb startet das eine bash im chroot, welche auf Eingaben wartet. Das "reboot" versucht also via /dev/initctl innerhalb des chroot eine Meldung an init zu schicken. init liest aber nur die Meldungen des "richtigen" /dev/initctl ...
-
Alles klaro, nun klappt es wie gewünscht.
-----------
Achso, kennt rein zufällig wer einen Schnippsel zum erkennen der Hardware (eigentlich gehts nur um die Netzwerkkarte) meine, das man wie das zu ladene Modul bekommt?
MFG Ronny
-
In der linuxrc wird es mit pci_scan und einer niclist gemacht:
Code
Alles anzeigenif [ -z "${NIC}" ]; then NIC=`/bin/pci_scan /etc/niclist` if [ -z "${NIC}" ]; then [ -w /proc/progress ] && echo f >/proc/progress echo echo "ERROR! Could not automatically detect the network card." echo " PCI cards should be detected automatically." echo " ISA cards cannot be detected, so they require" echo " the nic driver to be specified in a 'NIC=' parameter" echo " to be passed on the kernel command line," echo " usually specified in option-129, in the" echo " /etc/dhcpd.conf file. See the LTSP docs for more info." echo exit 1 fi fi [ "${INITRD_DBG}" = "2" ] && exec /bin/sh IOADDR="" # # See if we need to pass an IO argument to the driver # [ "${INITRD_DBG}" = "3" ] && exec /bin/sh case ${NIC} in 3c503 | hp_plus | hp | ne | wd) if [ -z "${IO}" ]; then [ -w /proc/progress ] && echo f >/proc/progress echo echo "ERROR! No IO specified." echo " The NIC requires an IO=0xNNN entry on the kernel command line." echo " This is setup in the /etc/dhcpd.conf file using option-129" echo exit 1 fi ;; esac if [ -n "${IO}" ]; then IOADDR="io=${IO}" fi if [ -n "${IRQ}" ]; then IRQOPT="irq=${IRQ}" fi [ -w /proc/progress ] && echo 45 "Loading network driver" >/proc/progress [ "${SLEEP}" -gt 0 ] && sleep ${SLEEP} [ "${INITRD_DBG}" = "4" ] && exec /bin/sh echo "linuxrc: Installing ${NIC} driver" echo "modprobe ${NIC} ${IOADDR} ${IRQOPT} ${NICOPT}" modprobe -v ${NIC} ${IOADDR} ${IRQOPT} ${NICOPT} if [ $? -ne 0 ]; then [ -w /proc/progress ] && echo f >/proc/progress echo echo "ERROR! Failed to install the NIC driver module!" echo " This could be caused by the wrong module for your particular" echo " network interface card. Double check the 'option-129' entry" echo " in your /etc/dhcpd.conf file." echo exit 1 fi
-
Zitat
Original von ronnykornexl
Alles klaro, nun klappt es wie gewünscht.-----------
Achso, kennt rein zufällig wer einen Schnippsel zum erkennen der Hardware (eigentlich gehts nur um die Netzwerkkarte) meine, das man wie das zu ladene Modul bekommt?
MFG Ronny
In /sys/class/net/eth$lan mit $lan = Nummer der LanCard findest du auch
/sys/class/net/eth$lan/device/driverDas ist der Treiber der Karte . Üblicherweise lehnt sich der Treibername an die Typbezwichnung der Karte an .
Code
Alles anzeigenfor lan in 0 1 2 3 do if [ -e /sys/class/net/eth$lan ] then eth=`ls -l /sys/class/net/eth$lan/device/driver` e=${#eth} i=`expr ${#eth} - 1` l=0 while [ "${eth:$i:1}" != "/" ] do i=`expr $i - 1` l=`expr $l + 1` done i=`expr $i + 1` etha[$lan]=${eth:$i:$l} echo '"'$lan'"'" "'"'"eth$lan ( Modul ${etha[$lan]} )"'"'" \ ">>/tmp/text fi done dialog --default-item "eth0" --clear --title "Internetanbindung" \ --menu "Welche Karte hat Internetanbindung ?\nFolgende Karten wurden gefunden :" 8 45 0 \ --file /tmp/text 2>tempfile lan=$? default_var[10]=${etha[$lan]} default_var[11]="eth"$lan
So bestimmt z.B. meine CD die evtl vorhandnen LanCards ( max 4 im Script ) und läßt dem User per dialog die Auswahl einer Karte .
HJS
-
.... also bei dem fdisk-Aufruf stellen sich mir die Nackenhaare auf...
Jungs, wenn ihr die ersten 4 Partitionen gelöscht habt, kann es in keinem Fall mehr eine fünfte bis neute (oder weitere) geben.
Selbst wenn ihr nur die Partitionen 5 bis 9 (also die logischen) löschen wolltet, würde das nicht klappen, weil logische Partitionen durchgezählt werden und keine feste Nummer haben. Wenn du 5 löschst, rücken alle anderen eine Nummer auf. Also bleibt bei der Löscherei bei 9 Partitionen 2 übrig, wenn man jetzt ab 5 rechnen sollte.
Also immer von hinten her löschen. Und wenn man die ganze Partitionstabelle wegwerfen will, sollte man vielleicht mal einen Blick in das Install-Script von LinVDR werfen. Weil da steht drin, wie's geht. Einfach die Partition Table überschreiben und gut.
Viele Grüße, Mirko
-
-
... das ist nicht ganz vollständig, was du da zitiert hast:
Das sollte nicht mal eine Sekunde dauern, weil lediglich 2 KB (so groß ist nämlich die Partition Table) geschrieben werden und nicht, wie in deinem Zitat, die ganze Platte gefüllt.Viele Grüße, Mirko
-
Zitat
Original von cooper
... das ist nicht ganz vollständig, was du da zitiert hast:
Das sollte nicht mal eine Sekunde dauern, weil lediglich 2 KB (so groß ist nämlich die Partition Table) geschrieben werden und nicht, wie in deinem Zitat, die ganze Platte gefüllt.Viele Grüße, Mirko
Und ich dachte immer , der Rootsektor sei nur 512 Byte
HJS
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!