Changing a User’s Password on FreeBSD

Before getting into how to change a user’s password on FreeBSD, let’s have a quick revision on how that can be done on a Linux system.

As a user we can change the password by typing:

$ passwd
Changing password for user kenno.
Changing password for kenno.
Current password: 

Or with a root account, we can change/set the password for another user:

# passwd kenno
Changing password for user kenno.
New password: 

How about a FreeBSD? It should be the same way as how it’s done on Linux right? Right? Well, not quite.

On a FreeBSD system, in addition to run the passwd command, we also need to generate the password databases to be “in sync” with the plain text files.

# pwd_mkdb /etc/master.passwd

You can learn more about both passwd and pwd_mkdb, by running:

$ man passwd
$ man pwd_mkdb

Ref: Can’t change user password

FreeBSD 11 Blank Screen After Login via SLiM

After rebooting my FreeBSD 11.0, I wasn’t able to login to Mate desktop manager via SLiM (Login Manager).
I spent sometimes to try to fix it, but failed. I’ll try it again later when I have a bit of free time.

Here’s a quick note of a work around, so I won’t forget what I’ve done.

1) Disable loading slim on start up by editing /etc/rc.conf and commented out the following line:


2) Run this command manually to start mate-session:

$ xinit mate-session

So, it appears SLiM is the culprit here since Mate-session can be started up manually.

Zpool Not Automatically Mounted on Boot on Fedora

I love ZFS, but there is something that has annoyed me for quite sometimes – the zpool doesn’t get automatically mounted on boot. To work around this, I had to login as root and run:

# zpool import tank

to import tank pool before I login with my normal user account.

Well, I finally found a solution. This is what’s written on zfsonlinux/zfs WIFI about Fedora specifically:

Systemd Update:

When upgrading to the zfs- release it’s recommended that users manually reset the zfs systemd presets. Failure to do so can result in the pool not automatically importing when the system is rebooted.

systemctl preset zfs-import-cache zfs-import-scan zfs-mount zfs-share \

Okay, here’s how I fix my issue. First, ensure that a pool that I want to automatically mounted is manually mounted first. Then just run that lengthy command shown above:

# zpool import tank
# systemctl preset zfs-import-cache zfs-import-scan zfs-mount zfs-share zfs-zed
Created symlink /etc/systemd/system/zfs-mount.service.wants/zfs-import-cache.service → /usr/lib/systemd/system/zfs-import-cache.service.
Created symlink /etc/systemd/system/ → /usr/lib/systemd/system/zfs-import-cache.service.
Created symlink /etc/systemd/system/zfs-share.service.wants/zfs-mount.service → /usr/lib/systemd/system/zfs-mount.service.
Created symlink /etc/systemd/system/ → /usr/lib/systemd/system/zfs-mount.service.
Created symlink /etc/systemd/system/ → /usr/lib/systemd/system/zfs-share.service.
Created symlink /etc/systemd/system/zed.service → /usr/lib/systemd/system/zfs-zed.service.
Created symlink /etc/systemd/system/ → /usr/lib/systemd/system/zfs-zed.service.

Now, that makes me a much happier ZFS user!

Ref: zfsonlinux/zfs

របៀប​លុប​អត្ថបទ​ចម្រៀង​​ចេញ​ពី​ mp3

ខ្ញុំ​មាន​បទ​ចម្រៀង mp3 ពីរ​ឬបី​ដែល​មាន​អត្ថបទ​ចម្រៀង​ភ្ជាប់ជាមួយ (embedded lyric)។ ខ្ញុំ​ចង់លុប​អត្ថបទ​នោះចេញ។

នេះ​ជា​វិធី​មួយ​ដែល​អាច​សម្រេច​បំណង​ខាងលើ ដោយប្រើកម្មវិធី​ឈ្មោះ id3v2 នៅ​លើហ្វេដ័ររ៉ា។ ឧទាហរណ៍​ថា​ ចម្រៀង​ដែល​ខ្ញុំ​ចង់លុប​អត្ថបទភ្ជាប់​នោះ​ មាន​ឈ្មោះ​ថា “01 love you.mp3” ខំម៉ានដែល​យើង​ត្រូវ​វាយ ដូច​ខាង​ក្រោម​នេះ៖

$ id3v2 --remove-frame 'TEXT' 01\ love\ you.mp3
  • --remove-frame – លុប​ id3v2 frame
  • 'TEXT'

បើសិន​ជា​យើង​មាន​ mp3 ច្រើន​ក្នុង​ directory តែ​មួយ​ ហើយយើង​ចង់​លុប​​ ‘TEXT’ frame ចេញ យើង​អាច​ប្រើ​ខំម៉ាន​ដូច​នេះ៖

