Blackhold

Instalar debian en una pcengines APU1d4

Posted on abril 24th, 2015 by admin

Hoy me han regalado una rosa y me han traído la placa PCEngines APU1d4, como una buena friki al momento que me han regalado la rosa he estado mas pendiente de la caja blanca que traía el portador que de la propia rosa :P lo admito, me pierde la tecnología xD

AjG_ANsHTjjF011HMcnmKEwljKh0ggWEBTXBMYl-LsJ6

En la caja venía la placa y un disco mSATA de 16Gb, pero faltaban las tarjetas, pero al estar desmontando un portátil me he percatado que las tarjetas de portátil también me sirven, así que vamos a hacer la prueba con unas intel, que necesitan firmware privativo y no tengo claro que las pueda poner en modo de punto de acceso. La elección es una tarjeta atheros, pero aún estoy investigando cuál es la que mas que conviene para lo que quiero hacer!

photo32009721698429475

photo32009721698429476

En una web leí que una cosa que se puede hacer es instalar el sistema operativo en el disco mSATA, pero quiero hacer la instalación en la placa directamente y como parece que la BIOS soporta arranque por USB, vamos a usar un pincho USB para hacer la instalación.

Primero de todo preparamos el pincho

root@carboni:/home/laura# dd if=/dev/zero of=/dev/sdb bs=512 count=1
root@carboni:/home/laura# gparted

Con gparted creamos una tabla de particiones msdos y una partición ext4 que ocupe todo el disco, a continuación seguimos con zcat y todos los pasos para hacer una instalación compatible por puerto serie (COM). Si os fijáis estamos trabajando ya con la versión de 64 bits :)

root@carboni:/home/laura/isos# mkdir debian_jessie_img_64
root@carboni:/home/laura/isos# cd debian_jessie_img_64/
root@carboni:/home/laura/isos/debian_jessie_img_64# wget -r -nH --cut-dirs=7 --no-parent --reject="index.html*" http://ftp.es.debian.org/debian/dists/jessie/main/installer-amd64/current/
root@carboni:/home/laura/isos/debian_jessie_img_64# cd hd-media
root@carboni:/home/laura/isos/debian_jessie_img_64/hd-media# zcat boot.img.gz > /dev/sdb1

Montamos la partición y seguimos con los pasos, fijaos que si habéis seguido los otros post, ahora el punto de montaje es sdb1 en lugar de sdc1

root@carboni:/home/laura/isos/debian_jessie_img_64/hd-media# mount -t auto /dev/sdb1 /media/usb -o rw
root@carboni:/home/laura/isos/debian_jessie_img_64/hd-media# cd /media/usb

Copiamos el fichero netboot.tar.gz, lo descomprimimos y preparamos el entorno de arranque y de grub (voy a evitar usar repositorios externos no oficiales)

root@carboni:/media/usb# rm syslinux.cfg
root@carboni:/media/usb# cp /home/laura/isos/debian_jessie_img_64/netboot/netboot.tar.gz .
root@carboni:/media/usb# tar xvzf netboot.tar.gz
root@carboni:/media/usb# vi syslinux.cfg
# D-I config version 2.0
# search path for the c32 support libraries (libcom32, libutil etc.)
path debian-installer/amd64/boot-screens/
include debian-installer/amd64/boot-screens/menu.cfg
default debian-installer/amd64/boot-screens/vesamenu.c32
prompt 0
timeout 0

Reemplazamos el contenido de syslinux.cfg por éste mostrado. A partir de aquí ya es seguir el manual del otro día

root@carboni:/media/usb# mkdir -p /media/usb/boot/grub /media/usb/boot/iso
root@carboni:/media/usb# cd boot/grub/
root@carboni:/media/usb/boot/grub# vi grub.cfg
serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1

terminal_input serial
terminal_output serial

set timeout=20
set default=0

menuentry "Debian installer" {
  echo    'Loading GNU/Linux ...'
  linux /debian-installer/amd64/linux console=ttyS0,115200n8
  echo    'Loading initial ramdisk ...'
  initrd /debian-installer/amd64/initrd.gz
}

Atención que cambia la velocidad del COM respeto la Alix 2d2, ahora es 115200!

Instalamos grub en el pincho usb y desmontamos el pincho usb

root@carboni:/media/usb/boot/grub# cd
root@carboni:~# grub-install --no-floppy --root-directory=/media/usb/ /dev/sdb
Installing for i386-pc platform.
Ha acabat la instal·lació. No s'ha reportat cap error.
root@carboni:~# umount /media/usb

Si al cargar grub os encontráis con alguno de estos mensajes:

msgid "Attempting to install GRUB to a disk with multiple partition labels or both partition label and filesystem.  This is not supported yet."
msgstr "Intentando instalar GRUB en un disco con múltiples etiquetas de partición o con etiqueta de partición y sistema de ficheros.  Todavía no está soportado."

root@carboni:~# grub-install --no-floppy --root-directory=/media/usb/ /dev/sdb
Installing for i386-pc platform.
grub-install: avís: Esteu intentant instal·lar el GRUB en un disc amb múltiples etiquetes de particions. Encara no se'n permet l'ús..
grub-install: avís: No s'ha pogut incrustar. El GRUB només es pot instal·lar d'aquesta manera fent servir llistes de blocs. De tota manera, les llistes de blocs NO SÓN FIABLES i es desaconsella la seva utilització..
grub-install: error: no continuarà amb la llista de blocs.

Probad esto:

