Me ayudan con este proyecto porfavor

Dudas y comentarios relacionadas con paquetes o programas específicos (obtención, uso, actualizaciones, versiones, problemas de instalación, etc.)

Moderadores: doc, Deckon

Responder
Avatar de Usuario
passlogin
Forista Nuevo
Forista Nuevo
Mensajes: 10
Registrado: Lun Oct 05, 2009 7:00 am

Me ayudan con este proyecto porfavor

Mensaje por passlogin » Sab Ene 16, 2010 4:22 am

hola que tal a todos hace algun tiempo atras les hable que un profesor de nuestra universidad queria que trabajáramos con la modificacion de uhna distribucion en linux. para nuestro proyecto de fin de curso.

bueno pues ya nos lo oriento pero leyendo el documento que el envio pide esto:
"La distribución a instalarse deberá ser personalizada, de modo que al momento de arrancar el sistema operativo se muestre un mensaje donde se especifique los nombres y apellidos de los miembros del equipo de trabajo, debiendo hacerse en este punto una espera hasta que el usuario (el que instala el Sistema Operativo) indique al presionar una tecla que puede continuar con la instalación. Para lograr este efecto, es necesario modificar el código fuente de la distribución de LINUX con la cual estemos trabajando, hacer los cambios necesarios para lograr el efecto solicitado y volver a compilarlo. Probablemente, en la mayoría de los casos, solo será necesario modificar el código fuente del kernel. Al concluir la compilación, se obtendrá la nueva versión personalizada con la cual debemos realizar la instalación."
La verdad es que no le entiendo muy bien quiere que en base a una distro. que elijamos creacemos otra distro. modificada con las espeficicaciones que ahi pide y ademas en un iso para instalarlo?

si es asi me gustaria que me ayudaran.

estare toda la noche pegado a la compu viendo como le hago ya que esto es para muy pronto.

agradeceria cualquier sugerencia y/o comentario.

por cierto estoy usando una distro. basada en ubuntu llamada "Tuquito".

estare esperando sus comentarios
Avatar de Usuario
hmg79
Forista Legendario
Forista Legendario
Mensajes: 2211
Registrado: Lun Mar 31, 2008 8:00 am

Re: Me ayudan con este proyecto porfavor

Mensaje por hmg79 » Sab Ene 16, 2010 7:15 pm

Si mal no recuerdo tuquito no esta basado en ubuntu, aunque utilice el sistema apt, para actualizar paquetes.-

Si vas a trabajar con la modificación de tuquito, utiliza garfio, que es el encargado de armar los CD, y te permite crear todas las modificaciones necesarias.-
Avatar de Usuario
hipersayan_x
Forista Legendario
Forista Legendario
Mensajes: 1905
Registrado: Vie Abr 27, 2007 7:00 am
Contactar:

Re: Me ayudan con este proyecto porfavor

Mensaje por hipersayan_x » Sab Ene 16, 2010 8:45 pm

"La distribución a instalarse deberá ser personalizada, de modo que al momento de arrancar el sistema operativo se muestre un mensaje donde se especifique los nombres y apellidos de los miembros del equipo de trabajo....
Probablemente, en la mayoría de los casos, solo será necesario modificar el código fuente del kernel."
:?: :?: :?: Tu profesor esta fumando cosas raras ::lol::
Modificar el kernel para mostrar un mensage de m... :?:
Cambiale la imagen de booteo del grub con el gimp, o mostrale un mensage usando kdialog o zenity cuando inicie el escritorio.

PD: NTC
Desarrollo en Qt: Qt Developer Network
Mis proyectos: github | SourceForge.net
Avatar de Usuario
Alfa-Beta
Forista Mayor
Forista Mayor
Mensajes: 685
Registrado: Mar Nov 29, 2005 8:00 am
Ubicación: Costa Rica

Re: Me ayudan con este proyecto porfavor

Mensaje por Alfa-Beta » Sab Ene 16, 2010 9:47 pm

Como bien dice hipersayan_x lo único que debes modificar para que te muestre mensajes al iniciar la carga del sistema operativo es el Grub, hay muchos tutoriales para modificarlo tanto en modo texto como gráfico solo pon personalizar grub en google u otro buscador.
Hardware: Athlon 64 X2 6000+, 2 Gbs Dual RAM 1000mhz, ATI HD 8450, Sound Blaster Audigy.
Sistema Operativo 32: Arch Linux 2008,06
Gestor de ventanas: Fluxbox.
Avatar de Usuario
shelllinux
Forista Menor
Forista Menor
Mensajes: 62
Registrado: Jue Mar 10, 2005 8:00 am

