<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://familien-hartvig.dk/wiki/index.php?action=history&amp;feed=atom&amp;title=Root_on_NFS</id>
	<title>Root on NFS - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://familien-hartvig.dk/wiki/index.php?action=history&amp;feed=atom&amp;title=Root_on_NFS"/>
	<link rel="alternate" type="text/html" href="http://familien-hartvig.dk/wiki/index.php?title=Root_on_NFS&amp;action=history"/>
	<updated>2026-06-16T23:17:31Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.15</generator>
	<entry>
		<id>http://familien-hartvig.dk/wiki/index.php?title=Root_on_NFS&amp;diff=84&amp;oldid=prev</id>
		<title>Lars: Created page with &quot;== About ==  An [http://en.wikipedia.org/wiki/Embedded_system embedded system] may not have a disk, an [http://en.wikipedia.org/wiki/Integrated_Drive_Electronics IDE] interfac...&quot;</title>
		<link rel="alternate" type="text/html" href="http://familien-hartvig.dk/wiki/index.php?title=Root_on_NFS&amp;diff=84&amp;oldid=prev"/>
		<updated>2012-02-03T09:16:42Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== About ==  An [http://en.wikipedia.org/wiki/Embedded_system embedded system] may not have a disk, an [http://en.wikipedia.org/wiki/Integrated_Drive_Electronics IDE] interfac...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== About ==&lt;br /&gt;
&lt;br /&gt;
An [http://en.wikipedia.org/wiki/Embedded_system embedded system] may not have a disk, an [http://en.wikipedia.org/wiki/Integrated_Drive_Electronics IDE] interface, or even a [http://en.wikipedia.org/wiki/Peripheral_Component_Interconnect PCI] bus. Even if it does, during development it may be too unstable to use the disk, and a [http://en.wikipedia.org/wiki/Ramdisk ramdisk] may be too small to include all of the necessary utilities or too large (as a part of the [http://en.wikipedia.org/wiki/Kernel_image kernel] image) to allow for rapid turnaround during testing and development. An [http://en.wikipedia.org/wiki/Network_File_System_(protocol) NFS] root allows quick [http://en.wikipedia.org/wiki/Kernel_image kernel] downloads, helps ensure [http://en.wikipedia.org/wiki/Filesystem filesystem] integrity (since the server is basically impervious to crashes by the client), and provides virtually infinite storage.&lt;br /&gt;
&lt;br /&gt;
If we use [http://en.wikipedia.org/wiki/Network_File_System_(protocol) NFS] instead of [http://en.wikipedia.org/wiki/Romfs ROMFS] modification to the player's [http://en.wikipedia.org/wiki/Firmware firmware] can now be done on the [http://en.wikipedia.org/wiki/Network_File_System_(protocol) NFS] server. No more flash cycles necessary. Switching the player off and on again will activate the changes.&lt;br /&gt;
&lt;br /&gt;
'''All code examples on this page assume that you are doing this on a system running Linux.''' Use [http://en.wikipedia.org/wiki/Windows VmWare Player] to run Linux as a guest inside a [http://en.wikipedia.org/wiki/Windows Windows] system.&lt;br /&gt;
&lt;br /&gt;
== Preparing KiSS Firmware ==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/KISS_Technology KiSS] players use the [http://en.wikipedia.org/wiki/Romfs ROMFS] [http://en.wikipedia.org/wiki/File_system filesystem] for their [http://en.wikipedia.org/wiki/Flash_memory flash memory]. The [http://en.wikipedia.org/wiki/Boot_loader boot loader] reads and starts the [http://en.wikipedia.org/wiki/Linux_kernel Linux kernel] from it. The [http://en.wikipedia.org/wiki/Linux_kernel Linux kernel] initiializes the hardware and than mounts the [http://en.wikipedia.org/wiki/Romfs ROMFS] as its root [http://en.wikipedia.org/wiki/Filesystem filesystem] and starts [http://en.wikipedia.org/wiki/Init /sbin/init] from it. On [http://en.wikipedia.org/wiki/KISS_Technology KiSS] players the [http://en.wikipedia.org/wiki/Linux_kernel Linux kernel] starts the main DVD player application (we call it ''kissapp'').&lt;br /&gt;
&lt;br /&gt;
The [http://en.wikipedia.org/wiki/Linux_kernel Linux kernel] used in [http://en.wikipedia.org/wiki/KISS_Technology KiSS] players has not been configured for [http://en.wikipedia.org/wiki/Network_File_System_(protocol) NFS]. Even worse, [http://en.wikipedia.org/wiki/KISS_Technology KiSS] developers commented out parts of the [http://en.wikipedia.org/wiki/Network_File_System_(protocol) NFS] code in the source. [http://www.jacek.it.pl/kiss/nfs/#patch These changes have to be undone first.] Due to a [http://mailman.uclinux.org/pipermail/uclinux-dev/2004-August/028060.html known bug] in uCLinux kernel's do_mount.c:mount_root() it will still mount root from flash. The [http://en.wikipedia.org/wiki/Network_File_System_(protocol) NFS] over [http://en.wikipedia.org/wiki/Transmission_Control_Protocol TCP] code is incomplete.&lt;br /&gt;
&lt;br /&gt;
Next step is to configure the [http://en.wikipedia.org/wiki/Linux_kernel Linux kernel] to mount its root [http://en.wikipedia.org/wiki/Filesystem filesystem] from a [http://en.wikipedia.org/wiki/Network_File_System_(protocol) NFS] server. The following options are required to be set&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CONFIG_IP_PNP=y&lt;br /&gt;
CONFIG_IP_PNP_DHCP=y&lt;br /&gt;
CONFIG_ROOT_NFS=y&lt;br /&gt;
CONFIG_CMDLINE=&amp;quot;root=/dev/nfs rootfstype=nfs ip=dhcp&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next step is to [[Build_kernel|rebuild the kernel]], copy the resulting linux.bin.gz to the [http://en.wikipedia.org/wiki/Romfs ROMFS], [[The_Freeze_Fix_Project#Building_a_Firmware_Image|rebuild]] and [[Firmware_update|flash]] [http://en.wikipedia.org/wiki/Firmware firmware].&lt;br /&gt;
&lt;br /&gt;
Next time the player is powered on it will ask for an [http://en.wikipedia.org/wiki/IP_address IP address] via [http://en.wikipedia.org/wiki/DHCP DHCP]. After it got its [http://en.wikipedia.org/wiki/IP_address IP address], it will mount its root [http://en.wikipedia.org/wiki/Filesystem filesystem] from the [http://en.wikipedia.org/wiki/Network_File_System_(protocol) NFS] server instead of the flash.&lt;br /&gt;
&lt;br /&gt;
'''ATTENTION:''' from now on your player will not work without the [http://en.wikipedia.org/wiki/Network_File_System_(protocol) NFS] server. But you can anytime [[Firmware_update|flash]] original [http://en.wikipedia.org/wiki/Firmware firmware] to get rid of the [http://en.wikipedia.org/wiki/Network_File_System_(protocol) NFS] root.&lt;br /&gt;
&lt;br /&gt;
== Preparing DHCP ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# vi /etc/dhcpd.conf&lt;br /&gt;
 host kiss {&lt;br /&gt;
  hardware ethernet 00:d0:e0:01:02:03;&lt;br /&gt;
  fixed-address 10.0.0.100;&lt;br /&gt;
  option host-name &amp;quot;kiss&amp;quot;;&lt;br /&gt;
  ddns-hostname &amp;quot;kiss&amp;quot;;&lt;br /&gt;
  next-server 10.0.0.1;&lt;br /&gt;
  option root-path &amp;quot;/home/kiss/root,v3,hard,nolock,tcp,timeo=15,retrans=10&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
# sh /etc/init.d/dhcpd restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adapt the values to your needs. It is recommended to configure your player&lt;br /&gt;
with fixed [http://en.wikipedia.org/wiki/Dhcp IP address] since the [http://en.wikipedia.org/wiki/Dhcp DHCP] request issued by the ''kissapp'' will&lt;br /&gt;
break your [http://en.wikipedia.org/wiki/Network_File_System_(protocol) NFS] connection for a short time. Often this is enough to panic the player.&lt;br /&gt;
&lt;br /&gt;
== Preparing NFS ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# vi /etc/exports&lt;br /&gt;
/home/kiss/root   10.0.0.100(rw,async,no_root_squash,no_subtree_check)&lt;br /&gt;
# exportfs -rv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preparing Root ==&lt;br /&gt;
&lt;br /&gt;
Extract the romfs from the [http://en.wikipedia.org/wiki/Firmware firmware] ISO ''firmware.iso'' to ''/home/kiss/root''. [http://en.wikipedia.org/wiki/Superuser Superuser] (root) rights are required to do this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# export DIR=/tmp/kiss&lt;br /&gt;
# mkdir -p ${DIR} ${DIR}/mount ${DIR}/cdrom&lt;br /&gt;
# mount -t iso9660 -o ro,loop firmware.iso ${DIR}/mount&lt;br /&gt;
# (cd ${DIR}/mount; tar cf - .) | (cd ${DIR}/cdrom; tar xf -)&lt;br /&gt;
# umount ${DIR}/mount&lt;br /&gt;
# mount -t romfs -o ro,loop ${DIR}/cdrom/romfs.bin ${DIR}/mount&lt;br /&gt;
# (cd ${DIR}/mount; tar cf - .) | (cd /home/kiss/root; tar xf -)&lt;br /&gt;
# umount ${DIR}/mount&lt;br /&gt;
# rm -rf {DIR}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Here you will find [http://en.wikipedia.org/wiki/Firmware firmware] [http://en.wikipedia.org/wiki/ISO_image ISO images] with NFS pre-configured. Report any problem with it in [http://www.mpcclub.com/modules.php?name=Forums&amp;amp;file=viewtopic&amp;amp;t=18133 ''Stage2 bug reporting'' thread] at the [http://www.mpcclub.com/modules.php?name=Forums&amp;amp;file=viewforum&amp;amp;f=101 ''Stage2'' forum].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ Firmware ISO images&lt;br /&gt;
! Player || Comment || Download&lt;br /&gt;
|-&lt;br /&gt;
| DP508 || based on original stage2 1.0 || [[Media:Dp508_stage2_nfsroot.zip‎|dp508_stage2_nfsroot.zip‎]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lars</name></author>
		
	</entry>
</feed>