All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] Warn the user about the usage of output/target as the root filesystem
@ 2012-11-17 13:52 Thomas Petazzoni
  2012-11-17 13:59 ` Gustavo Zacarias
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Thomas Petazzoni @ 2012-11-17 13:52 UTC (permalink / raw)
  To: buildroot

A very common mistake done by our users is that they use
output/target/ directory as their root filesystem. Even though this is
loudly documented in our Buildroot manual, people don't read
documentation, so it is not sufficient.

This patch adds a text file named
output/target/THIS_IS_NOT_YOUR_ROOT_FILESYSTEM which explains why
output/target isn't appropriate to use as the root filesystem. The
process is:

 * At the beginning of the build, right after the skeleton has been
   copied, support/misc/target-dir-warning.txt is copied to
   output/target/THIS_IS_NOT_YOUR_ROOT_FILESYSTEM

 * In the filesystem images creation code, this file is removed before
   launching fakeroot, and restored right after that, so that this
   file is not present in the generated root filesystem images.

Note that the file has not been added to the default skeleton for two
reasons:

 * It would have annoying to have in our source tree a file named in
   capital letters inside system/skeleton/

 * The proposed way works even if the user uses a custom skeleton.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Juha Lumme <juha.lumme@gmail.com>
---
 Makefile                            |    5 +++++
 fs/common.mk                        |    2 ++
 support/misc/target-dir-warning.txt |   29 +++++++++++++++++++++++++++++
 3 files changed, 36 insertions(+)
 create mode 100644 support/misc/target-dir-warning.txt

diff --git a/Makefile b/Makefile
index c526fe1..3e7d520 100644
--- a/Makefile
+++ b/Makefile
@@ -269,6 +269,10 @@ LEGAL_LICENSES_TXT=$(LEGAL_INFO_DIR)/licenses.txt
 LEGAL_WARNINGS=$(LEGAL_INFO_DIR)/.warnings
 LEGAL_REPORT=$(LEGAL_INFO_DIR)/README
 
+# Location of a file giving a big fat warning that output/target
+# should not be used as the root filesystem.
+TARGET_DIR_WARNING_FILE=$(TARGET_DIR)/THIS_IS_NOT_YOUR_ROOT_FILESYSTEM
+
 ifeq ($(BR2_CCACHE),y)
 CCACHE:=$(HOST_DIR)/usr/bin/ccache
 BUILDROOT_CACHE_DIR = $(call qstrip,$(BR2_CCACHE_DIR))
@@ -403,6 +407,7 @@ $(BUILD_DIR)/.root:
 			cp -fa $(TARGET_SKELETON)/* $(TARGET_DIR)/; \
 		fi; \
 	fi
+	cp support/misc/target-dir-warning.txt $(TARGET_DIR_WARNING_FILE)
 	-find $(TARGET_DIR) -type d -name CVS -print0 -o -name .svn -print0 | xargs -0 rm -rf
 	-find $(TARGET_DIR) -type f \( -name .empty -o -name '*~' \) -print0 | xargs -0 rm -rf
 	touch $@
diff --git a/fs/common.mk b/fs/common.mk
index 0f0eae9..b1512dd 100644
--- a/fs/common.mk
+++ b/fs/common.mk
@@ -45,6 +45,7 @@ $(BINARIES_DIR)/rootfs.$(1): $(ROOTFS_$(2)_DEPENDENCIES)
 	@$(call MESSAGE,"Generating root filesystem image rootfs.$(1)")
 	$(foreach hook,$(ROOTFS_$(2)_PRE_GEN_HOOKS),$(call $(hook))$(sep))
 	rm -f $(FAKEROOT_SCRIPT)
+	rm -f $(TARGET_DIR_WARNING_FILE)
 	echo "chown -R 0:0 $(TARGET_DIR)" >> $(FAKEROOT_SCRIPT)
 ifneq ($(ROOTFS_DEVICE_TABLES),)
 	cat $(ROOTFS_DEVICE_TABLES) > $(FULL_DEVICE_TABLE)
@@ -57,6 +58,7 @@ endif
 	echo "$(ROOTFS_$(2)_CMD)" >> $(FAKEROOT_SCRIPT)
 	chmod a+x $(FAKEROOT_SCRIPT)
 	$(HOST_DIR)/usr/bin/fakeroot -- $(FAKEROOT_SCRIPT)
+	cp support/misc/target-dir-warning.txt $(TARGET_DIR_WARNING_FILE)
 	- at rm -f $(FAKEROOT_SCRIPT) $(FULL_DEVICE_TABLE)
 	$(foreach hook,$(ROOTFS_$(2)_POST_GEN_HOOKS),$(call $(hook))$(sep))
 ifeq ($$(BR2_TARGET_ROOTFS_$(2)_GZIP),y)
diff --git a/support/misc/target-dir-warning.txt b/support/misc/target-dir-warning.txt
new file mode 100644
index 0000000..b39b759
--- /dev/null
+++ b/support/misc/target-dir-warning.txt
@@ -0,0 +1,29 @@
+Warning!
+========
+
+This directory does *not* contain the root filesystem that you can use
+on your embedded system. Since Buildroot does not run as root, it
+cannot create device files and set the permissions and ownership of
+files correectly in this directory to make it usable as a root
+filesystem.
+
+For that reason, do *not* use the contents of this directory to mount
+your root filesystem over NFS or copy the contents of this directory
+to a SD card or USB key, thinking it will work as the root filesystem
+for your embedded system. It will simply *not* work.
+
+Instead, if you need a usable root filesystem, please select one of
+the filesystem image formats available in the Buildroot configuration
+interface (make menuconfig or others) in the "Filesystem images"
+sub-menu. If you want to get a filesystem image that you can easily
+extract to your SD card or to some directory exposed through NFS,
+please use the "tar the root filesystem" option. It will generate a
+images/rootfs.tar image in your Buildroot output directory, which you
+can extract as root:
+
+  sudo tar -C /destination/of/extraction -xf images/rootfs.tar
+
+Those image files are created using the contents of the target/
+directory, but there is a post-processing step to create device files
+and set owernship/permissions properly even if Buildroot does not run
+as root.
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH] Warn the user about the usage of output/target as the root filesystem
  2012-11-17 13:52 [Buildroot] [PATCH] Warn the user about the usage of output/target as the root filesystem Thomas Petazzoni
@ 2012-11-17 13:59 ` Gustavo Zacarias
  2012-11-17 14:03 ` Richard Braun
  2012-11-17 16:13 ` Peter Korsgaard
  2 siblings, 0 replies; 4+ messages in thread
