Första sidan | Forum start | Logga in | Bli medlem |


initramfs

Frågor och diskussion kring Linuxkärnan med moduler.

initramfs

Inläggav hemo 7 april 2012, 11:08

hej allihopa

kul att det fanns ett svenskt forum för linux i allmänhet.jag skulle behöva lite hjälp/info om hur jag ska gå till väga
med att skapa en initramfs. mitt problem är att jag får en "kernel panic" om att den inte hittar min init...(som tråden nedan men såg att den var VÄL gammal).jag använder mig av raid0/raid1.min boot ligger i raid1 och resterande partitioner i raid0.en av mina
partitioner har jag satt up som lvm=

/usr
/usr/portage
/usr/portage
/home
/opt
/var
/var/tmp
/tmp

så jag tänkte mig att jag lägger en cpio.gz fil i /boot.jag har provat med att låta kärnan sköta det men det misstänkte jag att det inte skulle funka eftersom jag har /usr i en separat partition.mycket mer än så kan jag inte komma på.e det nått bara fråga...

m.v.h hedmo

ps: som ni ser skulle min användare heta hedmo ocksä men missade d:et.hur går jag till väga att ändra detta?
hemo
 
Inlägg: 4
Blev medlem: 7 april 2012, 10:33

Re: initramfs

Inläggav kjell-e 7 april 2012, 23:41

Det spelar ingen roll hur det ser ut med partitioner för det filträd som du utgår från när du skapar din initramfs. En initramfs är ett arkiv med filer i och det enda som programmet cpio bryr sig om är sökvägarna till de kataloger och filer som ska ingå i arkivet.

Mest sannolikt saknar du en symbolisk länk init som ska ligga högst upp i filträdet i ditt cpio-arkiv, alltså i din initramfs.Denna länk ska peka på sbin/init i samma filträd.

En symbolisk länk skapas med ln -s fil länk
Så om du står högst upp i det filträdet som ska in i din initramfs kan du köra ln -s sbin/init init
Skapa därefter en initramfs.
Användarvisningsbild
kjell-e
 
Inlägg: 2769
Blev medlem: 21 december 2002, 16:27
Ort: Linköping

Re: initramfs

Inläggav hemo 8 april 2012, 09:53

kjell-e skrev:
Mest sannolikt saknar du en symbolisk länk init som ska ligga högst upp i filträdet i ditt cpio-arkiv, alltså i din initramfs.Denna länk ska peka på sbin/init i samma filträd.



hej kjell-e tack för svar.jag har inte gjort någon symbolisk länk mellan /sbin/init och /init.jag har ingen init i /sbin i mitt
cpio arkiv.därimot har gjort /init körbar via: chmod +x ....mitt arkiv ser följande ut:

# ls
bin dev etc init lib mnt proc root sbin sys



varav initfilen är grön(körbart).jag e lite förbryllad över att kärnan inte min initfil vid boot.självklar gjorde jag som du har skrivit
(ln -s sbin/init init) men som jag misstänkte:

ln: failed to create symbolic link 'init': File exists

rätta mig om jag har fel men så som jag förstår på dig är mitt problem med att kärnan inte hittar min init är p.g.a jag har
gjort en körbar initfil högst upp i trädet i sället för att ha den i /sbin och inte gjort en symbolisk länk från /sbin/init till /init.

m.v.h hedmo
hemo
 
Inlägg: 4
Blev medlem: 7 april 2012, 10:33

Re: initramfs

Inläggav kjell-e 9 april 2012, 00:05

När man ger en initramfs till linuxkärnan så tittar den i den och försöka starta programmet init som ska ligga högst upp i filträdet. Denna init ska vara körbar. init kan vara ett program eller ett shellscript. init kan också vara en länk till ett program eller ett shellscript som ligger någon annanstans.

Vad är det för linuxdistribution som du kör?
Anger du rätt fil till kärnan som argument till kärnan vid boot?
Vad och hur gör du för att skapa din initramfs?
Användarvisningsbild
kjell-e
 
Inlägg: 2769
Blev medlem: 21 december 2002, 16:27
Ort: Linköping

Re: initramfs

Inläggav hemo 9 april 2012, 08:43

kjell-e skrev:
1.Vad är det för linuxdistribution som du kör?
2.Anger du rätt fil till kärnan som argument till kärnan vid boot?
3.Vad och hur gör du för att skapa din initramfs?


1.gentoo
2.jag har satt argumentet vid boot av grub1 :

mybox hedmo # mount /dev/md127 /boot
mybox hedmo # cat /boot/grub/grub.conf
# This is a sample grub.conf for use with Genkernel, per the Gentoo handbook
# http://www.gentoo.org/doc/en/handbook/h ... #doc_chap2
# If you are not using Genkernel and you need help creating this file, you
# should consult the handbook. Alternatively, consult the grub.conf.sample that
# is included with the Grub documentation.

