How to Install NethServer (or CentOS) into PC Engine

#Installing NethServer into a [PC Engines APU][1]

  1. Create and Configure the PXEServer
  2. Boot the the PC Engine
  3. Install NethServer over CentOS

##Install CentOS on APU
This guide will help you install a CentOS 6.6 PXE server, to install CentOS 6.6 on a APU PC Engine’s, after that you will be able to follow docs.nethserver.org/en/latest/installation.html#install-on-centos.

###Install a minimal CentOS 6.6 than Install the needed for the PXEServer
yum install tftp-server syslinux httpd dhcp

###Configure the xinetd TFTP service

vi /etc/xinetd.d/tftp.
\# default: off
\# description: The tftp server serves files using the trivial file transfer \
\#	protocol.  The tftp protocol is often used to boot diskless \
\#	workstations, download configuration files to network-aware printers, \
\#	and to start the installation process for some operating systems.
service tftp
{
	socket_type		= dgram
	protocol		= udp
	wait			= yes
	user			= root
	server			= /usr/sbin/in.tftpd
	**server_args		= -s /tftpboot**
	**disable			= no**
	per_source		= 11
	cps			= 100 2
	flags			= IPv4
}

###Setup TFTP directory and files

mkdir -p /tftpboot/pxelinux.cfg
mkdir -p /var/www/html/CentOS/6.6
cp /usr/share/syslinux/pxelinux.0 /tftpboot/
cp /usr/share/syslinux/menu.c32 /tftpboot/
cp /usr/share/syslinux/memdisk /tftpboot/
cp /usr/share/syslinux/mboot.c32 /tftpboot/
cp /usr/share/syslinux/chain.c32 /tftpboot/

###Edit PXE default

vi /tftpboot/pxelinux.cfg/default
serial 0 115200
default centos-serial
prompt 0
timeout 0

label centos-serial
  kernel http://192.168.1.5/CentOS/6.6/images/pxeboot/vmlinuz console=ttyS0,115200n8
  append initrd=http://192.168.1.5/CentOS/6.6/images/pxeboot/initrd.img method=http://192.168.1.5/CentOS/6.6 devfs=nomount console=ttyS0,115200n8

###Download and mount the CentOS minimal iso and mount this file.

cd /var/tmp
wget http://archive.kernel.org/centos-vault/6.6/isos/x86_64/CentOS-6.6-x86_64-minimal.iso
mount -o loop /var/tmp/CentOS-6.6-x86_64-minimal.iso /var/www/html/CentOS/6.6/

###Configure DHCPd

vi /etc/dhcp/dhcpd.conf. Change your domain, nameservers and ip-adresses.
\# dhcpd.conf
\#
\# option definitions common to all supported networks...
option domain-name "yourdomain.com";
option domain-name-servers ns1-ip-address, ns2-ip-address;
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
authoritative;
log-facility local7;
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.110;
  **option routers 192.168.1.1;**
  allow booting;
  allow bootp;
  **next-server 192.168.1.5;**
  filename "pxelinux.0";
}
option option-128 code 128 = string;
option option-129 code 129 = text;

###Configure SE Linux read/write rights to the tftpboot directory.

yum -y install policycoreutils-python
semanage fcontext -a -t tftpdir_rw_t '/tftpboot(/.*)?'
restorecon -R -v /tftpboot

###Allow http, tftp and dhcp traffic

vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -p udp --dport 69 -j ACCEPT
-A INPUT -i eth0 -p udp --dport 67:68 --sport 67:68 -j ACCEPT

###Add tftp conntrack module

vi /etc/sysconfig/iptables-config
IPTABLES_MODULES="ip_conntrack_tftp"

###Configure services to start at boot, and start services.

chkconfig xinetd on
chkconfig httpd on
chkconfig dhcpd on
service iptables restart
service xinetd start
service httpd start
service dhcpd start