$ for i in *.mp3; do id3v2 -r 'TEXT' $i; done
Deleting Frame TEXT in file 01 love you.mp3 ...
Deleting Frame TEXT in file 02 Ima demo Aitai yo….mp3 ...
Deleting Frame TEXT in file 03 Brand New World.mp3 ...

សូម​កត់​សំគាល់​ថា ក្នុង​ខំម៉ាន​ខាង​លើ ខ្ញុំ​ប្រើ -r ជំនួស​អោយ​ --remove-frame។ អផសុន​ (options) ទាំង​ពីរ​នោះ វា​ដូច​គ្នា​ទេ៕

Install ZFS on Fedora 25 with kernel 4.8.13-300

After I had my Fedora 24 upgraded to 25 on my desktop, ZFS no longer worked. I tried to remove zfs package and reinstalled; it didn’t work.

Here’s how I got it working after trying many things. There could be a different way to fix it, though.

Let’s check the version of the kernel:

[root@sangkae ~]# uname -r

Check if spl, zfs are already installed:

[root@sangkae ~]# dnf info spl
Last metadata expiration check: 1:01:18 ago on Thu Dec 15 22:42:25 2016.
Installed Packages
Name        : spl
Arch        : x86_64
Epoch       : 0
Version     :
Release     : 1.fc25
Size        : 48 k
Repo        : @System
From repo   : zfs
Summary     : Commands to control the kernel modules
URL         :
License     : GPLv2+
Description : This package contains the commands to verify the SPL
            : kernel modules are functioning properly.

[root@sangkae ~]# dnf info zfs
Last metadata expiration check: 1:01:26 ago on Thu Dec 15 22:42:25 2016.
Installed Packages
Name        : zfs
Arch        : x86_64
Epoch       : 0
Version     :
Release     : 1.fc25
Size        : 808 k
Repo        : @System
From repo   : zfs
Summary     : Commands to control the kernel modules and libraries
URL         :
License     : CDDL
Description : This package contains the ZFS command line utilities.

Manually install spl, dkms:

# dkms install spl/
# dkms install zfs/

Load zfs module:

# modprobe zfs

Voilla, I got ZFS working again.

លុបចោលសម្លេងពីឯកសារ MKV

ឥឡូវនេះខែវិច្ឆិកាហើយ ប៉ុន្តែខ្ញុំមិនទាន់បាន​សរសេរ​អត្ថបទ​មួយឡើយ។ អញ្ចឹង គួរតែ​ចាប់ផ្តើម​មួយទៅមែន​ទេ?

ថ្ងៃនេះខ្ញុំចង់ចែករំលេករបៀបលុប audio track ចេញពីឯកសារ MKV ។ MKV ជា​ប្រភេទ​មួយ​នៃ​ហ្វមម៉ាត​របស់​ឯកសារ (file format) ដែល​យើង​អាច​ខ្ចប់​វីដេអូ សម្លេង និងសាប់ថាយថើល (subtitle)។ល។ ខ្ញុំមានឯកសារ MKV ដែលមានសំលេងពីរ ហ៊ីនឌី (Hindi) និងអង់គ្លេស ហើយ ខ្ញុំចង់លុបហ៊ីនឌីចេញ ដោយប្រើកុំព្យូទ័រជាមួយហ្វឺដរ៉ា (Fedora 24)។

ជាដំបូង យើងត្រូវបញ្ចូលប្រូក្រាមមួយជាមុនសិន។

# dnf install mkvtoolnix

ក្រោយពីបញ្ចូលប្រូក្រាមខាងលើ យើងអាចមើលថាតើមានអ្វីខ្លះនៅក្នុងឯកសារ MKV នោះ។

$ mkvmerge -i Sample.mkv
File 'Sample.mkv': container: Matroska
Track ID 0: video (MPEG-4p10/AVC/h.264)
Track ID 1: audio (MP3)
Track ID 2: audio (AAC)
Track ID 3: subtitles (SubRip/SRT)
Attachment ID 1: type 'image/jpeg', size 298984 bytes, file name 'Cover.jpg'

តាមលទ្ធផលខាងលើ យើងឃើញថាឯកសារនោះមានសម្លេងពីរ Track ID 1 និង Trakc ID 2។ អ្វីដែលយើងមិនអាចដឹងគឺ តើធ្រាក់មួយណាជាសម្លេងភាសាហ៊ីនឌី? យើងអាចប្រើប្រូក្រាម mplayer:

$ mplayer Sample.mkv
MPlayer 1.3.0-6.1.1 (C) 2000-2016 MPlayer Team

