I participate in and try out a number of illumos-based community projects. Among these, I have a bleeding-edge OpenIndiana Hipster distribution on my laptop, and an OmniOS Bloody installation on a storage server at work. Recently I was playing with a recipe for distributed compilation with distcc, and wanted to try it out. Same operating environments are very much preferred, so the remote compilation head should also be (or seem) an OI Hipster. Luckily, we can fool IPS into installing whatever we want, as long as it is sane... (And note that part of the success story below may be due to both distros using the bleeding-edge code from illumos-gate, so underlying kernel and system calls expected by userland code are the same).
UPDATE below: the inverse setup, making an OmniOS zone hosted on OpenIndiana Hipster, seems also possible - though with a bit more workaround dance.
It all starts with a LAN connection, so here goes a bit of preparation: a dedicated VNIC where the buildhost will live:
Note about zone nuances: OmniOS native (ipkg) zones are not-linked (do not require tight coupling of global-zone and local-zone software versions). This is inverted vs. OpenIndiana, where "ipkg" is linked like in latest OpenSolaris builds, and a new "nlipkg" is not-linked.
Create a zone:
I might go on with delegated datasets, etc. - but this setup will NFS- or LOFS-mount whatever I need from the GZ later. So far I need the basics running.
And for these basics, I need the zone created without looking at incompatibilities. Namely, the "entire" incorporation does not concern me here, but the standard zone-branding script (/usr/lib/brand/ipkg/pkgcreatezone) blindly wants "entire" to be same as in GZ regardless of ipkg/nlipkg details (if there is an "entire" in GZ - otherwise it is happy without... so we extend it a bit):
Now, I can bind it to my will using environment variables (so it defaults to doing standard incantations otherwise) :)
Also note that the original standard script only allows one package publisher to be used during zone installation. It could be expanded to pre-set and use more, just that such change was not needed for this experiment and so is left out of the article's scope - and additional publishers are added after initial installation.
And it is simple to use:
Now a bit more repos to add...
Ultimately the zone can be booted, basic networking set up, home directory attached, "sudo gmake component-environment-prep" executed to get some common build deps for the recipe I'm at - and an OI buildhost running under OmniOS is ready to roll. Why should that hardware stay dormant? (once I get that distcc package done well) :)
So the distcc server on oibuild zone has been compiled and got running (not without hiccups so far - but hey, that's what I'm tinkering on):
Whoosh!
UPDATE: A similar setup, as far as mirror twins go, is also possible. Slightly more changes are needed to the "pkgcreatezone" script in OI Hipster host, because originally it requires the new "sysding" package (successor to old "sysidcfg" scripts) that is not provided by other distros.
Then you set up the VNIC and zone configuration, similar to the example above (note the OI "nlipkg" brand has the "OI", not "SUNW", prefix):
And finally install the zone (I prepend destruction of old attempts... because... well... experiments are like that :) ):
And then, probably, to get something useful in that zone, I'd build it or proceed to install "pkgsrc" framework from http://www.perkin.org.uk/pages/pkgsrc-binary-packages-for-illumos.html - but that's another story.
Finally note, that for pedantic production use you'd create a new zone brand referring the customized "pkgcreatezone" script (leaving the default packaged one untouched) and the standard copies of other files, similar to how the "OInlipkg" definition does. As a lesser evil, you only need the tweaks when you create a new zone like this - so you can revert to the saved "pkgcreatezone.orig" copy after installations are completed, if you're concerned about this.
UPDATE below: the inverse setup, making an OmniOS zone hosted on OpenIndiana Hipster, seems also possible - though with a bit more workaround dance.
It all starts with a LAN connection, so here goes a bit of preparation: a dedicated VNIC where the buildhost will live:
root@omnios-host:/# dladm show-link LINK CLASS MTU STATE BRIDGE OVER bge0 phys 1500 up -- -- vboxnet0 phys 1500 up -- -- root@backup-host:/root# dladm create-vnic -l bge0 vnic199
Note about zone nuances: OmniOS native (ipkg) zones are not-linked (do not require tight coupling of global-zone and local-zone software versions). This is inverted vs. OpenIndiana, where "ipkg" is linked like in latest OpenSolaris builds, and a new "nlipkg" is not-linked.
Create a zone:
root@omnios-host:/# zonecfg -z oibuild zonecfg:oibuild> create -t SUNWipkg zonecfg:oibuild> set zonepath=/zones/oibuild zonecfg:oibuild> add net zonecfg:oibuild:net> set physical=vnic199 zonecfg:oibuild:net> end zonecfg:oibuild> set ip-type=exclusive zonecfg:oibuild> set autoboot=true zonecfg:oibuild> verify zonecfg:oibuild> commit zonecfg:oibuild> ^D
I might go on with delegated datasets, etc. - but this setup will NFS- or LOFS-mount whatever I need from the GZ later. So far I need the basics running.
And for these basics, I need the zone created without looking at incompatibilities. Namely, the "entire" incorporation does not concern me here, but the standard zone-branding script (/usr/lib/brand/ipkg/pkgcreatezone) blindly wants "entire" to be same as in GZ regardless of ipkg/nlipkg details (if there is an "entire" in GZ - otherwise it is happy without... so we extend it a bit):
root@omnios-host:/# cp -pf /usr/lib/brand/ipkg/pkgcreatezone /usr/lib/brand/ipkg/pkgcreatezone.orig...and apply (or type in) this patch:
--- /usr/lib/brand/ipkg/pkgcreatezone.orig 2016-01-29 15:57:40.006965818 +0100 +++ /usr/lib/brand/ipkg/pkgcreatezone 2016-07-22 18:09:49.734017982 +0200 @@ -169,6 +169,7 @@ # It's ok to not find entire in the current image, since this means the user # can install pre-release development bits for testing purposes. # +[[ -n "$NO_ENTIRE_FMRI" ]] && entire_fmri="" || \ entire_fmri=$(get_entire_incorp) #
Now, I can bind it to my will using environment variables (so it defaults to doing standard incantations otherwise) :)
Also note that the original standard script only allows one package publisher to be used during zone installation. It could be expanded to pre-set and use more, just that such change was not needed for this experiment and so is left out of the article's scope - and additional publishers are added after initial installation.
And it is simple to use:
root@omnios-host:/# zoneadm -z oibuild uninstall -F ; \ NO_ENTIRE_FMRI=yes zoneadm -z oibuild install -v -P openindiana.org=http://pkg.openindiana.org/hipster/ A ZFS file system has been created for this zone. Image: Preparing at /zones/oibuild/root. Publisher: Using openindiana.org (http://pkg.openindiana.org/hipster/). Cache: Using /var/pkg/publisher. Installing: Packages (output follows) Packages to install: 120 Mediators to change: 6 Services to change: 4 DOWNLOAD PKGS FILES XFER (MB) SPEED Completed 120/120 28192/28192 200.5/200.5 1.1M/s PHASE ITEMS Installing new actions 41903/41903 Updating package state database Done Updating package cache 0/0 Updating image state Done Creating fast lookup database Done Note: Man pages can be obtained by installing pkg:/system/manual Postinstall: Copying SMF seed repository ... done. Done: Installation completed in 325.405 seconds. Next Steps: Boot the zone, then log into the zone console (zlogin -C) to complete the configuration process.
Now a bit more repos to add...
root@omnios-host:/# pkg -R /zones/oibuild/root set-publisher -g http://pkg.openindiana.org/legacy/ opensolaris.org root@omnios-host:/# pkg -R /zones/oibuild/root set-publisher -g http://pkg.openindiana.org/hipster-encumbered/ hipster-encumberedAnd a few packages I need here...
root@omnios-host:/# pkg -R /zones/oibuild/root install build-essential ccache rsync sudo mc
Ultimately the zone can be booted, basic networking set up, home directory attached, "sudo gmake component-environment-prep" executed to get some common build deps for the recipe I'm at - and an OI buildhost running under OmniOS is ready to roll. Why should that hardware stay dormant? (once I get that distcc package done well) :)
So the distcc server on oibuild zone has been compiled and got running (not without hiccups so far - but hey, that's what I'm tinkering on):
root@oibuild:/# distccd --user jim -j 30 --stats --stats-port 12345 --log-stderr --no-detach --verbose --daemon -a 0.0.0.0/0 &And the client build from the laptop goes like:
jim@laptop$ gmake clean; echo =======; \ CCACHE_RECACHE=true DISTCC_VERBOSE=1 \ DISTCC_HOSTS="10.1.2.3,lzo,cpp" CCACHE_PREFIX="distcc" \ COMPONENT_BUILD_GMAKE_ARGS=-j20 pump gmake publish
Whoosh!
UPDATE: A similar setup, as far as mirror twins go, is also possible. Slightly more changes are needed to the "pkgcreatezone" script in OI Hipster host, because originally it requires the new "sysding" package (successor to old "sysidcfg" scripts) that is not provided by other distros.
root@hipster-host:/# diff -bu /usr/lib/brand/ipkg/pkgcreatezone{.orig,} --- /usr/lib/brand/ipkg/pkgcreatezone.orig 2016-08-25 11:20:57.249926456 +0200 +++ /usr/lib/brand/ipkg/pkgcreatezone 2016-09-23 10:24:54.690076605 +0200 @@ -169,6 +169,7 @@ # It's ok to not find entire in the current image, since this means the user # can install pre-release development bits for testing purposes. # +[[ -n "$NO_ENTIRE_FMRI" ]] && entire_fmri="" || \ entire_fmri=$(get_entire_incorp) # @@ -263,7 +264,6 @@ pkglist="$pkglist pkg:/SUNWcs pkg:/SUNWcsd - pkg:/service/management/sysding pkg:/system/network pkg:/system/extended-system-utilities pkg:/compress/bzip2 @@ -272,6 +272,10 @@ pkg:/compress/unzip pkg:/package/pkg" +[[ -n "$NO_SYSDING" ]] || \ +pkglist="$pkglist + pkg:/service/management/sysding" + # # Get some diagnostic tools, truss, dtrace, etc. #
Then you set up the VNIC and zone configuration, similar to the example above (note the OI "nlipkg" brand has the "OI", not "SUNW", prefix):
root@hipster-host:/# dladm create-vnic -l e1000g1 omnibld0 root@hipster-host:/# zonecfg -z omnibld zonecfg:omnibld> create -t OInlipkg zonecfg:omnibld> set zonepath=/zones/omnibld zonecfg:omnibld> add net zonecfg:omnibld:net> set physical=omnibld0 zonecfg:omnibld:net> end zonecfg:omnibld> set ip-type=exclusive zonecfg:omnibld> set autoboot=true zonecfg:omnibld> verify zonecfg:omnibld> commit zonecfg:omnibld> ^D
And finally install the zone (I prepend destruction of old attempts... because... well... experiments are like that :) ):
root@hipster-host:/# zoneadm -z omnibld uninstall -F ; \ zfs destroy -r rpool/zones/omnibld ; \ NO_SYSDING=yes NO_ENTIRE_FMRI=yes zoneadm -z omnibld install -v \ -P omnios=http://pkg.omniti.com/omnios/LX/ cannot open 'rpool/zones/omnibld': dataset does not exist A ZFS file system has been created for this zone. Image: Preparing at /zones/omnibld/root. Publisher: Using omnios (http://pkg.omniti.com/omnios/LX/). Cache: Using /var/pkg/publisher. Installing: Packages (output follows) Packages to install: 90 Mediators to change: 1 Services to change: 4 DOWNLOAD PKGS FILES XFER (MB) SPEED Completed 90/90 24570/24570 161.7/161.7 406k/s PHASE ITEMS Installing new actions 37912/37912 Updating package state database Done Updating package cache 0/0 Updating image state Done Creating fast lookup database Done Note: Man pages can be obtained by installing pkg:/system/manual Postinstall: Copying SMF seed repository ... done. Done: Installation completed in 526.523 seconds. Next Steps: Boot the zone, then log into the zone console (zlogin -C) to complete the configuration process. root@hipster-host:/# pkg -R /zones/omnibld/root set-publisher -g \ http://pkg.omniti.com/omniti-ms/ ms.omniti.com root@hipster-host:/# pkg -R /zones/omnibld/root set-publisher -g \ http://pkg.omniti.com/omniti-perl/ perl.omniti.com
And then, probably, to get something useful in that zone, I'd build it or proceed to install "pkgsrc" framework from http://www.perkin.org.uk/pages/pkgsrc-binary-packages-for-illumos.html - but that's another story.
Finally note, that for pedantic production use you'd create a new zone brand referring the customized "pkgcreatezone" script (leaving the default packaged one untouched) and the standard copies of other files, similar to how the "OInlipkg" definition does. As a lesser evil, you only need the tweaks when you create a new zone like this - so you can revert to the saved "pkgcreatezone.orig" copy after installations are completed, if you're concerned about this.
i preview the blog.its very easy to read your blog and much better to refer.thanks for this blog.
ReplyDeletebest embedded training institute in coimbatore
embedded course in coimbatore
embedded training in coimbatore
embedded training institute in coimbatore
embedded systems training in coimbatore
ReplyDeleteThanks for sharing these niche piece of info's to our knowledge. Here, I had a solution for my inconclusive problems & it’s really helps me a lot keep updates…
Hacking Course in Chennai
Hacking Classes in Chennai
Ethical Hacking Training in Chennai
CCNA Training in Chennai
DevOps Training in Chennai
SEO Training in Chennai
Hacking Training in Anna Nagar
Hacking Training in Adyar
Very useful information, if you are Looking for software courses?
ReplyDeleteGerman Classes in Chennai
Big Data Training in Chennai
Android Training in Chennai
Selenium Training in Chennai
Digital Marketing Training in Chennai
JAVA Training in Chennai
DOT NET Training in Chennai
Dot Net Training in Velachery
yesmovies
ReplyDeleteThis comment has been removed by the author.
ReplyDeletetechnology whatsapp groups
ReplyDeleteI have been reading for the past two days about your blogs and topics, still on fetching! Wondering about your words on each line was massively effective. Techno-based information has been fetched in each of your topics. Sure it will enhance and fill the queries of the public needs. Feeling so glad about your article. Thanks…!
ReplyDeletemagento training course in chennai
magento training institute in chennai
magento 2 training in chennai
magento development training
magento 2 course
magento developer training
I like the helpful info you provide in your articles. I’ll bookmark your weblog and check again here regularly. I am quite sure I will learn much new stuff right here! Good luck for the next!
ReplyDeleteWeb Designing Training Institute in Chennai | web design training class in chennai | web designing course in chennai with placement | Web Designing and Development Course in Chennai | Web Designer Training Course in Chennai
Mobile Application Development Courses in chennai
Data Science Training in Chennai | Data Science courses in Chennai
Professional packers and movers in chennai | PDY Packers | Household Goods Shifting
Web Designing Training Institute in Chennai | Web Designing courses in Chennai
Google ads services | Google Ads Management agency
Web Designing Course in Chennai | Web Designing Training in Chennai
The development of artificial intelligence (AI) has propelled more programming architects, information scientists, and different experts to investigate the plausibility of a vocation in machine learning. Notwithstanding, a few newcomers will in general spotlight a lot on hypothesis and insufficient on commonsense application. Machine Learning Final Year Projects In case you will succeed, you have to begin building machine learning projects in the near future.
ReplyDeleteProjects assist you with improving your applied ML skills rapidly while allowing you to investigate an intriguing point. Furthermore, you can include projects into your portfolio, making it simpler to get a vocation, discover cool profession openings, and Final Year Project Centers in Chennai even arrange a more significant compensation.
Data analytics is the study of dissecting crude data so as to make decisions about that data. Data analytics advances and procedures are generally utilized in business ventures to empower associations to settle on progressively Python Training in Chennai educated business choices. In the present worldwide commercial center, it isn't sufficient to assemble data and do the math; you should realize how to apply that data to genuine situations such that will affect conduct. In the program you will initially gain proficiency with the specialized skills, including R and Python dialects most usually utilized in data analytics programming and usage; Python Training in Chennai at that point center around the commonsense application, in view of genuine business issues in a scope of industry segments, for example, wellbeing, promoting and account.
Thank you for excellent article.Great information for new guy like antimalware service executable
ReplyDeleteThis is really too useful and have more ideas and keep sharing many techniques...you can explore the many exciting Job Opportunities on India Postal Recruitment 2020. Latest and also upcoming Notifications on India Post recruitment are updated in this page immediately...
ReplyDeleteGreat information, I got a lot of new information from this blog.
ReplyDeleteAWS Training in Bangalore
AWS Training in Chennai
AWS Course in Bangalore
Best AWS Training in Bangalore
AWS Training Institutes in Bangalore
AWS Certification Training in Bangalore
Data Science Courses in Bangalore
DevOps Training in Bangalore
PHP Training in Bangalore
DOT NET Training in Bangalore
I enjoyed over read your blog post. Your blog have nice information, I got good ideas from this amazing blog.
ReplyDeleteDigital Marketing Training Course in Chennai | Digital Marketing Training Course in Anna Nagar | Digital Marketing Training Course in OMR | Digital Marketing Training Course in Porur | Digital Marketing Training Course in Tambaram | Digital Marketing Training Course in Velachery
keep update a lots of details.i need few more info keep udate good luck guys.
ReplyDeleteAi & Artificial Intelligence Course in Chennai
PHP Training in Chennai
Ethical Hacking Course in Chennai Blue Prism Training in Chennai
UiPath Training in Chennai
I see some amazingly important and kept up to length of your strength searching for in your on the site.keep up!!
ReplyDeleteandroid training in chennai
android online training in chennai
android training in bangalore
android training in hyderabad
android Training in coimbatore
android training
android online training
With so much overstated negative criticism of the corporate culture in the media, it is indeed bracing to have an upbeat, positive report on the good things that are happening. Wish to read some more from you!
ReplyDeleteSAP training in Kolkata
SAP training Kolkata
Best SAP training in Kolkata
SAP course in Kolkata
Data Engineer: A data engineer also works with large volume of data cleans, extracts and creates sophisticated algorithms for data business. data science course syllabus
ReplyDeleteThis is my first time i visit here. I found so many entertaining stuff in your blog, especially its discussion. From the tons of comments on your articles, I guess I am not the only one having all the leisure here! Keep up the good work. I have been meaning to write something like this on my website and you have given me an idea.
ReplyDeletedata science course in India
I just got to this amazing site not long ago. I was actually captured with the piece of resources you have got here. Big thumbs up for making such wonderful blog page!
ReplyDeleteArtificial Intelligence Course
Nice informative article, it shares more useful interesting information. This article is useful to me.
ReplyDeletehow to rank your website on google
which language should i learn
selenium framework
ai news
pega interview questions
Great Blog!!! Thanks for sharing this wonderful data with us.
ReplyDeleteSelenium Training in Chennai
Selenium Training in Bangalore
Selenium Online Training
Selenium Training in Coimbatore
Selenium Training in Pune
I like the new FMWA
ReplyDeleteThe information you have shared here is very helpful. I really like and appreciate your work. Thanks again for it, keep us updated in future! Gbwhatsapp is also good.
DeleteFOXZ88.NET online casino website Global standard 2020-2021. คาสิโนออนไลน์
ReplyDeleteBetting online gambling reminiscent of UFASCR.COM Baccarat. ufabet
UFABET football betting website, the big brother of all UEFA networks, UFADNA, with an update The first modern system in 2021. ufa
Web football i99PRO online lottery casino apply today for free 5000 bonus. เว็บบอล
Kardinal Stick Siam - Relx a great promotion. Express delivery in 3 hours. relx
Online Marketing Company By the way we can make your website. Reach more customers directly to your business group. Grow your sales. SEO
Mua vé tại đại lý vé máy bay Aivivu, tham khảo
ReplyDeletevé máy bay đi Mỹ bao nhiêu tiền
vé máy bay đà lạt hà nội tháng 7
ve may bay nha trang saigon
giá vé máy bay đi nha trang vietnam airline
rastgele görüntülü konuşma - kredi hesaplama - instagram video indir - instagram takipçi satın al - instagram takipçi satın al - tiktok takipçi satın al - instagram takipçi satın al - instagram beğeni satın al - instagram takipçi satın al - instagram takipçi satın al - instagram takipçi satın al - instagram takipçi satın al - binance güvenilir mi - binance güvenilir mi - binance güvenilir mi - binance güvenilir mi - instagram beğeni satın al - instagram beğeni satın al - polen filtresi - google haritalara yer ekleme - btcturk güvenilir mi - binance hesap açma - kuşadası kiralık villa - tiktok izlenme satın al - instagram takipçi satın al - sms onay - paribu sahibi - binance sahibi - btcturk sahibi - paribu ne zaman kuruldu - binance ne zaman kuruldu - btcturk ne zaman kuruldu - youtube izlenme satın al - torrent oyun - google haritalara yer ekleme - altyapısız internet - bedava internet - no deposit bonus forex - erkek spor ayakkabı - webturkey.net - karfiltre.com - tiktok jeton hilesi - tiktok beğeni satın al - microsoft word indir - misli indir
ReplyDeleteyoutube abone satın al
ReplyDeletetrendyol indirim kodu
cami avizesi
cami avizeleri
avize cami
no deposit bonus forex 2021
takipçi satın al
takipçi satın al
takipçi satın al
takipcialdim.com/tiktok-takipci-satin-al/
instagram beğeni satın al
instagram beğeni satın al
btcturk
tiktok izlenme satın al
sms onay
youtube izlenme satın al
no deposit bonus forex 2021
tiktok jeton hilesi
tiktok beğeni satın al
binance
takipçi satın al
uc satın al
sms onay
sms onay
tiktok takipçi satın al
tiktok beğeni satın al
twitter takipçi satın al
trend topic satın al
youtube abone satın al
instagram beğeni satın al
tiktok beğeni satın al
twitter takipçi satın al
trend topic satın al
youtube abone satın al
takipcialdim.com/instagram-begeni-satin-al/
perde modelleri
instagram takipçi satın al
instagram takipçi satın al
takipçi satın al
instagram takipçi satın al
betboo
marsbahis
sultanbet
takipçi satın al
ReplyDeleteinstagram takipçi satın al
https://www.takipcikenti.com
marsbahis
ReplyDeletebetboo
sultanbet
marsbahis
betboo
sultanbet
Thanks for the detailed article on this topic. I would like to see more such awesome articles from you. Download GBWhatsApp APK
ReplyDeleteThank you for sharing this useful information, keep up the good work! Share your thoughts on COC Mod APK too!
ReplyDeleteThank you for sharing this valuable information with us.
ReplyDeleteTamil novels pdf download
Ramanichandran novels PDF
srikala novels PDF
Mallika manivannan novels PDF
muthulakshmi raghavan novels PDF
Infaa Alocious Novels PDF
N Seethalakshmi Novels PDF
Sashi Murali Tamil Novels PDF
Oh..i didn't that making the OmniOS zone hosted on OpenIndiana Hipster is possible. Thanks for sharing this blog...I learned something new today. You made my day. fmwhatsapp
ReplyDeletetiktok jeton hilesi
ReplyDeletetiktok jeton hilesi
referans kimliği nedir
gate güvenilir mi
tiktok jeton hilesi
paribu
btcturk
bitcoin nasıl alınır
yurtdışı kargo
evden eve nakliyat
ReplyDeleteinstagram takipçi satın al
instagram takipçi satın al
instagram beğeni satın al
tiktok takipçi satın al
bitcoin nasıl alınır
plaj havlusu
toptan zeytinyağı
bardak makinası
seo fiyatları
ReplyDeletesaç ekimi
dedektör
instagram takipçi satın al
ankara evden eve nakliyat
fantezi iç giyim
sosyal medya yönetimi
mobil ödeme bozdurma
kripto para nasıl alınır
instagram beğeni satın al
ReplyDeleteyurtdışı kargo
seo fiyatları
saç ekimi
dedektör
fantazi iç giyim
sosyal medya yönetimi
farmasi üyelik
mobil ödeme bozdurma
mmorpg oyunlar
ReplyDeleteinstagram takipçi satın al
Tiktok Jeton Hilesi
TİKTOK JETON HİLESİ
Antalya Sac Ekim
referans kimliği nedir
instagram takipçi satın al
metin2 pvp serverlar
Instagram Takipçi
En son çıkan perde modelleri
ReplyDeleteSms Onay
mobil ödeme bozdurma
Nft Nasil Alinir
ANKARA EVDEN EVE NAKLİYAT
trafik sigortasi
dedektör
Web Site Kurmak
AŞK ROMANLARI
SMM PANEL
ReplyDeleteSmm panel
iş ilanları
İnstagram Takipçi Satın Al
Https://www.hirdavatciburada.com/
WWW.BEYAZESYATEKNİKSERVİSİ.COM.TR
servis
Jeton Hile
That is as a matter of fact a clean to accomplish and enlightening, containing all supporter and besides has a delightful effect occurring for the supplement period. much obliged to you for sharing it, iMyFone LockWiper
ReplyDeleteVysor pro Crack may be a fantastic programmer that enables the user to regulate your robot from your pc. Vysor Pro Crack
ReplyDelete