Sziasztok!
initram FS-be szeretnek belepaszirozni dialog-ot.
jelenleg ezt kapom:
Error opening terminal: linux
Mivel ez egy korai boot, meg csak /dev/console van, ami nem tamogat ioctl-t, ami kellhet a dialognak.
Hogyan tudnek "teljes" erteku tty-t paszirozni a initfs-embe ?
Koszi!
- 2545 megtekintés
Hozzászólások
Meg lehet kerdezni, hogy minek neked az initramfs-be dialog? Ez egy early stage, aminek az a feladata, hogy elore toltson egy par dolgot (modules, etc). Mit szeretnel csinalni? Mert ha mar dialog, akkor az nem az initramfs-be valo az tuti.
- A hozzászóláshoz be kell jelentkezni
Specialis feladata van,
es van mikor user szintu valasztasi lehetoseg adodik.
Ehhez kellene nekem egy dialog.
De egyenlore meg tty-t sem tudtam csinalni. :(
- A hozzászóláshoz be kell jelentkezni
Ahogy előttem írták, nem nagyon lehet elképzelni olyat, amikor initrd-nél kell full interaktív csicsa-micsa felület. Én egyébként azt a trükköt lestem el korábban, hogy a kernel kap egy paramétert, pl. FOO=bar, majd az init folyamat során a /proc/cmdline alapján történnek, illetve nem történnek meg dolgok.
- A hozzászóláshoz be kell jelentkezni
Sajna sokan arra allnak ra, hogy hogy lehet mashogy megcsinalni, ill. h NEM LEHET elkepzelni.
Nem is kell.
Dialogot szeretnek initramfs-ben.
- A hozzászóláshoz be kell jelentkezni
Az a baj, hogy ragaszkodsz egy technologiahoz, ahelyett, hogy a megoldast keresned. (amugy recipient rejectedet kaptam a maganlevelre, ugyhogy itt is leirom a valaszt)
A baj:
ldd `which dialog`
linux-vdso.so.1 => (0x00007ffc963c8000)
libncursesw.so.5 => /lib/x86_64-linux-gnu/libncursesw.so.5 (0x00007f9addb00000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f9add8d7000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9add5d1000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9add20c000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9add008000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9addd34000)
Az initrd-be csak statikusan linkelt progikat célszerű belerakni.
DE
Ott van az initramfs sima shellje, vagy akar a busybox, mint lehetőség.
Ugye az initrd/initramfs az "init"-et inditja el, ami egy sima shellscript. Ide siman bel lehet irni a kovetkezot: 'echo add_be_az_adatot: ; read adat; cmp $adat ; if $? ...blablablah'
Es el is van intezve a dolog. Lehet akarni csicsazni a dolgot, de a celod az, hogy bekerj egy adatot a felhasznalotol es annak fuggvenyeben csinalj valamit.
Ez /dev/console-on is menni fog.
En is azon a velemenyen lennek, hogy van kernel parameter, amit az initramfs init-jeben feldolgozol. Ha valaki kepes a grub menu-ben e-t nyomni, meg utana a kernel soron e-t nyomni, ahol a sor vegere beirja hogy adat=ertek, akkor az mar eleg kell legyen.
Ja es meg valami: az initrd nem intekraktivitasra valo. Ezert van, hogy mi sokan nem ezzel akarnank megoldani. Villaval levest enni nekunk nem annyira szorakoztato. Ennyi.
update:
ja es kis google utan: "Early boot uses /dev/console, which seems to be incapable of supporting the ioctls that ncurses relies on."
- A hozzászóláshoz be kell jelentkezni
Termeszetesen gondoltam arra, hogy siman bekerem az adatot. Persze nem grub menuben :)
Az mind1 h mire valo az initrd, en egy 2 filebol allo OS-t szeretnek csinalni, aminek 1 konkret feladata van 1 konkret harveren. Es fontos h mind ez a memoriaban legyen..
Amit megkell valositanom az adott.
2. megoldas, hogy egy valami tiny, vagy LFS linuxot csinalok, amiben van dialog meg ami kell.
De ezt egy fokkal overkill-nek gondolom.
- A hozzászóláshoz be kell jelentkezni
Általában akkor van gond, ha van egy megoldandó probléma, de a kérdező nem a problémát írja meg, hanem megtippeli, hogy milyen technológiákkal kellene megoldani, és utána már csak arról a technológiáról kérdez, nem az eredeti problémáról. Olyankor derül ki, hogy az a technológia nem is arra való, vagy abban a felállásban nem is létezik (lásd initrd+dialog), vagy még ha jó is rá, lehet, hogy szívás és lenne sokkal jobb megoldás is. Mert ilyenkor a segítő szándék mellett sem lehet jó választ adni. Itt, ha jól látom, az eredeti megoldandó feladatot még nem írtad le (ne mondd, hogy az initrd+dialog az eredeti feladat, egy jó feladatleírás általában technológiafüggetlen és enged alternatívákat).
- A hozzászóláshoz be kell jelentkezni
Igy akartam megoldani, es megoldodott.
- A hozzászóláshoz be kell jelentkezni
Annyira nem mindegy - te valóban villával szeretnél levest enni, ami kellően perverz, a'la sajtreszelős onanizálás, de te tudod. Egyébként ha az LFS-t tényleg végigcsinálod, akkor visszatekintve biztosan másképp fogod látni az initrd szerepét. Is.
- A hozzászóláshoz be kell jelentkezni
Tudom altalanossagban mire hasznaljak az initrd, de miert kell ehez ragaszkodnom ? Akkor csak arra hasznalhatom amire hasznaljak, vagy amire te gondolod h hasznalni lehet.
Ezert vagyunk fejlesztok, mert mashogy gondolkodunk, probalunk mast is csinalni.
- A hozzászóláshoz be kell jelentkezni
És ezért kéne kötelezően minden fejvesztőt beültetni üzemeltetni -azokat a sz@rokat, amiket elkövetnek :-P (A'la kutya, orr belever)
- A hozzászóláshoz be kell jelentkezni
Egy tipp: legyen egy ISO az a fájl. ISO-t tud boot-olni a grub is. Leírás Arch-ra, ez alapján csináltam pár éve egy rescue-iso-t, saját beállításokkal (pl. a wifi jelszó beállítva, a szükséges programok telepítve, stb.).
- A hozzászóláshoz be kell jelentkezni
Uhh ez nagyon allat tipp. KOSZI!
- A hozzászóláshoz be kell jelentkezni
Ezért kérdeztük, hogy mire kell :)
(csak XY-probléma lett)
- A hozzászóláshoz be kell jelentkezni
Elnezest, ha titikzatos vagyok, de sajnos bizalmas a projekt es az otlet is. :(
- A hozzászóláshoz be kell jelentkezni
Meg ugy sem csinaltam OS-t ami ISO-kent is bootolhato.
Ha van valakinek taasztalata, vagy bevalt howto-ja, azt szivesem veszem.
(deb,ubuntu alap preferalt)
Koszi!
- A hozzászóláshoz be kell jelentkezni
Na ennyibol meg ha jo egy ISO, akkor inkabb raknek egy TFTP szervert, amirol bebootol automatan egy rescue rendszer, amiben meg minden van es akkor meg egy ISO-t sem kell bootolni, menni fog halozatrol. Nem shell-t dob, hanem a dialogot aztan azok alapjan meg csinal amit csinal. Ne gyarts ezért ISO-t. Sima ubuntu, debian, rhel, centos, akrmivel menni fog.
- A hozzászóláshoz be kell jelentkezni
en ezt hasznaltam par evvel ezelott amikor szuksegem volt hasonlora: http://linux.voyage.hk
- A hozzászóláshoz be kell jelentkezni
Még ősibb időkben volt floppy image is.
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
XY problémára gyanúzunk szerintem, azért kérdezzük, hogy mire kell.
- A hozzászóláshoz be kell jelentkezni
egyetértek golgota kollégával, driver/modulokon kivül ma már másra nem való, pörgetem magamba az extrémitásokat, de, hogy ide - ráadásul muszájból?! - tényleg kéne interaktív valami az kozmikus, vagy előtte bootolásnál vagy már utána init/systemd stagenél 'minden' megoldható
- A hozzászóláshoz be kell jelentkezni
Semmi kozmikus.
Meg a particiok barmi nem mountolasa elott kell az interakcio.
- A hozzászóláshoz be kell jelentkezni
Milyen kérdés, ha nem kozmikusan titkos, amire válaszolni kell?
- A hozzászóláshoz be kell jelentkezni
Nem lenne jobb a bootloader-t hekkelni inkább?
- A hozzászóláshoz be kell jelentkezni
Na pont erre való a bootmenü. Ha válsztania kell valamit a felhasználónak az azt jelenti, hogy véges számú dologról van szó. Ekkor elkészíteném a véges számú initramfs-eket és beraknám őket a bootloader menüjébe.
Egyébként nagyon titokzatos, hogy milyen interakció kellhet egy felhasználótól egy initrdben....én el nem tudok képzelni semmi scenariot erre. Inkább csinálnék egy olyan initramfs-t amiben minden benne van ami kell a véges számú választási lehetőségekből (milyen drivert töltsön be???).
Tényleg érdekelne a feladat. Ha akrod privátban megírhatod. :D
Én még ilyen medvét a 20 évnyi vadász ultam alatt nem láttam. :D
- A hozzászóláshoz be kell jelentkezni
A dm-crypt initramfs-ében nézz szét, a jelszót itt kéri be. Ha jól emlékszem - egy kis bütyköléssel - távolról ssh-n keresztül is be lehet írni, valszeg elég jó tty van benne.
- A hozzászóláshoz be kell jelentkezni
Valszeg /dev/console van a bepotyogeshez, es egy sshd, vagy dropbear.
Sajna nem tty egyik sem ami ide kellene, de az otlet jo, koszi.
- A hozzászóláshoz be kell jelentkezni
Sub, már nagyon érdekel mi az eredeti feladat :)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
nagyon titkolozol.. az nem nagyon serkent senkit segitsegre.
itt van pastebinben (a code nem birja a <<-t), mar nem tudom honnan van az eredetije. a nem kivant resz torlendo, futtasd, csinal neked initramfs-t, ami egy mini rendszert bebootol.
#!/bin/bash
set -e
set -x
VER=$(uname -r)
NAME=$(basename $0)
rm -fr root
mkdir root
cp -a $0 root/
pushd root
mkdir -p dev bin etc/udhcpc etc/init.d lib/modules
mknod dev/console c 5 1
mknod dev/tty2 c 4 2
mknod dev/tty3 c 4 3
mknod dev/tty4 c 4 4
wget http://www.busybox.net/downloads/binaries/latest/busybox-i686 -O bin/busybox
chmod +x bin/busybox
ln -s bin/busybox init
ln -s busybox bin/sh
wget -q http://git.busybox.net/busybox/plain/examples/udhcp/simple.script -O etc/udhcpc/default.script
chmod +x etc/udhcpc/default.script
cat > etc/init.d/rcS << EOF
#!/bin/sh
/bin/busybox mkdir -p root dev bin sbin usr/bin usr/sbin proc sys dev/pts
/bin/busybox --install -s
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t devpts devpts /dev/pts
mdev -s
echo /sbin/mdev >/proc/sys/kernel/hotplug
find /sys -name 'modalias' -type f -exec sort -u {} \; | sort | uniq | grep -v ^acpi | xargs -n 1 /sbin/modprobe
echo root::0:0:root:/root:/bin/sh > /etc/passwd
ifconfig lo up
ifconfig eth0 up
udhcpc -i eth0 -R -b -s /etc/udhcpc/default.script
hostname ${NAME}
EOF
chmod +x etc/init.d/rcS
cat > etc/inittab << EOF
::sysinit:/etc/init.d/rcS
#::askfirst:/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r
::restart:/sbin/init
::respawn:/usr/sbin/telnetd -F
tty2::respawn:/sbin/getty 115200 tty2
tty3::respawn:/sbin/getty 115200 tty3
tty4::respawn:/sbin/getty 115200 tty4
EOF
cp -a /lib/modules/${VER} lib/modules/
popd
find . | cpio -o -H newc | gzip > initrd.cpio.gz
- A hozzászóláshoz be kell jelentkezni
subs.
- A hozzászóláshoz be kell jelentkezni
Megy a "<<" code-on belül is:
<<
Csak ott is úgy kell írni, mint normál szövegben:
<< = <<
- A hozzászóláshoz be kell jelentkezni
koszi, vegul ment az, ott van.
es persze modositottam a scripten mielott postoltam, es persze el is ba*tam. ha erdekes meg, akkor itt van valami, amit ki is probaltam..
- A hozzászóláshoz be kell jelentkezni
Vigyazat,
echo root::0:0:root:/root:/bin/sh > /etc/passwd
nem /etc/passwd, hanem etc/passwd kell!
Kulonben agyonvered a sajat OS-ed passwd-jet :D
- A hozzászóláshoz be kell jelentkezni
Úgy látom, azért sikerült helyreállítanod :D
- A hozzászóláshoz be kell jelentkezni
+1
csunyan beleugrottam, pedig ellenoriztem a scriptet :D
viszont van egy sysresccd OS-em, a gepen, szoval helyreallitottam par perc alatt :D
- A hozzászóláshoz be kell jelentkezni
en azt hiszem nem ver agyon semmit: a bebootolt, rambol futo rendszeren fut le az a parancs, a memoriaban levo ramdiszket matatja.
de nem rontja el ha atirod etc/passwd
-re, es tenyleg inkonzisztensen van egyszer /etc
-t, maskor etc
(meg proc
, sys
, stb).
- A hozzászóláshoz be kell jelentkezni
update:
Ezt a hitetleneknek irom, es azoknak akiket erdekel.
Sikerult dialog-t varazsolni initramfs-be, azaz lehetseges.
- A hozzászóláshoz be kell jelentkezni
:)
ahhoz nem csak az /etc/terminfo/l/linux
hianyzott, ahogy masok irjak?
- A hozzászóláshoz be kell jelentkezni
igen, es pont innen olvastam :D
- A hozzászóláshoz be kell jelentkezni
Lehetséges, de nem oda való, mert az initrd-nek nem ez a célja. A "nem lehet" és a "nem oda való" közötti apró, de lényeges különbséget nem tudom, észrevetted-e?
- A hozzászóláshoz be kell jelentkezni
de ez mindig a korulmenyektol fugg, nem? adott feladathoz keresunk megoldast, es nem kobe vesett best practices-ben hiszunk vakul.
- A hozzászóláshoz be kell jelentkezni
Részben. Tudod: sajtreszelő... Lehet vele, csak kevésbé élvezetes :-P Azt meg azért gondold végig, hogy az initrd-ben futó motyó milyen jogosultsággal fut, annak a sérülékenységén vagy mellékhatásaként keresztül mihez lehet hozzáférni, stb... És ez még egy beágyazott rendszer esetén is fontos lehet, hogy az egyszerű, azonosítatlan usernek ne legyen mindenhez 100%-ban joga és hozzáférése.
- A hozzászóláshoz be kell jelentkezni
de ezek ortogonalis dolgok, nem? (initrd-t hasznalsz / foglalkozol a jogosultsagokkal)
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
Nekem X11 kellene :)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Meg KDE bele, teljes Office. Nehogy már egy X11 elég legyen :)
- A hozzászóláshoz be kell jelentkezni
A systemd része lesz hamarosan... ;-)
--
A főnököm mindig megtartja amit ígér, ha pénzt ígér azt is!
- A hozzászóláshoz be kell jelentkezni
jha, es koszi mazsi!
- A hozzászóláshoz be kell jelentkezni