default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title Gentoo
root (hd0,0)
kernel /boot/kernel-3.3.0-rc1-mm1 root=/dev/md3
initrd /boot/my-initramfs.cpio.gz
#video=radeonfb:1024x768-32@60
#iommu=on





title Gentoo1
root (hd0,0)
kernel /boot/kernel-3.3.0-rc1-mm1.noinit root=/dev/md3
#iommu=calgary




mybox hedmo # ls /boot
boot initramfs.igz kernel-3.3.0-rc1-mm1 lost+found
grub kernel-3.1.0-rc3-mm1 kernel-3.3.0-rc1-mm1.noinit my-initramfs.cpio.gz
mybox hedmo #


3.jag har gjort en ganska enkel init :

mybox initramfs # cat init
#!/bin/busybox sh

# Mount the /proc and /sys filesystems.
mount -t proc none /proc
mount -t sysfs none /sys
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s


# Do your stuff here.
echo "This script mounts rootfs and boots it up, nothing more!"

# Mount the root filesystem.
raidautorun /dev/md3
mount -o ro /dev/md3 /mnt/root

# Mount the devtmpfs filesystem
mount -t devtmpfs none /dev

# Mount my lvm`s
lvm vgscan --mknodes
lvm lvchange -aly vg/{distfiles,home,opt,portage,tmp,usr,var,vartmp}

# Clean up.
umount /proc
umount /sys
umount /dev


# Boot the real thing.
exec switch_root /mnt/root /sbin/init

rescue_shell() {
echo "Something went wrong. Dropping you to a shell."
busybox --install -s
exec /bin/sh
}
mount -o ro /dev/md3 /mnt/root || rescue_shell
mybox initramfs #
mybox initramfs # cp -a /sbin/lvm /usr/src/initramfs/sbin/

sistnämda commandot är ett exempel vad hag har kopierat över till min initramfs,och busybox(statisk).
när detta är gjort,kompilerasdes kärnan med initramfs stöd.packade och kopierade cpio-arkivet till /boot

m.v.h andy
hemo
 
Inlägg: 4
Blev medlem: 7 april 2012, 10:33

Re: initramfs

Inläggav hemo 9 april 2012, 18:41

kjell-e

jag har lyckats att sparka igång min init.jag misstänker att jag :

cp -a /bin/busybox /usr/src/initramfs/bin/busybox

före jag kompilerade om busybox(statiskt) och därav fick jag "kernel panic".dock återstår (som jag misstänkte) mitt lvm
problem.lvm värkar inte vilja starta under "kärnans boot" och när väl bootsykeln är över saknar jag allt vad lvm har med att göra.
nästan inget startar under boot och om jag vill starta udev t.e.x får jag meddelande om att den inte kmod.so(antagligen p.g.a min /usr partition saknas).och det samma går för lvm men i det fallet är det libudev.so som saknas.så som jag har uppfattat det hela,skall busybox sköta allt var länkande saker har med och göra :roll: .men det finns i.a.f lite ljus i tunneln.jag har i.a.f min raid
uppställning efter uppstart:

cat /proc/mdstat
Personalities : [raid0] [raid1]
md127 : active raid0 sdc3[0] sdd3[1]
42820608 blocks super 1.2 512k chunks

md126 : active raid1 sdb1[0] sda1[1]
102336 blocks [2/2] [UU]

md4 : active raid0 sdd4[1] sdc4[0]
102399872 blocks 64k chunks

md5 : active raid0 sdf1[0] sde1[1]
234439424 blocks 64k chunks

md3 : active raid0 sdb3[0] sda3[1]
70047744 blocks 64k chunks

unused devices: <none>


m.v.h hedmo
hemo
 
Inlägg: 4
Blev medlem: 7 april 2012, 10:33

Re: initramfs

Inläggav kjell-e 12 april 2012, 13:18

Jag sitter och tittar i LVM HOWTO och i kapitel 8 säger de:

Chapter 8. LVM 2 Boot Time Scripts

For initrds, you should have:

dmsetup mknodes
vgscan --ignorelockingfailure
vgchange -ay --ignorelockingfailure


in the linuxrc to get the root LV activated before the root volume is accessed. Most distros seem to have this setup in their mkinitrd scripts now, and they also tend to have them in rc.sysinit or equivilant, so all volumes get activated on bootup.
Användarvisningsbild
kjell-e
 
Inlägg: 2769
Blev medlem: 21 december 2002, 16:27
Ort: Linköping


Återgå till Linuxkärnan

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 1 gäst