From: Gustavo Zacarias @ 2012-11-17 13:59 UTC (permalink / raw)
  To: buildroot

On 11/17/2012 10:52 AM, Thomas Petazzoni wrote:

> A very common mistake done by our users is that they use
> output/target/ directory as their root filesystem. Even though this is
> loudly documented in our Buildroot manual, people don't read
> documentation, so it is not sufficient.
> 
> This patch adds a text file named
> output/target/THIS_IS_NOT_YOUR_ROOT_FILESYSTEM which explains why
> output/target isn't appropriate to use as the root filesystem. The
> process is:
> 
>  * At the beginning of the build, right after the skeleton has been
>    copied, support/misc/target-dir-warning.txt is copied to
>    output/target/THIS_IS_NOT_YOUR_ROOT_FILESYSTEM
> 
>  * In the filesystem images creation code, this file is removed before
>    launching fakeroot, and restored right after that, so that this
>    file is not present in the generated root filesystem images.
> 
> Note that the file has not been added to the default skeleton for two
> reasons:
> 
>  * It would have annoying to have in our source tree a file named in
>    capital letters inside system/skeleton/
> 
>  * The proposed way works even if the user uses a custom skeleton.
> 
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Cc: Juha Lumme <juha.lumme@gmail.com>

Acked-by: Gustavo Zacarias <gustavo@zacarias.com.ar>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH] Warn the user about the usage of output/target as the root filesystem
  2012-11-17 13:52 [Buildroot] [PATCH] Warn the user about the usage of output/target as the root filesystem Thomas Petazzoni
  2012-11-17 13:59 ` Gustavo Zacarias
@ 2012-11-17 14:03 ` Richard Braun
  2012-11-17 16:13 ` Peter Korsgaard
  2 siblings, 0 replies; 4+ messages in thread
From: Richard Braun @ 2012-11-17 14:03 UTC (permalink / raw)
  To: buildroot

On Sat, Nov 17, 2012 at 02:52:14PM +0100, Thomas Petazzoni wrote:
> +This directory does *not* contain the root filesystem that you can use
> +on your embedded system. Since Buildroot does not run as root, it
> +cannot create device files and set the permissions and ownership of
> +files correectly in this directory to make it usable as a root
> +filesystem.

Typo at "correectly".

-- 
Richard Braun

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH] Warn the user about the usage of output/target as the root filesystem
  2012-11-17 13:52 [Buildroot] [PATCH] Warn the user about the usage of output/target as the root filesystem Thomas Petazzoni
  2012-11-17 13:59 ` Gustavo Zacarias
  2012-11-17 14:03 ` Richard Braun
@ 2012-11-17 16:13 ` Peter Korsgaard
  2 siblings, 0 replies; 4+ messages in thread
From: Peter Korsgaard @ 2012-11-17 16:13 UTC (permalink / raw)
  To: buildroot

>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@free-electrons.com> writes:

 Thomas> A very common mistake done by our users is that they use
 Thomas> output/target/ directory as their root filesystem. Even though this is
 Thomas> loudly documented in our Buildroot manual, people don't read
 Thomas> documentation, so it is not sufficient.

Committed with the typo fixed, thanks.

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-11-17 16:13 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-11-17 13:52 [Buildroot] [PATCH] Warn the user about the usage of output/target as the root filesystem Thomas Petazzoni
2012-11-17 13:59 ` Gustavo Zacarias
2012-11-17 14:03 ` Richard Braun
2012-11-17 16:13 ` Peter Korsgaard

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.