TMPFS in kernels

Warner Losh imp at bsdimp.com
Fri Mar 7 00:25:12 UTC 2014


On Mar 6, 2014, at 5:20 PM, Ian Lepore <ian at FreeBSD.org> wrote:

> On Thu, 2014-03-06 at 19:14 -0500, George Rosamond wrote:
>> Ian Lepore:
>>> On Thu, 2014-03-06 at 13:03 +0800, Jia-Shiun Li wrote:
>>>> On Tue, Mar 4, 2014 at 10:48 PM, Warner Losh <imp at bsdimp.com> wrote:
>>>>> 
>>>>> On Mar 4, 2014, at 3:30 AM, Jia-Shiun Li <jiashiun at gmail.com> wrote:
>>>>> 
>>>>>> I remember hacking it a while ago to adopt tmpfs instead on my pxeboot
>>>>>> test environment. It only requires changing the line mdmfs mounting md to
>>>>>> 'mount -t tmpfs' (plus mount options), and everything else will work as usual.
>>>>> 
>>>>> I’ll have to give it a spin on NanoBSD then, at least as an option…
>>>>> 
>>>> 
>>>> The actual patch & result pasted below to save you some time.
>>>> Only tested on x86 pxeboot though.
>>>> 
>>>> -----8<----------8<----------8<-----
>>>> 
>>>> % diff -bu /usr/src/etc/rc.initdiskless
>>>> /b/tftpboot/FreeBSD/install/etc/rc.initdiskless
>>>> --- /usr/src/etc/rc.initdiskless        2013-04-11 21:03:31.000000000 +0800
>>>> +++ /b/tftpboot/FreeBSD/install/etc/rc.initdiskless     2014-03-06
>>>> 12:43:47.000000000 +0800
>>>> @@ -198,7 +198,10 @@
>>>> # Create a generic memory disk
>>>> #
>>>> mount_md() {
>>>> -    /sbin/mdmfs -S -i 4096 -s $1 -M md $2
>>>> +#    /sbin/mdmfs -S -i 4096 -s $1 -M md $2
>>>> +    local tmpfs_size
>>>> +    tmpfs_size=$(($1 * 1024))
>>>> +    /sbin/mount -t tmpfs -osize=$tmpfs_size tmpfs $2
>>>> }
>>>> 
>>>> # Create the memory filesystem if it has not already been created
>>>> 
>>>> % cat df
>>>> Filesystem                                    Size    Used   Avail
>>>> Capacity  Mounted on
>>>> 192.168.233.1:/b/tftpboot/FreeBSD/install/     29G     17G    9.8G    63%    /
>>>> devfs                                         1.0K    1.0K      0B
>>>> 100%    /dev
>>>> tmpfs                                          10M    2.6M    7.4M
>>>> 26%    /etc
>>>> tmpfs                                          10M    180K    9.8M
>>>> 2%    /var
>>>> /dev/md0                                       19M     24K     17M
>>>> 0%    /tmp
>>>> % cat mount
>>>> 192.168.233.1:/b/tftpboot/FreeBSD/install/ on / (nfs, read-only)
>>>> devfs on /dev (devfs, local, multilabel)
>>>> tmpfs on /etc (tmpfs, local)
>>>> tmpfs on /var (tmpfs, local)
>>>> /dev/md0 on /tmp (ufs, local)
>>>> 
>>>> 
>>>> -Jia-Shiun.
>>> 
>>> FYI, I just posted a patchset to freebsd-arch@ and freebsd-rc@ to
>>> address this in a slightly different way. 
>>> 
>>> http://lists.freebsd.org/pipermail/freebsd-arch/2014-March/015141.html
>>> 
>>> Basically I updated the mdmfs program to automatically use tmpfs if it's
>>> available in the kernel and the device name is "auto", along with
>>> changes to rc.initdiskless and defaults/rc.conf to set the device name
>>> to "auto" by default.
>>> 
>> 
>> Cool.  So assume it would then be added to the (new) RPI-B and ALIX
>> kernels.  Am I correct?
>> 
>> g
>> 
> 
> Yeah, for the kernel side of it, I'm just adding TMPFS to
> arm/conf/DEFAULTS since the concensus seems to be that we want it in all
> kernels.  I'm waiting for a universe-kernels build to finish and if it's
> clean I'll commit that tonight.

DEFAULTS was never intended for something like this.. Only for things that
must be mandatory or very nearly mandatory for the system to operate. While
useful, this isn’t mandatory by any stretch of the imagination. I strongly object
to putting it there, so please don’t commit it to DEFAULTS.

> For the other part of it, we'll see what feedback comes from the review
> on the other lists, it may not get committed for a few days.

Those looked good to me.

Warner


More information about the freebsd-arm mailing list