Re: Me ayudan con este proyecto porfavor

Mensaje por shelllinux » Sab Ene 16, 2010 10:01 pm

Que chistoso es ese profesor, jajja, no voy a decir que no se pudiera pero para eso tienes que tener bastante conocimiento en C++ y C para solo lograr que en el INIT salga algo parecido, pero es emjor que sigas los otros comentarios modificas el grub y listo...
Avatar de Usuario
passlogin
Forista Nuevo
Forista Nuevo
Mensajes: 10
Registrado: Lun Oct 05, 2009 7:00 am

Re: Me ayudan con este proyecto porfavor

Mensaje por passlogin » Dom Ene 17, 2010 12:04 pm

i me lo dice a mi.
si ya estamos pensando en buscar la forma de que habran un curso de verano para rescatar esta clase.
hipersayan_x escribió:
"La distribución a instalarse deberá ser personalizada, de modo que al momento de arrancar el sistema operativo se muestre un mensaje donde se especifique los nombres y apellidos de los miembros del equipo de trabajo....
Probablemente, en la mayoría de los casos, solo será necesario modificar el código fuente del kernel."
:?: :?: :?: Tu profesor esta fumando cosas raras ::lol::
Modificar el kernel para mostrar un mensage de m... :?:
Cambiale la imagen de booteo del grub con el gimp, o mostrale un mensage usando kdialog o zenity cuando inicie el escritorio.

PD: NTC
[/quote]

eso ya loo sabemos myu bien pero el echo es que aun con todoel proyecto hay que hacerlo.
Alfa-Beta escribió:Como bien dice hipersayan_x lo único que debes modificar para que te muestre mensajes al iniciar la carga del sistema operativo es el Grub, hay muchos tutoriales para modificarlo tanto en modo texto como gráfico solo pon personalizar grub en google u otro buscador.
Esto ya lo hice me quedo salvaje, para ser mi primera vez, =D> pero recalco el mensaje necesito que salga en el arranque del sistema operativo para se mas exacto despues del grub y es ahi donde estoy perdido ya que no se cual archivo hay que modificar si meter que despues tengo que compilar el kernel
Avatar de Usuario
hmg79
Forista Legendario
Forista Legendario
Mensajes: 2211
Registrado: Lun Mar 31, 2008 8:00 am

Re: Me ayudan con este proyecto porfavor

Mensaje por hmg79 » Dom Ene 17, 2010 1:53 pm

Ahhh, claro la tipica barra de progreso que en distros como ubuntu, y otras ya viene habilitado, por ese lado tenes varias alternativas y capas que se explico mal el profesor o ustedes lo entendieron mal, eso es el bootsplash del kernel, y tenes varias alternativas:

1.-Recompilar el kernel con el parche para bootsplash, lastimosamente esto ya se dejo de hacer hace algun tiempo, debido a que el desarrollador vio que existian alternativas mas simples y dejo de realizarlo.-
2.-Utilizar ya sea splashy o usplash que sustituyeron al tipico bootsplash, y tenes la ventaja de no necesitar recompilar el kernel.-

Ahora que si se explico bien es muy posible que el quisiera justamente que trabajen en el desarrollo de algo similar al bootsplash, y para eso si era necesario modificar el kernel.-

La pagina oficial del proyecto todavia sigue existiendo http://www.bootsplash.org/Welcome_to_th ... d_of_Linux.-
Avatar de Usuario
passlogin
Forista Nuevo
Forista Nuevo
Mensajes: 10
Registrado: Lun Oct 05, 2009 7:00 am

Re: Me ayudan con este proyecto porfavor

Mensaje por passlogin » Lun Ene 18, 2010 12:11 am

agradesco a todos por sus concejos pero auin sigo pegado.

consegui esto. supuetamente es el archivo donde uno puede hacer la modificacion pero lo hago no me da.

explicare mas detalladamente para ver si me entienden
/*solo en el boot buscar .config para modicicar el Kernel */
/* y le das make menuconfig */
/*
* misc.c
*
* This is a collection of several routines from gzip-1.0.3
* adapted for Linux.
*
* malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994
* puts by Nick Holloway 1993, better puts by Martin Mares 1995
* High loaded stuff by Hans Lermen & Werner Almesberger, Feb. 1996
*/
/*
* we have to be careful, because no indirections are allowed here, and
* paravirt_ops is a kind of one. As it will only run in baremetal anyway,
* we just keep it from happening
*/
#undef CONFIG_PARAVIRT
#ifdef CONFIG_X86_32
#define _ASM_X86_DESC_H 1
#endif
#ifdef CONFIG_X86_64
#define _LINUX_STRING_H_ 1
#define __LINUX_BITMAP_H 1
#endif

