# [gelöst] Image auf NTFS bootbar (per USB/CD)

## Max Steel

Hi Leute,

Wäre es theoretisch möglich ein Linux auf einem image-file zu installieren das auf einer NTFS Partition liegt. Welches dann ganz normal mit initrd bootbar ist?

Also es sollte dan so laufen das das Image C:\Users\blubbfasel\Images\ liegen und KErnel/initrd auf USB/CD.

 aber jetzt is Pause vorbei merk i grad xD

Danke im Vorraus.

----------

## slick

Solange der Kernel alle Dateisysteme drin hat (ntfs + das fürs image + evt. loop) sollte das kein Problem sein und wird nur durch die Scriptfertigkeiten des Initrd-Erstellers begrenzt.

grober Ablauf beim booten:

- Boote Kernel von Stick

- "Starte" initrd von Stick, macht:

   - mount ntfs

   - mount image 

   - mount /var und /tmp als tmpfs

   - switch_root ins image

Sehe ich erstmal kein theoretisches Problem. Je nach Imagetype kann man das Image auch direkt rw mounten und sich das tmpfs (theoretisch) sparen. Wenns gut gemacht ist, könntet den Stick sogar wieder abziehen nach dem booten.

----------

## Max Steel

Super.

Je nach Imagetype meinst du ob das Image ein squash oder ein iso9660 Image ist, oder ein Festplattenabbild, richtig?

Da wollte ich jedenfalls das "Festplattenimage"

Würde für sowas das genkernel-Image auch funktionieren?

Oder funktioniert der nur in Zusammenhang mit squashfs?

----------

## slick

 *Max Steel wrote:*   

> Je nach Imagetype meinst du ob das Image ein squash oder ein iso9660 Image ist, oder ein Festplattenabbild, richtig?
> 
> Da wollte ich jedenfalls das "Festplattenimage"

 

Es reicht auch das Image von nur einer Partition. Ist sogar besser. Kommst noch drauf, spätestens wenn du es mounten willst  :Wink: 

 *Max Steel wrote:*   

> Würde für sowas das genkernel-Image auch funktionieren?
> 
> Oder funktioniert der nur in Zusammenhang mit squashfs?

 

Vergiss die Tools. Für sowas spezielles mußt selbst Hand anlegen. Ist recht einfach wenn man es einmal verstanden hat.

Letztlich ist das initrd nur ein komprimiertes Mini-Linux-Image mit Initscript. Der Kernel packt es aus, und startet aus diesem Mini-Linux das Initscript ( /init). Dieses macht alles nötige für das richtige System (z.B. mounts) und anschliessend übergibt es die Kontrolle an das richtige System.

Ich nehme mir gern http://en.gentoo-wiki.com/wiki/Root_filesystem_over_LVM2,_DM-Crypt_and_RAID#Initram als Vorlage. Dort wird per Hand eine Initrd gebaut.

Versuch das Beispiel da zu verstehen und bau es für deine Bedürfnisse nach. Lvm und crypto brauchst natürlich nicht, aber es ist ganz gut erklärt. 

Alles andere mit mkinitrd usw. ist hier völlig fehl.

Als Überblick ist das noch ganz gut geeignet:

http://www.ibm.com/developerworks/linux/library/l-initrd.html

----------

## Max Steel

Super danke,

Wenn ich Zuhause bin versuch ich mich daran mal, danach komm ich vermutlich nochmal auf dich zu ^^

Ja okay, das mit dem FEstplatten-image war tatsächlich bisschen doof ausgedrückt, ich meinte tatsächlich nur eine Partition als Image (vll sogar 2 Images. Das 2. wäre dann für home) , aber das lässt sich ja dann machen wenn das / Image gemountet ist.

----------

## slick

Bau erstmal eine Initrd die nur "Hallo" ausgibt (und dann von mir aus crasht). Bekommst du das vom Stick/CD gestartet hast schonmal 75% geschafft.

Hinweise für USB & Grub gibts hier: https://forums.gentoo.org/viewtopic-t-178887.html

Als Diskimage reichts wie folgt:

```
dd if=/dev/zero of=/myimage bs=1M seek=999 count=1

mke2fs -j myimage

mount myimage /mnt

cp -a heruntergeladenes-und-entpacktes-stages3/* /mnt

in fstab kein / oder /home mounten, das sollte das initrd tun, dementsprechend fstab fast leer

passwort setzen

umount /mnt
```

----------

## Max Steel

Usb funktioniert leider nicht, ist deaktiviert an dem Laptop hier, aber dafür kann ich noch CD booten, also werd ich wohl eine Boot-CD basteln um das Image auf der Platte zu laden (und vielleicht noch ein kleines Rettungssystem auf die CD pressen)

Aber dort funktioniert dann kein grub mehr, oder?

----------

## slick

 *Max Steel wrote:*   

> Usb [...] ist deaktiviert an dem Laptop hier, ...

 

Sprich nicht weiter. Ich wills garnicht wissen...

 *Max Steel wrote:*   