##Install CentOS on the APU

  1. Plug the Serial Cable, i’m my case screen : /dev/ttyUSB0 115200
  2. Fire the PC Engine
  • Press F12 and activate the Netboot
  1. AHCI/0: SuperSSpeed S328 16GB ATA-7 Hard-Disk (15258 MiByte
    ** 2. iPXE (PCI 00:00.0)**
  2. Payload [setup]
  3. Payload [memtest]

####Select iPXE
net0: 00:0d:b9:33:CA:FE using rtl8168 on PCI01:00.0 (open)
[Link:down, TX:0 TXE:0 RX:0 RXE:0]
[Link status: Down (http://ipxe.org/38086101)]
Waiting for link-up on net0… ok
Configuring (net0 00:0d:b9:33:CA:FE)… ok
net0: 192.168.1.100/255.255.255.0 gw 192.168.1.1
Next server: 192.168.1.5
Filename: pxelinux.0
tftp://192.168.1.5/pxelinux.0… ok

PXELINUX 4.02 0x534d43b1 Copyright Β© 1994-2010 H. Peter Anvin et al
Loading http://192.168.1.5/CentOS/6.6/images/pxeboot/vmlinuz…
Loading http://192.168.1.5/CentOS/6.6/images/pxeboot/initrd.img…
…
The system will now boot the CentOS text installer.
Select β€œEnglish” using tab/spacebar.
Select β€œeth0”.
Select ipv4 (and ipv6 if needed).
Network manager will configure eth0 (dhcp).
Choose VNC installer or text based… lets try VNC.
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ Would you like to use VNC? β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Text mode provides a limited set of installation β”‚
β”‚ options. It does not allow you to specify your β”‚
β”‚ own partitioning layout or package selections. β”‚
β”‚ Would you like to use VNC mode instead? β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ Start VNC β”‚ β”‚ Use text mode β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Choose a VNC password… or none…
19:36:19 Please manually connect your vnc client to 192.168.1.101:1 to begin the install.
Press for a shell
19:36:20 Starting graphical installation.
Connect with a VNC viewer to 192.168.1.100:1
And here it is… the graphical installer! Have fun with CentOS on APU :slight_smile:

##After the reboot
you’ll be able to install NethServer by following : docs.nethserver.org/en/latest/installation.html#install-on-centos.
[1]: http://www.pcengines.ch/apu.htm

1 Like

Great Man , but does it enought APU for normal work of NS ? How about Ethernet (all 3 ports works corect )?

I use 2Ethernets one for WAN and the other for LAN
You could use the third one as a DMZ

It could also being use as a Personal Home Server, like a replacement of Yunohost :wink:

they pingback : http://pcengines.ch/howto.php#images

As far as i know it is very expensive board , Raspberry Pi is much cheaper :slight_smile:

130CHF with a SSD 16GB 2GB of RAM and a AMD Geode 600Mhz

I don’t know about Raspi2 but Raspi B you have a SDCard as HD, 500Mhz, 1xNIC and 512MB of RAM for around 80CHF

I have this comment in my PXE default (running on NethServer):

# Set "console 0" for serial console
# hanging at boot (i.e. apu). 
#
# CONSOLE: If flag_val is 0, disable output to the normal video console. 
#   If flag_val is 1, enable output to the video console (this is the default.) 
#   Some BIOSes try to forward this to the serial console
#   which can make a total mess of things, so this option lets 
#   you disable the video console on these system
#
console 1

You need this to offer a menu for PXE install (I use it to install different OS). And I have a network rescue image for error recovery.

you means console 0 should be in /tftpboot/pxelinux.cfg/default in the kernel line ?
do you have a concrete exemple, because i’m not sure I understand.

console 0 should be at top of pxelinux.cfg/default to be able to display a boot menu via pxe.
Since you don’t have a menu (pxe install only of nethserver) you don’t need it.

So you propose to replace serial 0 by console 0
or just add console 0 before serial 0 ?

Usually i’m using this over the Net with VNC so no serial / console

No, I just wanted to add one information about a problem that APU has with syslinux. No modifications needed to your howto. But if someone find that its APU hangs, here he will find the solution (adding a line β€œconsole 0”).

2 Likes

@JOduMonT you could append @filippo_carletti’s information as a small note to your howto :pencil:

Good morning. Is it possible to have an .img of the installation? I have an APU mb, but I’m not so skilled to prepare everything…

You don’t need an img, really. Boot from usb and adjust the syslinux command line as pre instructions above. I’ve used this method many times.

@Riccardo_F_Capra
Also worth to try
install Nethserver as a VirtualMachine
than boot your VM with GRML or any livecd
and dd over ssh with something like this :

dd if=/dev/$LocalSourceHD | ssh -c'blowfish' root@$PCEngineIP 'dd of=/dev/$DestinationHD'

I did something like this for CloudProvider don’t allow to mount a CDROM and it works well.
Now don’t forget, your $LocalSourceHD need to be smaller than your $DestinationHD
It easy to grow it after; LVM, xfs or ext4 don’t really matter

I personally never try with a PCEngine but; it might not work because the HD controller.

Last but not least

You could connect a SATA drive to your board