#include <linux/linkage.h>
#include <linux/screen_info.h>
#include <linux/elf.h>
#include <linux/io.h>
#include <asm/page.h>
#include <asm/boot.h>
#include <asm/bootparam.h>

/* WARNING!!
* This code is compiled with -fPIC and it is relocated dynamically
* at run time, but no relocation processing is performed.
* This means that it is not safe to place pointers in static structures.
*/

/*
* Getting to provable safe in place decompression is hard.
* Worst case behaviours need to be analyzed.
* Background information:
*
* The file layout is:
* magic[2]
* method[1]
* flags[1]
* timestamp[4]
* extraflags[1]
* os[1]
* compressed data blocks[N]
* crc[4] orig_len[4]
*
* resulting in 18 bytes of non compressed data overhead.
*
* Files divided into blocks
* 1 bit (last block flag)
* 2 bits (block type)
*
* 1 block occurs every 32K -1 bytes or when there 50% compression
* has been achieved. The smallest block type encoding is always used.
*
* stored:
* 32 bits length in bytes.
*
* fixed:
* magic fixed tree.
* symbols.
*
* dynamic:
* dynamic tree encoding.
* symbols.
*
*
* The buffer for decompression in place is the length of the
* uncompressed data, plus a small amount extra to keep the algorithm safe.
* The compressed data is placed at the end of the buffer. The output
* pointer is placed at the start of the buffer and the input pointer
* is placed where the compressed data starts. Problems will occur
* when the output pointer overruns the input pointer.
*
* The output pointer can only overrun the input pointer if the input
* pointer is moving faster than the output pointer. A condition only
* triggered by data whose compressed form is larger than the uncompressed
* form.
*
* The worst case at the block level is a growth of the compressed data
* of 5 bytes per 32767 bytes.
*
* The worst case internal to a compressed block is very hard to figure.
* The worst case can at least be boundined by having one bit that represents
* 32764 bytes and then all of the rest of the bytes representing the very
* very last byte.
*
* All of which is enough to compute an amount of extra data that is required
* to be safe. To avoid problems at the block level allocating 5 extra bytes
* per 32767 bytes of data is sufficient. To avoind problems internal to a
* block adding an extra 32767 bytes (the worst case uncompressed block size)
* is sufficient, to ensure that in the worst case the decompressed data for
* block will stop the byte before the compressed data for a block begins.
* To avoid problems with the compressed data's meta information an extra 18
* bytes are needed. Leading to the formula:
*
* extra_bytes = (uncompressed_size >> 12) + 32768 + 18 + decompressor_size.
*
* Adding 8 bytes per 32K is a bit excessive but much easier to calculate.
* Adding 32768 instead of 32767 just makes for round numbers.
* Adding the decompressor_size is necessary as it musht live after all
* of the data as well. Last I measured the decompressor is about 14K.
* 10K of actual data and 4K of bss.
*
*/

/*
* gzip declarations
*/
#define STATIC static

#undef memset
#undef memcpy
#define memzero(s, n) memset((s), 0, (n))

static void error(char *m);

/*
* This is set up by the setup-routine at boot-time
*/

static struct boot_params *real_mode; /* Pointer to real-mode data */
static int quiet;
static void *memset(void *s, int c, unsigned n);
void *memcpy(void *dest, const void *src, unsigned n);
static void __putstr(int, const char *);
#define putstr(__x) __putstr(0, __x)

#ifdef CONFIG_X86_64
#define memptr long
#else
#define memptr unsigned
#endif

static memptr free_mem_ptr;
static memptr free_mem_end_ptr;

static char *vidmem;
static int vidport;
static int lines, cols;

#ifdef CONFIG_KERNEL_GZIP
#include "../../../../lib/decompress_inflate.c"
#endif

#ifdef CONFIG_KERNEL_BZIP2
#include "../../../../lib/decompress_bunzip2.c"
#endif

#ifdef CONFIG_KERNEL_LZMA
#include "../../../../lib/decompress_unlzma.c"
#endif

static void scroll(void)
{
int i;

memcpy(vidmem, vidmem + cols * 2, (lines - 1) * cols * 2);
for (i = (lines - 1) * cols * 2; i < lines * cols * 2; i += 2)
vidmem = ' ';
}