>  also werd ich wohl eine Boot-CD basteln um das Image auf der Platte zu laden (und vielleicht noch ein kleines Rettungssystem auf die CD pressen)
> 
> Aber dort funktioniert dann kein grub mehr, oder?

 

Solange irgendein Bootloader einen Kernel und eine initrd laden kann ists doch egal von was der gestartet wird, ob nun grub oder isolinux.

Mir deucht du hast das Prinzip noch nicht ganz verinnerlicht...

Mal am Rande, mir ist nicht ganz klar wieso du Gentoo auf ein Image auf der Platte legen willst, wenn du es doch auch von CD booten kannst? Abgesehen von der sportlichen Herrausfoderung ... :Wink: 

----------

## Max Steel

Sportliche Verinnerlichung möchte ich das nennen.

Und der Spieltrieb mit Betriebssystem die ich (noch) nicht komplett beherrsche, deswegen steht auf meiner To-Do-Liste auch noch LFS ^^

Edith:

 *slick wrote:*   

>  *Max Steel wrote:*   Usb [...] ist deaktiviert an dem Laptop hier, ... 
> 
> Sprich nicht weiter. Ich wills garnicht wissen...

 

Sind die negativen Bedenken gegen das Vorhaben allgemein oder gegen die Beschränkung.

(So mir die Frage erlaubt ist.)

Allerdings sei mir vergönnt, es ist nur der USB-Boot deaktiviert, nicht der Anschluss von Sticks/Maus/etc. davon.

----------

## Max Steel

Juhu, ich habe bereits meine ersten Erfolgserlebnisse.

Der Kernel bootet und laedt mir die Initrd.

Die Initrd mountet die Windows-Partition und gibt ein freundliches "Hello World." aus und startet danach erstmal die Shell.

Nach der Shell soll er dann die Windows Partition unmounten und crasht.

Meine Frage ist, muss oder darf ich die /windows vor dem switch_root unmounten? Ich frage weil ja das rootimage auf der Partition liegt und google nichts handfestes liefert. (vll such ich einfach falsch.) Dankeschoen.

----------

## slick

Ich behaupte mal die kannst nicht umounten, eben weil das Image darauf liegt.

----------

## Max Steel

Eben..., werden die Befehle die nach einem switch_root in der /init auf der ramdisk stehen eig noch abgearbeitet wenn ich das System herunterfahre?

Ich denke mal nicht.

----------

## Max Steel

Jetz hab ich noch eine andere Frage. Und zwar geht es darum, wenn ich mein Image als loop0 eingebunden hab und gemountet kann ich ja eigentlich darein booten. Aber wäre es möglich das es zu einem Problem mit der noch gemounteten Festplatte kommt?

Ich frage weil switch_root ja alles auf / löscht. und nur /newroot stehen lässt...

(zumindest lese ich das so in der switch_root --help Message), oder lässt switch_root alle mounted_Ordner unangetastet?

Edith:

Meine letzte Frage erübrigt sich, natürlich sind die Bedenken von mir bescheuert und nicht haltbar. Es wird nur das für die initrd angelegte tmpfs gewiped um Platz für die wirklich wichtigen Dinge zu lassen.

----------

## Max Steel

Sooo also nu will ich mal verkünden, die ganze Schoße funktioniert 1a.

Nicht einmal Windows meckert über irgendeine nicht ausgehangenene Systempartition sondern startet ganz brav durch.

Wunderbar.

Die /init der initrd sieht jetzt also so aus:

```
#! /bin/sh

mount -t proc proc /proc

CMDLINE='cat /proc/cmdline'

mount -t sysfs sysfs /sys

mount -t tmpfs mdev /dev

mdev -s

#wait a little to avoid trailling kernel output

sleep 3

cat /etc/msg

#root Filesystem

/bin/mount.ntfs-3g -o rw /dev/sda1 /windows

/sbin/losetup /dev/loop0 /windows/Users/RoneckerN/linux/rootimage.img

mount -o relatime /dev/loop0 /newroot

/sbin/losetup /dev/loop1 /newroot/home.img

mount -o noatime /dev/loop1 /newroot/home

#umount pseudo FS

umount /dev

umount /sys

umount /proc

exec /bin/busybox switch_root /newroot /sbin/init ${CMDLINE}
```

ntfs3g ist dynamisch gebaut worden, das sollte man bedenken beim kopieren der Files (genauso habe ich losetup aus der Installation kopiert).

Das System hatte ich auf einem lv meines großen Rechenknechts vorbereitet und mittel dd in ein Image gepackt, dieses auf den Rechner übertragen und voila.

Ich hab mir erstmal ein usb-Stick mit grub präpariert.

Werde aber in Zukunft noch eine CD basteln mit der ich 2 Gentoo starten kann, einerseits das Gentoo-Image auf der Festplatte, andererseits ein Live-System auf der CD, kommt aber erst in Zukunft, jetzt freu ich mich erstmal das alles funktioniert =)

----------