root@carboni:~# grub-install --force --skip-fs-probe --no-floppy --root-directory=/media/usb/ /dev/sdb
Installing for i386-pc platform.
grub-install: avís: Esteu intentant instal·lar el GRUB en un disc amb múltiples etiquetes de particions. Encara no se'n permet l'ús..
grub-install: avís: No s'ha pogut incrustar. El GRUB només es pot instal·lar d'aquesta manera fent servir llistes de blocs. De tota manera, les llistes de blocs NO SÓN FIABLES i es desaconsella la seva utilització..
Ha acabat la instal·lació. No s'ha reportat cap error.

Una vez instalado grub en el pincho usb vamos a iniciar la consola para conectar con la placa APU1d4 :)

root@carboni:/home/laura# gtkterm -p /dev/ttyUSB0 -w Xon -s 115200

Pinchamos el pincho, la conectamos y que empiece la magia! :)

Con la instalación simplemente decir que en comparación a la Alix 2d2 con compact flash, la velocidad de proceso y escritura a disco se nota muchísimo! :D

photo32009721698429477

Actualización: He entrado en pánico al ver que la consola no soltaba nada (sólo Loading inicial ramdisk … y ahí se quedaba), pero al ver los leases del dhcp se me ha ocurrido probar si hacía ping la placa, que por algun motivo el grub no cargase el interfaz de consola, y parece que así es! estoy entro de la apu1d4

laura@carboni:~$ ssh blackhold@192.168.1.80
blackhold@192.168.1.80's password: 

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
blackhold@apu1d4:~$ su
Password: 
root@apu1d4:/home/blackhold# free -m
             total       used       free     shared    buffers     cached
Mem:          3933        107       3826          8          7         42
-/+ buffers/cache:         57       3876
Swap:          669          0        669
root@apu1d4:/home/blackhold# cat /proc/cpuinfo
processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 20
model		: 2
model name	: AMD G-T40E Processor
stepping	: 0
microcode	: 0x5000101
cpu MHz		: 800.000
cache size	: 512 KB
physical id	: 0
siblings	: 2
core id		: 0
cpu cores	: 2
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 6
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni monitor ssse3 cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch ibs skinit wdt arat hw_pstate npt lbrv svm_lock nrip_save pausefilter vmmcall
bogomips	: 2000.10
TLB size	: 1024 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 36 bits physical, 48 bits virtual
power management: ts ttp tm stc 100mhzsteps hwpstate

processor	: 1
vendor_id	: AuthenticAMD
cpu family	: 20
model		: 2
model name	: AMD G-T40E Processor
stepping	: 0
microcode	: 0x5000101
cpu MHz		: 800.000
cache size	: 512 KB
physical id	: 0
siblings	: 2
core id		: 1
cpu cores	: 2
apicid		: 1
initial apicid	: 1
fpu		: yes
fpu_exception	: yes
cpuid level	: 6
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni monitor ssse3 cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch ibs skinit wdt arat hw_pstate npt lbrv svm_lock nrip_save pausefilter vmmcall
bogomips	: 2000.10
TLB size	: 1024 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 36 bits physical, 48 bits virtual
power management: ts ttp tm stc 100mhzsteps hwpstate

Para hacer que grub suelte contenido por la pantalla vamos a modificar grub.cfg y añadirle que escupe cosas por la pantalla

root@apu1d4:/home/blackhold# cd /boot/grub/
root@apu1d4:/boot/grub# chmod +w grub.cfg
root@apu1d4:/boot/grub# vi grub.cfg
serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal_input serial
terminal_output serial
if [ "${recordfail}" = 1 ] ; then
  set timeout=-1
else
  if [ x$feature_timeout_style = xy ] ; then
    set timeout_style=menu
    set timeout=5
  # Fallback normal timeout code in case the timeout_style feature is
  # unavailable.
  else
    set timeout=5
  fi
fi
play 480 440 1
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
        set gfxpayload="${1}"
}
set linux_gfx_mode=
export linux_gfx_mode
menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-ae5cc64c-a0a9-420c-89a9-5164ad86607e' {
        load_video
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  ae5cc64c-a0a9-420c-89a9-5164ad86607e
        else
          search --no-floppy --fs-uuid --set=root ae5cc64c-a0a9-420c-89a9-5164ad86607e
        fi
        echo    'Loading Linux 3.16.0-4-amd64 ...'
        linux   /boot/vmlinuz-3.16.0-4-amd64 root=UUID=ae5cc64c-a0a9-420c-89a9-5164ad86607e ro console=ttyS0,115200n8  quiet
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-3.16.0-4-amd64
}

Si nos fijamos a la línea 4 empezando por abajo hemos añadido “console=ttyS0,115200n8”.

Guardamos los cambios, volvemos a dejar los permisos bien y actualizamos grub

root@apu1d4:/boot/grub# chmod -w grub.cfg
root@apu1d4:/boot/grub# update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.16.0-4-amd64
Found initrd image: /boot/initrd.img-3.16.0-4-amd64
done

Al ejecutar update-grub se carga la configuración de “console=ttyS0,115200n8”, así que lo que tenemos que hacer es modificar el fichero /etc/default/grub y cambiar la línea GRUB_CMDLINE_LINUX_DEFAULT para que nos quede así:

GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0,115200n8 quiet"

En este mismo fichero encontramos otra cosa chula para hacer un poco el friki y aprovechando que la placa lleva un altavoz majísimo vamos a darle un poco de uso ;)

Editamos el fichero /etc/default/grub

# Uncomment to get a beep at grub start
GRUB_INIT_TUNE="480 440 1"
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1"

Las dos líneas de abajo ya estaban descomentadas.

Si somos un poco frikis podemos poner un tune personalizado :P por ejemplo

GRUB_INIT_TUNE="480 440 4 440 4 440 4 349 3 523 1 440 4 349 3 523 1 440 8 659 4 659 4 659 4 698 3 523 1 415 4 349 3 523 1 440 8"

Después de aplicar los cambios recordad en hacer un update-grub.

« »

guy fawkes