static void __putstr(int error, const char *s)
{
int x, y, pos;
char c;

#ifndef CONFIG_X86_VERBOSE_BOOTUP
if (!error)
return;
#endif

#ifdef CONFIG_X86_32
if (real_mode->screen_info.orig_video_mode == 0 &&
lines == 0 && cols == 0)
return;
#endif

x = real_mode->screen_info.orig_x;
y = real_mode->screen_info.orig_y;

while ((c = *s++) != '\0') {
if (c == '\n') {
x = 0;
if (++y >= lines) {
scroll();
y--;
}
} else {
vidmem[(x + cols * y) * 2] = c;
if (++x >= cols) {
x = 0;
if (++y >= lines) {
scroll();
y--;
}
}
}
}

real_mode->screen_info.orig_x = x;
real_mode->screen_info.orig_y = y;

pos = (x + cols * y) * 2; /* Update cursor position */
outb(14, vidport);
outb(0xff & (pos >> 9), vidport+1);
outb(15, vidport);
outb(0xff & (pos >> 1), vidport+1);
}

static void *memset(void *s, int c, unsigned n)
{
int i;
char *ss = s;

for (i = 0; i < n; i++)
ss = c;
return s;
}

void *memcpy(void *dest, const void *src, unsigned n)
{
int i;
const char *s = src;
char *d = dest;

for (i = 0; i < n; i++)
d = s;
return dest;
}


static void error(char *x)
{
__putstr(1, "\n\n");
__putstr(1, x);
__putstr(1, "\n\n -- System halted");

while (1)
asm("hlt");
}

static void parse_elf(void *output)
{
#ifdef CONFIG_X86_64
Elf64_Ehdr ehdr;
Elf64_Phdr *phdrs, *phdr;
#else
Elf32_Ehdr ehdr;
Elf32_Phdr *phdrs, *phdr;
#endif
void *dest;
int i;

memcpy(&ehdr, output, sizeof(ehdr));
if (ehdr.e_ident[EI_MAG0] != ELFMAG0 ||
ehdr.e_ident[EI_MAG1] != ELFMAG1 ||
ehdr.e_ident[EI_MAG2] != ELFMAG2 ||
ehdr.e_ident[EI_MAG3] != ELFMAG3) {
error("Kernel is not a valid ELF file");
return;
}

if (!quiet)
putstr("Parsing ELF... ");

phdrs = malloc(sizeof(*phdrs) * ehdr.e_phnum);
if (!phdrs)
error("Failed to allocate space for phdrs");

memcpy(phdrs, output + ehdr.e_phoff, sizeof(*phdrs) * ehdr.e_phnum);

for (i = 0; i < ehdr.e_phnum; i++) {
phdr = &phdrs;

switch (phdr->p_type) {
case PT_LOAD:
#ifdef CONFIG_RELOCATABLE
dest = output;
dest += (phdr->p_paddr - LOAD_PHYSICAL_ADDR);
#else
dest = (void *)(phdr->p_paddr);
#endif
memcpy(dest,
output + phdr->p_offset,
phdr->p_filesz);
break;
default: /* Ignore other PT_* */ break;
}
}
}


asmlinkage void decompress_kernel(void *rmode, memptr heap,
unsigned char *input_data,
unsigned long input_len,
unsigned char *output)
{
int i = 0;
real_mode = rmode;

if (real_mode->hdr.loadflags & QUIET_FLAG)
quiet = 1;

if (real_mode->screen_info.orig_video_mode == 7) {
vidmem = (char *) 0xb0000;
vidport = 0x3b4;
} else {
vidmem = (char *) 0xb8000;
vidport = 0x3d4;
}

lines = real_mode->screen_info.orig_video_lines;
cols = real_mode->screen_info.orig_video_cols;

free_mem_ptr = heap; /* Heap */
free_mem_end_ptr = heap + BOOT_HEAP_SIZE;

if ((unsigned long)output & (MIN_KERNEL_ALIGN - 1))
error("Destination address inappropriately aligned");
#ifdef CONFIG_X86_64
if (heap > 0x3fffffffffffUL)
error("Destination address too large");
#else
if (heap > ((-__PAGE_OFFSET-(512<<20)-1) & 0x7fffffff))
error("Destination address too large");
#endif
#ifndef CONFIG_RELOCATABLE
if ((unsigned long)output != LOAD_PHYSICAL_ADDR)
error("Wrong destination address");
#endif

if (!quiet)
putstr("\nDecompressing Linux... ");
decompress(input_data, input_len, NULL, NULL, output, NULL, error);
parse_elf(output);
if (!quiet)
putstr("done.\nBooting the kernel.\n");
/* for( i = 0; i < 10000; i++ ){ */
putstr(" ***********************************************************************************\n");
putstr( " **********************************************************************************\n");
putstr( " ** UNIVERSIDAD NACIONAL DE INGENIERIA **\n");
putstr( " ** Arquitectura de Sistemas Operativos **\n");
putstr( " ** TUTOR: Narciso J. Aguilera **\n");
putstr( " ** Integrantes: **\n");
putstr( " ** Carlos Rios Canales **\n");
putstr( " ** Edwin gutierrez **\n");
putstr( " ** **\n");
putstr( " ** **\n");
putstr( " **********************************************************************************\n");
putstr( " **********************************************************************************\n");
}
return;
}