Playing Sample.mkv.
libavformat version 57.41.100 (external)
libavformat file format detected.
[aac @ 0x7fa06b3d4ac0]element type mismatch 1 != 0
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 1: audio (mp3), -aid 0, -alang hin
[lavf] stream 2: audio (aac), -aid 1, -alang eng
[lavf] stream 3: subtitle (srt), -sid 0, -slang eng
[lavf] stream 4: video (mjpeg), -vid 1
VIDEO:  [H264]  1280x720  0bpp  23.976 fps    0.0 kbps ( 0.0 kbyte/s)

សម្លេងភាសាហ៊ីនឌី គឹជា Track ID 1 (mp3)។ យើងដកវាចេញ ដោយបង្កើតឯកសារថ្មីដោយគ្មានវា។

$ mkvmerge -o out.mkv --video-tracks 0 --audio-tracks 2 Sample.mkv
mkvmerge v9.2.0 ('Photograph') 64bit
'Sample.mkv': Using the demultiplexer for the format 'Matroska'.
'Sample.mkv' track 0: Using the output module for the format 'AVC/h.264'.
'Sample.mkv' track 2: Using the output module for the format 'AAC'.
'Sample.mkv' track 3: Using the output module for the format 'text subtitles'.
The file 'out.mkv' has been opened for writing.
Progress: 100%
The cue entries (the index) are being written...
Muxing took 0 seconds.
  • -o បង្កើតឯកសារថ្មី
  • --video-tracks ចម្លងវីដេអូត្រាក់លេខ
  • --audio-tracks ចម្លងសម្លេងត្រាក់លេខ
  • Sample.mkv ឧទាហរណ៍ឯកសារដើម

លទ្ធផលគឺ ឯកសារ out.mkv ដែលគ្មានសម្លេងភាសាហ៊ីនឌី។

Ref: Delete audio track from mkv file

How extract 7zip file on Linux

This evening I need to extract a file with .7z extension. Guess what? I don’t know how to do that. I probably don’t even have 7zip program installed on my Fedora machine.

Here’s something to remind myself how to get it working.

First let’s find out what package we need to install:

[root@watamem ~]# dnf search 7zip
Last metadata expiration check: 3:14:50 ago on Thu Oct 20 20:39:30 2016.
================ N/S Matched: 7zip ==================
p7zip-plugins.x86_64 : Additional plugins for p7zip
p7zip.x86_64 : Very high compression ratio file archiver
p7zip-gui.x86_64 : 7zG - 7-Zip GUI version

So, it seems we need to install p7zip.

# dnf install p7zip
  p7zip.x86_64 16.02-1.fc24 

Okay. What is the command to run? My guess is that there should be one or two file in /usr/bin.

# rpm -ql p7zip | grep bin

Ah ha, it’s 7za. Now we can check its man page on how to extract file. I don’t have to remind me to type man 7za, do I?

To extract a .7z file with full path use the x function letter. For example:

$ 7za x a_crompressed_file.7za

If you use Debian based system, you probably need to install the same package name (p7zip) using apt or aptitude command instead. The command to extract file should be just the same.

FreeBSD upgrade pool ‘zroot’

Today I successfully upgraded my FreeBSD home nas server from 10.3 to 11.0. This is the final release of version 11.0, though the official announcement is expected to be made on September 28.

After the system upgrade, I need to also upgrade the 2 zpools (tank and zroot) so they can have new features. Upgrading tank was easy, all I needed to do was running this command:

# zpool upgrade tank
This system supports ZFS pool feature flags.

Enabled the following features on 'tank':

For zroot, in addition to running the above command (by replacing the actually zpool name to zroot), I also need to update the boot code.

root@nas:~ # zpool upgrade zroot
This system supports ZFS pool feature flags.

Enabled the following features on 'zroot':

If you boot from pool 'zroot', don't forget to update boot code.
Assuming you use GPT partitioning and da0 is your boot disk
the following command will do it:

        gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0

What’s the boot code? Good question. Not sure what it is, I’ll find out later by reading the FreeBSD document.

The boot disk in my server is not da0. How do we find out what it is?

root@nas:~ # gpart show
=>       34  125045357  ada4  GPT  (60G)
         34       1024     1  freebsd-boot  (512K)
       1058    4194304     2  freebsd-swap  (2.0G)
    4195362  120850029     3  freebsd-zfs  (58G)

In my case, it’s ada4, and the partition the boot sits on is ada4p1.
So, I can now proceed to update the boot code:

root@nas:~ # gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada4
partcode written to ada4p1
bootcode written to ada4

Reboot the machine, and voilla it’s “still” working.