Este es el codigo fuente de un archivo que se llama misc.c este se encuentra dentro de cualquier kernel de Linux, la version que estoy usando de linux tuquito trabaja lo con la version 2.6.28-11.generic
este archivo se puede localizar en la direccion arch/arch/x86/boot/compressed/misc.c
NOTA: puede ser que entre versiones de kernel elx86 cambie pero el resto es =

Si se fijan en la inferrior del codigo casi al final. Exactamente posterio a la linea de comandos putstr("done.\nBooting the kernel.\n"); y antes le la funcion return hay unas modiicaciones que se supone deberian de funcionar.

El objetivo de modificar esa parte es que despues de la linea de comando putstr("done.\nBooting the kernel.\n"); se comienza a cargar el kernel de linux. y es ahi donde con ayuda del for deberia de verse el mensaje.

Pero si modifico el archivo antes de compilarlo me sale malo y no puedo modificarlo despues de compilado el kernel ya que me parece que no tendria logica.

bueno ahi esta es en concreto lo que deseo para que tengan una mejor idea de como deberia quedar aqui les dejo esta imagen
Imagen

si este fuece una imagen de mi arranque de O.S. antes del comienzo de la carga del kernel deberia aparecr mi mensaje
Última edición por Deckon el Lun Ene 18, 2010 12:11 am, editado 1 vez en total.
Razón: Mensaje editado por el moderador por incluir el screenshot directamente y no una miniatura, por favor, revisa el post al principio del foro para saber como enviar mensajes con screenshots.
Avatar de Usuario
shelllinux
Forista Menor
Forista Menor
Mensajes: 62
Registrado: Jue Mar 10, 2005 8:00 am

Re: Me ayudan con este proyecto porfavor

Mensaje por shelllinux » Lun Ene 25, 2010 9:45 am

Ok, por lo visto parace ser que tu profesor si puso ese reto, es porque talvez el sabe como hacerlo, ahora, yo si habia entendido lo que quierias decir, por eso te dije, que tendrias que tener conocimientos de C y C++, para lograrlo, eso tiene que ver con el INIT, busca un modificador de init, si quieres voy a tomar esto como un reto tambien para mi, digo un reto debido a que una vez en los anos antanos, vi una opciones que me permitia modificar mi entrada, pero eso fue ya hace muchos anos, alrededor del 1998.

Bueno, como mencioe tratare de buscar algo por ahi tambien yo y luego te posteo.

Editado -- Lun Ene 25, 2010 5:45 pm --

Bueno talvez este no sea la solucion perfecta pero es una forma mas, y es nada mas que cambiarle el logo de linux, puedes poner una image con algo tuyo nose, lo que quieras aqui esta el link donde lo encontre:

http://cbittachira.blogspot.com/2006/05 ... linux.html
Avatar de Usuario
niky45
Forista Ancestral
Forista Ancestral
Mensajes: 9186
Registrado: Jue Abr 12, 2007 7:00 am
Ubicación: tras la pantalla (...)
Contactar:

Re: Me ayudan con este proyecto porfavor

Mensaje por niky45 » Mié Ene 27, 2010 3:55 pm

solo aniade un script al init de arranque. cuando tenga mas tiempo te lo miro a fondo, porque no es dificil.

PD: compilar ?? tu profesor os esta tomando el pelo.... :?
#446716
>>"Linux: the operating system with a CLUE... Command Line User Environment".
(seen in a posting in comp.software.testing)

[ DNFD ] - [ F4A ] - [ dotfiles ]
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje